remotion 3.0.8 → 3.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +2 -2
- package/dist/Img.js +26 -20
- package/dist/config/index.d.ts +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/internals.d.ts +8 -6
- package/dist/internals.js +2 -0
- package/dist/validate-media-props.d.ts +2 -1
- package/dist/video/OffthreadVideo.d.ts +3 -0
- package/dist/video/OffthreadVideo.js +25 -0
- package/dist/video/OffthreadVideoForRendering.d.ts +3 -0
- package/dist/video/OffthreadVideoForRendering.js +87 -0
- package/dist/video/Video.d.ts +1 -1
- package/dist/video/VideoForRendering.d.ts +1 -1
- package/dist/video/get-current-time.d.ts +5 -0
- package/dist/video/get-current-time.js +10 -2
- package/dist/video/index.d.ts +3 -2
- package/dist/video/index.js +5 -12
- package/dist/video/props.d.ts +10 -1
- package/package.json +2 -2
- package/.turbo/turbo-lint.log +0 -11
- package/.turbo/turbo-test.log +0 -78
- package/dist/AbsoluteFill.d.ts.map +0 -1
- package/dist/AbsoluteFill.js.map +0 -1
- package/dist/Composition.d.ts.map +0 -1
- package/dist/Composition.js.map +0 -1
- package/dist/CompositionManager.d.ts.map +0 -1
- package/dist/CompositionManager.js.map +0 -1
- package/dist/IFrame.d.ts.map +0 -1
- package/dist/IFrame.js.map +0 -1
- package/dist/Img.d.ts.map +0 -1
- package/dist/Img.js.map +0 -1
- package/dist/RemotionRoot.d.ts.map +0 -1
- package/dist/RemotionRoot.js.map +0 -1
- package/dist/Still.d.ts.map +0 -1
- package/dist/Still.js.map +0 -1
- package/dist/absolute-src.d.ts.map +0 -1
- package/dist/absolute-src.js.map +0 -1
- package/dist/asset-types.d.ts.map +0 -1
- package/dist/asset-types.js.map +0 -1
- package/dist/audio/Audio.d.ts.map +0 -1
- package/dist/audio/Audio.js.map +0 -1
- package/dist/audio/AudioForDevelopment.d.ts.map +0 -1
- package/dist/audio/AudioForDevelopment.js.map +0 -1
- package/dist/audio/AudioForRendering.d.ts.map +0 -1
- package/dist/audio/AudioForRendering.js.map +0 -1
- package/dist/audio/index.d.ts.map +0 -1
- package/dist/audio/index.js.map +0 -1
- package/dist/audio/props.d.ts.map +0 -1
- package/dist/audio/props.js.map +0 -1
- package/dist/audio/shared-audio-tags.d.ts.map +0 -1
- package/dist/audio/shared-audio-tags.js.map +0 -1
- package/dist/audio/use-audio-frame.d.ts.map +0 -1
- package/dist/audio/use-audio-frame.js.map +0 -1
- package/dist/bezier.d.ts.map +0 -1
- package/dist/bezier.js.map +0 -1
- package/dist/compress-assets.d.ts.map +0 -1
- package/dist/compress-assets.js.map +0 -1
- package/dist/config/browser-executable.d.ts.map +0 -1
- package/dist/config/browser-executable.js.map +0 -1
- package/dist/config/browser.d.ts.map +0 -1
- package/dist/config/browser.js.map +0 -1
- package/dist/config/chromium-flags.d.ts.map +0 -1
- package/dist/config/chromium-flags.js.map +0 -1
- package/dist/config/codec.d.ts.map +0 -1
- package/dist/config/codec.js.map +0 -1
- package/dist/config/concurrency.d.ts.map +0 -1
- package/dist/config/concurrency.js.map +0 -1
- package/dist/config/crf.d.ts.map +0 -1
- package/dist/config/crf.js.map +0 -1
- package/dist/config/env-file.d.ts.map +0 -1
- package/dist/config/env-file.js.map +0 -1
- package/dist/config/ffmpeg-executable.d.ts.map +0 -1
- package/dist/config/ffmpeg-executable.js.map +0 -1
- package/dist/config/frame-range.d.ts.map +0 -1
- package/dist/config/frame-range.js.map +0 -1
- package/dist/config/image-format.d.ts.map +0 -1
- package/dist/config/image-format.js.map +0 -1
- package/dist/config/image-sequence.d.ts.map +0 -1
- package/dist/config/image-sequence.js.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/input-props.d.ts.map +0 -1
- package/dist/config/input-props.js.map +0 -1
- package/dist/config/log.d.ts.map +0 -1
- package/dist/config/log.js.map +0 -1
- package/dist/config/max-timeline-tracks.d.ts.map +0 -1
- package/dist/config/max-timeline-tracks.js.map +0 -1
- package/dist/config/override-webpack.d.ts.map +0 -1
- package/dist/config/override-webpack.js.map +0 -1
- package/dist/config/overwrite.d.ts.map +0 -1
- package/dist/config/overwrite.js.map +0 -1
- package/dist/config/pixel-format.d.ts.map +0 -1
- package/dist/config/pixel-format.js.map +0 -1
- package/dist/config/preview-server.d.ts.map +0 -1
- package/dist/config/preview-server.js.map +0 -1
- package/dist/config/prores-profile.d.ts.map +0 -1
- package/dist/config/prores-profile.js.map +0 -1
- package/dist/config/quality.d.ts.map +0 -1
- package/dist/config/quality.js.map +0 -1
- package/dist/config/scale.d.ts.map +0 -1
- package/dist/config/scale.js.map +0 -1
- package/dist/config/still-frame.d.ts.map +0 -1
- package/dist/config/still-frame.js.map +0 -1
- package/dist/config/timeout.d.ts.map +0 -1
- package/dist/config/timeout.js.map +0 -1
- package/dist/config/webpack-caching.d.ts.map +0 -1
- package/dist/config/webpack-caching.js.map +0 -1
- package/dist/default-css.d.ts.map +0 -1
- package/dist/default-css.js.map +0 -1
- package/dist/delay-render.d.ts.map +0 -1
- package/dist/delay-render.js.map +0 -1
- package/dist/easing.d.ts.map +0 -1
- package/dist/easing.js.map +0 -1
- package/dist/feature-flags.d.ts.map +0 -1
- package/dist/feature-flags.js.map +0 -1
- package/dist/freeze.d.ts.map +0 -1
- package/dist/freeze.js.map +0 -1
- package/dist/get-asset-file-name.d.ts.map +0 -1
- package/dist/get-asset-file-name.js.map +0 -1
- package/dist/get-environment.d.ts.map +0 -1
- package/dist/get-environment.js.map +0 -1
- package/dist/get-preview-dom-element.d.ts.map +0 -1
- package/dist/get-preview-dom-element.js.map +0 -1
- package/dist/get-timeline-clip-name.d.ts.map +0 -1
- package/dist/get-timeline-clip-name.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/initial-frame.d.ts.map +0 -1
- package/dist/initial-frame.js.map +0 -1
- package/dist/internals.d.ts.map +0 -1
- package/dist/internals.js.map +0 -1
- package/dist/interpolate.d.ts.map +0 -1
- package/dist/interpolate.js.map +0 -1
- package/dist/interpolateColors.d.ts.map +0 -1
- package/dist/interpolateColors.js.map +0 -1
- package/dist/is-approximately-the-same.d.ts.map +0 -1
- package/dist/is-approximately-the-same.js.map +0 -1
- package/dist/is-audio-codec.d.ts.map +0 -1
- package/dist/is-audio-codec.js.map +0 -1
- package/dist/loop/index.d.ts.map +0 -1
- package/dist/loop/index.js.map +0 -1
- package/dist/multiple-versions-warning.d.ts.map +0 -1
- package/dist/multiple-versions-warning.js.map +0 -1
- package/dist/nonce.d.ts.map +0 -1
- package/dist/nonce.js.map +0 -1
- package/dist/perf/index.d.ts.map +0 -1
- package/dist/perf/index.js.map +0 -1
- package/dist/play-and-handle-not-allowed-error.d.ts.map +0 -1
- package/dist/play-and-handle-not-allowed-error.js.map +0 -1
- package/dist/random.d.ts.map +0 -1
- package/dist/random.js.map +0 -1
- package/dist/register-root.d.ts.map +0 -1
- package/dist/register-root.js.map +0 -1
- package/dist/sequencing/index.d.ts.map +0 -1
- package/dist/sequencing/index.js.map +0 -1
- package/dist/series/flatten-children.d.ts.map +0 -1
- package/dist/series/flatten-children.js.map +0 -1
- package/dist/series/index.d.ts.map +0 -1
- package/dist/series/index.js.map +0 -1
- package/dist/setup-env-variables.d.ts.map +0 -1
- package/dist/setup-env-variables.js.map +0 -1
- package/dist/spring/index.d.ts.map +0 -1
- package/dist/spring/index.js.map +0 -1
- package/dist/spring/measure-spring.d.ts.map +0 -1
- package/dist/spring/measure-spring.js.map +0 -1
- package/dist/spring/spring-utils.d.ts.map +0 -1
- package/dist/spring/spring-utils.js.map +0 -1
- package/dist/static-file.d.ts.map +0 -1
- package/dist/static-file.js.map +0 -1
- package/dist/timeline-inout-position-state.d.ts.map +0 -1
- package/dist/timeline-inout-position-state.js.map +0 -1
- package/dist/timeline-position-state.d.ts.map +0 -1
- package/dist/timeline-position-state.js.map +0 -1
- package/dist/timeout.d.ts.map +0 -1
- package/dist/timeout.js.map +0 -1
- package/dist/truthy.d.ts.map +0 -1
- package/dist/truthy.js.map +0 -1
- package/dist/use-frame.d.ts.map +0 -1
- package/dist/use-frame.js.map +0 -1
- package/dist/use-lazy-component.d.ts.map +0 -1
- package/dist/use-lazy-component.js.map +0 -1
- package/dist/use-media-in-timeline.d.ts.map +0 -1
- package/dist/use-media-in-timeline.js.map +0 -1
- package/dist/use-media-playback.d.ts.map +0 -1
- package/dist/use-media-playback.js.map +0 -1
- package/dist/use-media-tag-volume.d.ts.map +0 -1
- package/dist/use-media-tag-volume.js.map +0 -1
- package/dist/use-sync-volume-with-media-tag.d.ts.map +0 -1
- package/dist/use-sync-volume-with-media-tag.js.map +0 -1
- package/dist/use-unsafe-video-config.d.ts.map +0 -1
- package/dist/use-unsafe-video-config.js.map +0 -1
- package/dist/use-video-config.d.ts.map +0 -1
- package/dist/use-video-config.js.map +0 -1
- package/dist/use-video.d.ts.map +0 -1
- package/dist/use-video.js.map +0 -1
- package/dist/validate-media-props.d.ts.map +0 -1
- package/dist/validate-media-props.js.map +0 -1
- package/dist/validate-start-from-props.d.ts.map +0 -1
- package/dist/validate-start-from-props.js.map +0 -1
- package/dist/validation/validate-composition-id.d.ts.map +0 -1
- package/dist/validation/validate-composition-id.js.map +0 -1
- package/dist/validation/validate-dimensions.d.ts.map +0 -1
- package/dist/validation/validate-dimensions.js.map +0 -1
- package/dist/validation/validate-duration-in-frames.d.ts.map +0 -1
- package/dist/validation/validate-duration-in-frames.js.map +0 -1
- package/dist/validation/validate-folder-name.d.ts.map +0 -1
- package/dist/validation/validate-folder-name.js.map +0 -1
- package/dist/validation/validate-fps.d.ts.map +0 -1
- package/dist/validation/validate-fps.js.map +0 -1
- package/dist/validation/validate-frame.d.ts.map +0 -1
- package/dist/validation/validate-frame.js.map +0 -1
- package/dist/validation/validate-image-format.d.ts.map +0 -1
- package/dist/validation/validate-image-format.js.map +0 -1
- package/dist/validation/validate-opengl-renderer.d.ts.map +0 -1
- package/dist/validation/validate-opengl-renderer.js.map +0 -1
- package/dist/validation/validate-quality.d.ts.map +0 -1
- package/dist/validation/validate-quality.js.map +0 -1
- package/dist/video/Video.d.ts.map +0 -1
- package/dist/video/Video.js.map +0 -1
- package/dist/video/VideoForDevelopment.d.ts.map +0 -1
- package/dist/video/VideoForDevelopment.js.map +0 -1
- package/dist/video/VideoForRendering.d.ts.map +0 -1
- package/dist/video/VideoForRendering.js.map +0 -1
- package/dist/video/get-current-time.d.ts.map +0 -1
- package/dist/video/get-current-time.js.map +0 -1
- package/dist/video/index.d.ts.map +0 -1
- package/dist/video/index.js.map +0 -1
- package/dist/video/props.d.ts.map +0 -1
- package/dist/video/props.js.map +0 -1
- package/dist/video-config.d.ts.map +0 -1
- package/dist/video-config.js.map +0 -1
- package/dist/volume-position-state.d.ts.map +0 -1
- package/dist/volume-position-state.js.map +0 -1
- package/dist/volume-prop.d.ts.map +0 -1
- package/dist/volume-prop.js.map +0 -1
- package/dist/warn-about-non-seekable-media.d.ts.map +0 -1
- package/dist/warn-about-non-seekable-media.js.map +0 -1
- package/dist/wrap-remotion-context.d.ts.map +0 -1
- package/dist/wrap-remotion-context.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
[32mremotion:build: [0mcache hit, replaying output [
|
|
1
|
+
[32mremotion:build: [0mcache hit, replaying output [2m04bd579a81ce84e9[0m
|
|
2
2
|
[32mremotion:build: [0m
|
|
3
|
-
[32mremotion:build: [0m> remotion@3.0.
|
|
3
|
+
[32mremotion:build: [0m> remotion@3.0.10 build /Users/jonathanburger/remotion/packages/core
|
|
4
4
|
[32mremotion:build: [0m> tsc -d
|
|
5
5
|
[32mremotion:build: [0m
|
package/dist/Img.js
CHANGED
|
@@ -4,33 +4,39 @@ exports.Img = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const delay_render_1 = require("./delay-render");
|
|
7
|
-
const ImgRefForwarding = ({
|
|
8
|
-
const
|
|
9
|
-
(0, react_1.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
(0, delay_render_1.continueRender)(handle);
|
|
13
|
-
}
|
|
14
|
-
}, [handle, ref]);
|
|
15
|
-
const didLoad = (0, react_1.useCallback)((e) => {
|
|
16
|
-
(0, delay_render_1.continueRender)(handle);
|
|
17
|
-
onLoad === null || onLoad === void 0 ? void 0 : onLoad(e);
|
|
18
|
-
}, [handle, onLoad]);
|
|
7
|
+
const ImgRefForwarding = ({ onError, ...props }, ref) => {
|
|
8
|
+
const imageRef = (0, react_1.useRef)(null);
|
|
9
|
+
(0, react_1.useImperativeHandle)(ref, () => {
|
|
10
|
+
return imageRef.current;
|
|
11
|
+
});
|
|
19
12
|
const didGetError = (0, react_1.useCallback)((e) => {
|
|
20
|
-
|
|
13
|
+
var _a;
|
|
21
14
|
if (onError) {
|
|
22
15
|
onError(e);
|
|
23
16
|
}
|
|
24
17
|
else {
|
|
25
|
-
console.error('Error loading image:', e, 'Handle the event using the onError() prop to make this message disappear.');
|
|
18
|
+
console.error('Error loading image with src:', (_a = imageRef.current) === null || _a === void 0 ? void 0 : _a.src, e, 'Handle the event using the onError() prop to make this message disappear.');
|
|
19
|
+
}
|
|
20
|
+
}, [onError]);
|
|
21
|
+
// If image source switches, make new handle
|
|
22
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
23
|
+
const newHandle = (0, delay_render_1.delayRender)('Loading <Img> with src=' + props.src);
|
|
24
|
+
const { current } = imageRef;
|
|
25
|
+
const didLoad = () => {
|
|
26
|
+
(0, delay_render_1.continueRender)(newHandle);
|
|
27
|
+
};
|
|
28
|
+
if (current === null || current === void 0 ? void 0 : current.complete) {
|
|
29
|
+
(0, delay_render_1.continueRender)(newHandle);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
current === null || current === void 0 ? void 0 : current.addEventListener('load', didLoad, { once: true });
|
|
26
33
|
}
|
|
27
|
-
|
|
28
|
-
// If tag gets unmounted, clear pending handles because image is not going to load
|
|
29
|
-
(0, react_1.useEffect)(() => {
|
|
34
|
+
// If tag gets unmounted, clear pending handles because image is not going to load
|
|
30
35
|
return () => {
|
|
31
|
-
|
|
36
|
+
current === null || current === void 0 ? void 0 : current.removeEventListener('load', didLoad);
|
|
37
|
+
(0, delay_render_1.continueRender)(newHandle);
|
|
32
38
|
};
|
|
33
|
-
}, [
|
|
34
|
-
return (0, jsx_runtime_1.jsx)("img", { ...props, ref:
|
|
39
|
+
}, [props.src]);
|
|
40
|
+
return (0, jsx_runtime_1.jsx)("img", { ...props, ref: imageRef, onError: didGetError }, void 0);
|
|
35
41
|
};
|
|
36
42
|
exports.Img = (0, react_1.forwardRef)(ImgRefForwarding);
|
package/dist/config/index.d.ts
CHANGED
|
@@ -99,7 +99,7 @@ export declare const Config: {
|
|
|
99
99
|
/** Decide in which image format to render. Can be either 'jpeg' or 'png'.
|
|
100
100
|
* PNG is slower, but supports transparency.
|
|
101
101
|
*/
|
|
102
|
-
readonly setImageFormat: (format: "
|
|
102
|
+
readonly setImageFormat: (format: "none" | "png" | "jpeg") => void;
|
|
103
103
|
/**
|
|
104
104
|
* Render only a subset of a video.
|
|
105
105
|
* Pass in a tuple [20, 30] to only render frames 20-30 into a video.
|
|
@@ -156,7 +156,7 @@ export declare const Config: {
|
|
|
156
156
|
* Possible values: 4444-xq, 4444, hq, standard, light, proxy. Default: 'hq'
|
|
157
157
|
* See https://avpres.net/FFmpeg/im_ProRes.html for meaning of possible values.
|
|
158
158
|
*/
|
|
159
|
-
readonly setProResProfile: (profile: "4444-xq" | "4444" | "hq" | "standard" | "
|
|
159
|
+
readonly setProResProfile: (profile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined) => void;
|
|
160
160
|
};
|
|
161
161
|
};
|
|
162
162
|
export type { PixelFormat, Concurrency, WebpackConfiguration, WebpackOverrideFn, BrowserExecutable, FfmpegExecutable, ImageFormat, Codec, Browser, FrameRange, LogLevel, StillImageFormat, };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,13 +11,14 @@ declare global {
|
|
|
11
11
|
remotion_cwd: string;
|
|
12
12
|
remotion_setFrame: (frame: number) => void;
|
|
13
13
|
remotion_initialFrame: number;
|
|
14
|
+
remotion_proxyPort: number;
|
|
14
15
|
remotion_puppeteerTimeout: number;
|
|
15
16
|
remotion_inputProps: string;
|
|
16
17
|
remotion_envVariables: string;
|
|
17
18
|
remotion_collectAssets: () => TAsset[];
|
|
18
19
|
remotion_isPlayer: boolean;
|
|
19
20
|
remotion_imported: boolean;
|
|
20
|
-
siteVersion: '
|
|
21
|
+
siteVersion: '3';
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
export declare type BundleState = {
|
|
@@ -51,7 +52,7 @@ export * from './spring';
|
|
|
51
52
|
export { staticFile } from './static-file';
|
|
52
53
|
export * from './Still';
|
|
53
54
|
export type { PlayableMediaTag } from './timeline-position-state';
|
|
54
|
-
export
|
|
55
|
+
export { useCurrentFrame } from './use-frame';
|
|
55
56
|
export * from './use-video-config';
|
|
56
57
|
export * from './video';
|
|
57
58
|
export * from './video-config';
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.staticFile = exports.Series = exports.Sequence = exports.registerRoot = exports.Loop = exports.interpolateColors = exports.getInputProps = void 0;
|
|
13
|
+
exports.useCurrentFrame = exports.staticFile = exports.Series = exports.Sequence = exports.registerRoot = exports.Loop = exports.interpolateColors = exports.getInputProps = void 0;
|
|
14
14
|
require("./asset-types");
|
|
15
15
|
const multiple_versions_warning_1 = require("./multiple-versions-warning");
|
|
16
16
|
(0, multiple_versions_warning_1.checkMultipleRemotionVersions)();
|
|
@@ -42,7 +42,8 @@ __exportStar(require("./spring"), exports);
|
|
|
42
42
|
var static_file_1 = require("./static-file");
|
|
43
43
|
Object.defineProperty(exports, "staticFile", { enumerable: true, get: function () { return static_file_1.staticFile; } });
|
|
44
44
|
__exportStar(require("./Still"), exports);
|
|
45
|
-
|
|
45
|
+
var use_frame_1 = require("./use-frame");
|
|
46
|
+
Object.defineProperty(exports, "useCurrentFrame", { enumerable: true, get: function () { return use_frame_1.useCurrentFrame; } });
|
|
46
47
|
__exportStar(require("./use-video-config"), exports);
|
|
47
48
|
__exportStar(require("./video"), exports);
|
|
48
49
|
__exportStar(require("./video-config"), exports);
|
package/dist/internals.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { CompProps } from './Composition';
|
|
2
3
|
import { CompositionManagerContext, RenderAssetInfo, TAsset, TCompMetadata, TComposition, TSequence } from './CompositionManager';
|
|
3
4
|
import * as AssetCompression from './compress-assets';
|
|
@@ -75,11 +76,11 @@ export declare const Internals: {
|
|
|
75
76
|
getDefaultCrfForCodec: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv") => number;
|
|
76
77
|
getActualCrf: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv") => number;
|
|
77
78
|
setFrameRangeFromCli: (newFrameRange: string | number) => void;
|
|
78
|
-
getUserPreferredImageFormat: () => "
|
|
79
|
-
validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", imageFormat: "
|
|
79
|
+
getUserPreferredImageFormat: () => "none" | "png" | "jpeg" | undefined;
|
|
80
|
+
validateSelectedPixelFormatAndImageFormatCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", imageFormat: "none" | "png" | "jpeg") => "none" | "valid";
|
|
80
81
|
validateSelectedPixelFormatAndCodecCombination: (pixelFormat: "yuv420p" | "yuva420p" | "yuv422p" | "yuv444p" | "yuv420p10le" | "yuv422p10le" | "yuv444p10le" | "yuva444p10le", codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv") => void;
|
|
81
82
|
validateFrameRange: (frameRange: import("./config/frame-range").FrameRange | null) => void;
|
|
82
|
-
validateNonNullImageFormat: (imageFormat: "
|
|
83
|
+
validateNonNullImageFormat: (imageFormat: "none" | "png" | "jpeg") => void;
|
|
83
84
|
getWebpackCaching: () => boolean;
|
|
84
85
|
useLazyComponent: <T>(compProps: CompProps<T>) => import("react").ExoticComponent<(import("react").PropsWithoutRef<T> & import("react").RefAttributes<import("react").Component<T, any, any>>) | import("react").PropsWithRef<T>> & {
|
|
85
86
|
readonly _result: import("react").ComponentType<T>;
|
|
@@ -101,9 +102,9 @@ export declare const Internals: {
|
|
|
101
102
|
validateFps: (fps: number, location: string) => void;
|
|
102
103
|
validateDimension: (amount: number, nameOfProp: string, location: string) => void;
|
|
103
104
|
getRemotionEnvironment: () => RemotionEnvironment;
|
|
104
|
-
getProResProfile: () => "4444-xq" | "4444" | "hq" | "standard" | "
|
|
105
|
-
setProResProfile: (profile: "4444-xq" | "4444" | "hq" | "standard" | "
|
|
106
|
-
validateSelectedCodecAndProResCombination: (actualCodec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv", actualProResProfile: "4444-xq" | "4444" | "hq" | "standard" | "
|
|
105
|
+
getProResProfile: () => "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined;
|
|
106
|
+
setProResProfile: (profile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined) => void;
|
|
107
|
+
validateSelectedCodecAndProResCombination: (actualCodec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv", actualProResProfile: "light" | "4444-xq" | "4444" | "hq" | "standard" | "proxy" | undefined) => void;
|
|
107
108
|
getMaxTimelineTracks: () => number;
|
|
108
109
|
SharedAudioContext: import("react").Context<{
|
|
109
110
|
registerAudio: (aud: import("./audio").RemotionAudioProps) => {
|
|
@@ -144,5 +145,6 @@ export declare const Internals: {
|
|
|
144
145
|
getCompositions: () => TCompMetadata[];
|
|
145
146
|
}>;
|
|
146
147
|
DELAY_RENDER_CALLSTACK_TOKEN: string;
|
|
148
|
+
useAbsoluteCurrentFrame: () => number;
|
|
147
149
|
};
|
|
148
150
|
export type { TComposition, Timeline, TCompMetadata, TSequence, WebpackOverrideFn, TAsset, RenderAssetInfo, TimelineContextValue, SetTimelineContextValue, TimelineInOutContextValue, SetTimelineInOutContextValue, CompProps, CompositionManagerContext, MediaVolumeContextValue, SetMediaVolumeContextValue, RemotionEnvironment, ProResProfile, OpenGlRenderer, };
|
package/dist/internals.js
CHANGED
|
@@ -61,6 +61,7 @@ const TimelineInOutPosition = __importStar(require("./timeline-inout-position-st
|
|
|
61
61
|
const TimelinePosition = __importStar(require("./timeline-position-state"));
|
|
62
62
|
const timeout_2 = require("./timeout");
|
|
63
63
|
const truthy_1 = require("./truthy");
|
|
64
|
+
const use_frame_1 = require("./use-frame");
|
|
64
65
|
const use_lazy_component_1 = require("./use-lazy-component");
|
|
65
66
|
const use_unsafe_video_config_1 = require("./use-unsafe-video-config");
|
|
66
67
|
const use_video_1 = require("./use-video");
|
|
@@ -161,4 +162,5 @@ exports.Internals = {
|
|
|
161
162
|
getPreviewDomElement: get_preview_dom_element_1.getPreviewDomElement,
|
|
162
163
|
compositionsRef: CompositionManager_1.compositionsRef,
|
|
163
164
|
DELAY_RENDER_CALLSTACK_TOKEN: delay_render_1.DELAY_RENDER_CALLSTACK_TOKEN,
|
|
165
|
+
useAbsoluteCurrentFrame: use_frame_1.useAbsoluteCurrentFrame,
|
|
164
166
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { RemotionAudioProps } from './audio';
|
|
2
2
|
import { RemotionVideoProps } from './video';
|
|
3
|
-
|
|
3
|
+
import { OffthreadVideoProps } from './video/props';
|
|
4
|
+
export declare const validateMediaProps: (props: RemotionVideoProps | RemotionAudioProps | OffthreadVideoProps, component: 'Video' | 'Audio') => void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OffthreadVideo = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const get_environment_1 = require("../get-environment");
|
|
6
|
+
const sequencing_1 = require("../sequencing");
|
|
7
|
+
const validate_media_props_1 = require("../validate-media-props");
|
|
8
|
+
const validate_start_from_props_1 = require("../validate-start-from-props");
|
|
9
|
+
const OffthreadVideoForRendering_1 = require("./OffthreadVideoForRendering");
|
|
10
|
+
const VideoForDevelopment_1 = require("./VideoForDevelopment");
|
|
11
|
+
const OffthreadVideo = (props) => {
|
|
12
|
+
const { startFrom, endAt, ...otherProps } = props;
|
|
13
|
+
if (typeof startFrom !== 'undefined' || typeof endAt !== 'undefined') {
|
|
14
|
+
(0, validate_start_from_props_1.validateStartFromProps)(startFrom, endAt);
|
|
15
|
+
const startFromFrameNo = startFrom !== null && startFrom !== void 0 ? startFrom : 0;
|
|
16
|
+
const endAtFrameNo = endAt !== null && endAt !== void 0 ? endAt : Infinity;
|
|
17
|
+
return ((0, jsx_runtime_1.jsx)(sequencing_1.Sequence, { layout: "none", from: 0 - startFromFrameNo, showInTimeline: false, durationInFrames: endAtFrameNo, children: (0, jsx_runtime_1.jsx)(exports.OffthreadVideo, { ...otherProps }, void 0) }, void 0));
|
|
18
|
+
}
|
|
19
|
+
(0, validate_media_props_1.validateMediaProps)(props, 'Video');
|
|
20
|
+
if ((0, get_environment_1.getRemotionEnvironment)() === 'rendering') {
|
|
21
|
+
return (0, jsx_runtime_1.jsx)(OffthreadVideoForRendering_1.OffthreadVideoForRendering, { ...otherProps }, void 0);
|
|
22
|
+
}
|
|
23
|
+
return (0, jsx_runtime_1.jsx)(VideoForDevelopment_1.VideoForDevelopment, { ...otherProps }, void 0);
|
|
24
|
+
};
|
|
25
|
+
exports.OffthreadVideo = OffthreadVideo;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OffthreadVideoForRendering = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const absolute_src_1 = require("../absolute-src");
|
|
7
|
+
const use_audio_frame_1 = require("../audio/use-audio-frame");
|
|
8
|
+
const CompositionManager_1 = require("../CompositionManager");
|
|
9
|
+
const Img_1 = require("../Img");
|
|
10
|
+
const random_1 = require("../random");
|
|
11
|
+
const sequencing_1 = require("../sequencing");
|
|
12
|
+
const use_frame_1 = require("../use-frame");
|
|
13
|
+
const use_unsafe_video_config_1 = require("../use-unsafe-video-config");
|
|
14
|
+
const volume_prop_1 = require("../volume-prop");
|
|
15
|
+
const get_current_time_1 = require("./get-current-time");
|
|
16
|
+
const OffthreadVideoForRendering = ({ onError, volume: volumeProp, playbackRate, src, muted, ...props }) => {
|
|
17
|
+
const absoluteFrame = (0, use_frame_1.useAbsoluteCurrentFrame)();
|
|
18
|
+
const frame = (0, use_frame_1.useCurrentFrame)();
|
|
19
|
+
const volumePropsFrame = (0, use_audio_frame_1.useFrameForVolumeProp)();
|
|
20
|
+
const videoConfig = (0, use_unsafe_video_config_1.useUnsafeVideoConfig)();
|
|
21
|
+
const sequenceContext = (0, react_1.useContext)(sequencing_1.SequenceContext);
|
|
22
|
+
const mediaStartsAt = (0, use_audio_frame_1.useMediaStartsAt)();
|
|
23
|
+
const { registerAsset, unregisterAsset } = (0, react_1.useContext)(CompositionManager_1.CompositionManager);
|
|
24
|
+
if (!src) {
|
|
25
|
+
throw new TypeError('No `src` was passed to <OffthreadVideo>.');
|
|
26
|
+
}
|
|
27
|
+
// Generate a string that's as unique as possible for this asset
|
|
28
|
+
// but at the same time the same on all threads
|
|
29
|
+
const id = (0, react_1.useMemo)(() => `video-${(0, random_1.random)(src !== null && src !== void 0 ? src : '')}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom}-${sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames}-muted:${muted}`, [
|
|
30
|
+
src,
|
|
31
|
+
muted,
|
|
32
|
+
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom,
|
|
33
|
+
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom,
|
|
34
|
+
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames,
|
|
35
|
+
]);
|
|
36
|
+
if (!videoConfig) {
|
|
37
|
+
throw new Error('No video config found');
|
|
38
|
+
}
|
|
39
|
+
const volume = (0, volume_prop_1.evaluateVolume)({
|
|
40
|
+
volume: volumeProp,
|
|
41
|
+
frame: volumePropsFrame,
|
|
42
|
+
mediaVolume: 1,
|
|
43
|
+
});
|
|
44
|
+
(0, react_1.useEffect)(() => {
|
|
45
|
+
if (!src) {
|
|
46
|
+
throw new Error('No src passed');
|
|
47
|
+
}
|
|
48
|
+
if (muted) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
registerAsset({
|
|
52
|
+
type: 'video',
|
|
53
|
+
src: (0, absolute_src_1.getAbsoluteSrc)(src),
|
|
54
|
+
id,
|
|
55
|
+
frame: absoluteFrame,
|
|
56
|
+
volume,
|
|
57
|
+
mediaFrame: frame,
|
|
58
|
+
playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1,
|
|
59
|
+
});
|
|
60
|
+
return () => unregisterAsset(id);
|
|
61
|
+
}, [
|
|
62
|
+
muted,
|
|
63
|
+
src,
|
|
64
|
+
registerAsset,
|
|
65
|
+
id,
|
|
66
|
+
unregisterAsset,
|
|
67
|
+
volume,
|
|
68
|
+
frame,
|
|
69
|
+
absoluteFrame,
|
|
70
|
+
playbackRate,
|
|
71
|
+
]);
|
|
72
|
+
const currentTime = (0, react_1.useMemo)(() => {
|
|
73
|
+
return ((0, get_current_time_1.getExpectedMediaFrameUncorrected)({
|
|
74
|
+
frame,
|
|
75
|
+
playbackRate: playbackRate || 1,
|
|
76
|
+
startFrom: -mediaStartsAt,
|
|
77
|
+
}) / videoConfig.fps);
|
|
78
|
+
}, [frame, mediaStartsAt, playbackRate, videoConfig.fps]);
|
|
79
|
+
const actualSrc = (0, react_1.useMemo)(() => {
|
|
80
|
+
return `http://localhost:${window.remotion_proxyPort}/proxy?src=${encodeURIComponent((0, absolute_src_1.getAbsoluteSrc)(src))}&time=${encodeURIComponent(currentTime)}`;
|
|
81
|
+
}, [currentTime, src]);
|
|
82
|
+
const onErr = (0, react_1.useCallback)((e) => {
|
|
83
|
+
onError === null || onError === void 0 ? void 0 : onError(e);
|
|
84
|
+
}, [onError]);
|
|
85
|
+
return (0, jsx_runtime_1.jsx)(Img_1.Img, { src: actualSrc, ...props, onError: onErr }, void 0);
|
|
86
|
+
};
|
|
87
|
+
exports.OffthreadVideoForRendering = OffthreadVideoForRendering;
|
package/dist/video/Video.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ import { RemotionMainVideoProps } from './props';
|
|
|
3
3
|
export declare const Video: React.ForwardRefExoticComponent<Pick<Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "onEnded" | "autoPlay" | "controls" | "loop"> & {
|
|
4
4
|
volume?: import("../volume-prop").VolumeProp | undefined;
|
|
5
5
|
playbackRate?: number | undefined;
|
|
6
|
-
} & RemotionMainVideoProps, "
|
|
6
|
+
} & RemotionMainVideoProps, "style" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "height" | "width" | "src" | "volume" | "playbackRate" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "playsInline" | "preload" | "key" | "poster" | "disablePictureInPicture" | "disableRemotePlayback" | keyof RemotionMainVideoProps> & React.RefAttributes<HTMLVideoElement>>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RemotionVideoProps } from './props';
|
|
3
|
-
export declare const VideoForRendering: React.ForwardRefExoticComponent<Pick<RemotionVideoProps, "
|
|
3
|
+
export declare const VideoForRendering: React.ForwardRefExoticComponent<Pick<RemotionVideoProps, "style" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "height" | "width" | "src" | "volume" | "playbackRate" | "controlsList" | "crossOrigin" | "mediaGroup" | "muted" | "playsInline" | "preload" | "key" | "poster" | "disablePictureInPicture" | "disableRemotePlayback"> & React.RefAttributes<HTMLVideoElement>>;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export declare const getExpectedMediaFrameUncorrected: ({ frame, playbackRate, startFrom, }: {
|
|
2
|
+
frame: number;
|
|
3
|
+
playbackRate: number;
|
|
4
|
+
startFrom: number;
|
|
5
|
+
}) => number;
|
|
1
6
|
export declare const getMediaTime: ({ fps, frame, src, playbackRate, startFrom, }: {
|
|
2
7
|
fps: number;
|
|
3
8
|
frame: number;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Calculate the `.currentTime` of a video or audio element
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.getMediaTime = void 0;
|
|
4
|
+
exports.getMediaTime = exports.getExpectedMediaFrameUncorrected = void 0;
|
|
5
5
|
const interpolate_1 = require("../interpolate");
|
|
6
|
+
const getExpectedMediaFrameUncorrected = ({ frame, playbackRate, startFrom, }) => {
|
|
7
|
+
return (0, interpolate_1.interpolate)(frame, [-1, startFrom, startFrom + 1], [-1, startFrom, startFrom + playbackRate]);
|
|
8
|
+
};
|
|
9
|
+
exports.getExpectedMediaFrameUncorrected = getExpectedMediaFrameUncorrected;
|
|
6
10
|
const getMediaTime = ({ fps, frame, src, playbackRate, startFrom, }) => {
|
|
7
|
-
const expectedFrame = (0,
|
|
11
|
+
const expectedFrame = (0, exports.getExpectedMediaFrameUncorrected)({
|
|
12
|
+
frame,
|
|
13
|
+
playbackRate,
|
|
14
|
+
startFrom,
|
|
15
|
+
});
|
|
8
16
|
if (src.endsWith('mp4')) {
|
|
9
17
|
// In Chrome, for MP4s, if 30fps, the first frame is still displayed at 0.033333
|
|
10
18
|
// even though after that it increases by 0.033333333 each.
|
package/dist/video/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { OffthreadVideo } from './OffthreadVideo';
|
|
2
|
+
export { OffthreadVideoProps as RemotionOffthreadVideoProps, RemotionMainVideoProps, RemotionVideoProps, } from './props';
|
|
3
|
+
export { Video } from './Video';
|
package/dist/video/index.js
CHANGED
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
exports.Video = exports.OffthreadVideo = void 0;
|
|
4
|
+
var OffthreadVideo_1 = require("./OffthreadVideo");
|
|
5
|
+
Object.defineProperty(exports, "OffthreadVideo", { enumerable: true, get: function () { return OffthreadVideo_1.OffthreadVideo; } });
|
|
6
|
+
var Video_1 = require("./Video");
|
|
7
|
+
Object.defineProperty(exports, "Video", { enumerable: true, get: function () { return Video_1.Video; } });
|
package/dist/video/props.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { VolumeProp } from '../volume-prop';
|
|
3
3
|
export declare type RemotionMainVideoProps = {
|
|
4
4
|
startFrom?: number;
|
|
@@ -8,3 +8,12 @@ export declare type RemotionVideoProps = Omit<React.DetailedHTMLProps<React.Vide
|
|
|
8
8
|
volume?: VolumeProp;
|
|
9
9
|
playbackRate?: number;
|
|
10
10
|
};
|
|
11
|
+
export declare type OffthreadVideoProps = {
|
|
12
|
+
src: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
style?: React.CSSProperties;
|
|
15
|
+
volume?: VolumeProp;
|
|
16
|
+
playbackRate?: number;
|
|
17
|
+
muted?: boolean;
|
|
18
|
+
onError?: React.ReactEventHandler<HTMLVideoElement | HTMLImageElement>;
|
|
19
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remotion",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.11",
|
|
4
4
|
"description": "Render videos in React",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "7bdd2de3305f669cefecfdbda7f555df1480d9c9"
|
|
59
59
|
}
|
package/.turbo/turbo-lint.log
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
[33mremotion:lint: [0mcache hit, replaying output [2mcfd1b8e3d4bfaf71[0m
|
|
2
|
-
[33mremotion:lint: [0m
|
|
3
|
-
[33mremotion:lint: [0m> remotion@2.6.15 lint /Users/jonathanburger/remotion/packages/core
|
|
4
|
-
[33mremotion:lint: [0m> eslint src --ext ts,tsx
|
|
5
|
-
[33mremotion:lint: [0m
|
|
6
|
-
[33mremotion:lint: [0m
|
|
7
|
-
[33mremotion:lint: [0m/Users/jonathanburger/remotion/packages/core/src/use-lazy-component.ts
|
|
8
|
-
[33mremotion:lint: [0m 9:50 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
|
|
9
|
-
[33mremotion:lint: [0m
|
|
10
|
-
[33mremotion:lint: [0m✖ 1 problem (0 errors, 1 warning)
|
|
11
|
-
[33mremotion:lint: [0m
|
package/.turbo/turbo-test.log
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
[34mremotion:test: [0mcache hit, replaying output [2md00af95c326f9762[0m
|
|
2
|
-
[34mremotion:test: [0m
|
|
3
|
-
[34mremotion:test: [0m> remotion@2.6.15 test /Users/jonathanburger/remotion/packages/core
|
|
4
|
-
[34mremotion:test: [0m> jest --coverage && node generate-badges.js
|
|
5
|
-
[34mremotion:test: [0m
|
|
6
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
7
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
8
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
9
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
10
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
11
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
12
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
13
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
14
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
15
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
16
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
17
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
18
|
-
[34mremotion:test: [0mPASS src/test/crf.test.ts (22.562 s)
|
|
19
|
-
[34mremotion:test: [0mPASS src/test/easing.test.ts (23.331 s)
|
|
20
|
-
[34mremotion:test: [0mPASS src/test/interpolate.test.ts (23.825 s)
|
|
21
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
22
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
23
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
24
|
-
[34mremotion:test: [0mPASS src/test/volume-prop.test.ts
|
|
25
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
26
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
27
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
28
|
-
[34mremotion:test: [0mPASS src/test/interpolateColors.test.ts
|
|
29
|
-
[34mremotion:test: [0mPASS src/test/pixel-format.test.ts
|
|
30
|
-
[34mremotion:test: [0mBrowserslist: caniuse-lite is outdated. Please run:
|
|
31
|
-
[34mremotion:test: [0m npx browserslist@latest --update-db
|
|
32
|
-
[34mremotion:test: [0m Why you should do it regularly: https://github.com/browserslist/browserslist#browsers-data-updating
|
|
33
|
-
[34mremotion:test: [0mPASS src/test/nested-sequences.test.tsx (30.022 s)
|
|
34
|
-
[34mremotion:test: [0mPASS src/test/media-validation.test.tsx
|
|
35
|
-
[34mremotion:test: [0mPASS src/test/image-format.test.ts
|
|
36
|
-
[34mremotion:test: [0mPASS src/test/random.test.ts
|
|
37
|
-
[34mremotion:test: [0mPASS src/test/codec.test.ts
|
|
38
|
-
[34mremotion:test: [0mPASS src/test/get-current-time.test.ts
|
|
39
|
-
[34mremotion:test: [0mPASS src/test/sequence-validation.test.tsx
|
|
40
|
-
[34mremotion:test: [0mPASS src/test/range.test.tsx (13.571 s)
|
|
41
|
-
[34mremotion:test: [0mPASS src/test/audio-for-rendering.test.tsx (11.012 s)
|
|
42
|
-
[34mremotion:test: [0mPASS src/test/use-audio-frame.test.tsx
|
|
43
|
-
[34mremotion:test: [0mPASS src/test/validate-start-from-props.test.ts
|
|
44
|
-
[34mremotion:test: [0mPASS src/test/composition-rules.test.tsx (5.238 s)
|
|
45
|
-
[34mremotion:test: [0mPASS src/test/freeze.test.tsx (8.949 s)
|
|
46
|
-
[34mremotion:test: [0mPASS src/test/loop-validation.test.tsx (42.302 s)
|
|
47
|
-
[34mremotion:test: [0mPASS src/test/series.test.tsx (42.599 s)
|
|
48
|
-
[34mremotion:test: [0mPASS src/test/composition-validation.test.tsx (43.496 s)
|
|
49
|
-
[34mremotion:test: [0mPASS src/test/use-sync-volume-with-media-tag.test.ts
|
|
50
|
-
[34mremotion:test: [0mPASS src/test/log.test.ts
|
|
51
|
-
[34mremotion:test: [0mPASS src/test/audio.test.tsx (6.1 s)
|
|
52
|
-
[34mremotion:test: [0mPASS src/test/measure-spring.test.ts
|
|
53
|
-
[34mremotion:test: [0mPASS src/test/use-media-tag-volume.test.tsx
|
|
54
|
-
[34mremotion:test: [0mPASS src/test/bezier.test.ts
|
|
55
|
-
[34mremotion:test: [0mPASS src/test/video.test.tsx (7.679 s)
|
|
56
|
-
[34mremotion:test: [0mPASS src/test/pro-res-profile.test.ts
|
|
57
|
-
[34mremotion:test: [0mPASS src/test/quality.test.ts
|
|
58
|
-
[34mremotion:test: [0mPASS src/test/overwrite.test.ts
|
|
59
|
-
[34mremotion:test: [0mPASS src/test/image-sequence.test.ts
|
|
60
|
-
[34mremotion:test: [0mPASS src/test/concurrency.test.ts
|
|
61
|
-
[34mremotion:test: [0mPASS src/test/use-media-in-timeline.test.tsx
|
|
62
|
-
[34mremotion:test: [0mPASS src/test/webpack-caching.test.ts
|
|
63
|
-
[34mremotion:test: [0mPASS src/test/input-props.test.ts
|
|
64
|
-
[34mremotion:test: [0mPASS src/test/validate-frame.test.ts
|
|
65
|
-
[34mremotion:test: [0mPASS src/test/preview-server.test.ts
|
|
66
|
-
[34mremotion:test: [0mPASS src/test/spring.test.ts
|
|
67
|
-
[34mremotion:test: [0mPASS src/test/ready-manager.test.ts
|
|
68
|
-
[34mremotion:test: [0mPASS src/test/validate-image-format.test.ts
|
|
69
|
-
[34mremotion:test: [0mPASS src/test/get-asset-file-name.test.ts
|
|
70
|
-
[34mremotion:test: [0mPASS src/test/truthy.test.ts
|
|
71
|
-
[34mremotion:test: [0mPASS src/test/absolute-src.test.ts
|
|
72
|
-
[34mremotion:test: [0mPASS src/test/Img.test.tsx
|
|
73
|
-
[34mremotion:test: [0m
|
|
74
|
-
[34mremotion:test: [0mTest Suites: 46 passed, 46 total
|
|
75
|
-
[34mremotion:test: [0mTests: 474 passed, 474 total
|
|
76
|
-
[34mremotion:test: [0mSnapshots: 0 total
|
|
77
|
-
[34mremotion:test: [0mTime: 50.985 s
|
|
78
|
-
[34mremotion:test: [0mRan all test suites.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbsoluteFill.d.ts","sourceRoot":"","sources":["../src/AbsoluteFill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,cAAc,EAAU,MAAM,OAAO,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAoBjE,CAAC"}
|
package/dist/AbsoluteFill.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AbsoluteFill.js","sourceRoot":"","sources":["../src/AbsoluteFill.tsx"],"names":[],"mappings":";;;;AAAA,iCAAqD;AAE9C,MAAM,YAAY,GAA6C,CACrE,KAAK,EACJ,EAAE;IACH,MAAM,EAAC,KAAK,EAAE,GAAG,KAAK,EAAC,GAAG,KAAK,CAAC;IAChC,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAwB,EAAE;QACrD,OAAO;YACN,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,QAAQ;YACvB,GAAG,KAAK;SACR,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,gCAAK,KAAK,EAAE,WAAW,KAAM,KAAK,WAAI,CAAC;AAC/C,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Composition.d.ts","sourceRoot":"","sources":["../src/Composition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACb,aAAa,EAEb,EAAE,EAIF,MAAM,OAAO,CAAC;AAqBf,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAC,CAgChE,CAAC;AAEF,aAAK,kBAAkB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AAEhF,oBAAY,SAAS,CAAC,CAAC,IACpB;IACA,aAAa,EAAE,MAAM,OAAO,CAAC;QAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,CAAC;CAC9D,GACD;IACA,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC;AAEL,oBAAY,UAAU,CAAC,CAAC,IAAI;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,CAAC,CAAC;CACjB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAEjB,aAAK,gBAAgB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,WAAW,4GAgEvB,CAAC"}
|
package/dist/Composition.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Composition.js","sourceRoot":"","sources":["../src/Composition.tsx"],"names":[],"mappings":"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"}
|