remotion 4.0.0-lambda.1 → 4.0.0-newpathfunctions.13
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/LICENSE.md +8 -8
- package/README.md +30 -19
- package/dist/AbsoluteFill.d.ts +2 -2
- package/dist/AbsoluteFill.js +7 -7
- package/dist/CanUseRemotionHooks.d.ts +5 -0
- package/dist/CanUseRemotionHooks.js +10 -0
- package/dist/Clipper.d.ts +7 -0
- package/dist/Clipper.js +24 -0
- package/dist/Composition.d.ts +3 -1
- package/dist/Composition.js +34 -10
- package/dist/CompositionManager.d.ts +9 -8
- package/dist/CompositionManager.js +9 -3
- package/dist/Folder.d.ts +1 -1
- package/dist/Folder.js +0 -0
- package/dist/IFrame.d.ts +0 -0
- package/dist/IFrame.js +0 -0
- package/dist/Img.d.ts +0 -0
- package/dist/Img.js +31 -21
- package/dist/LayerMaster.d.ts +8 -0
- package/dist/LayerMaster.js +39 -0
- package/dist/NativeLayers.d.ts +13 -0
- package/dist/NativeLayers.js +29 -0
- package/dist/Null.d.ts +2 -0
- package/dist/Null.js +25 -0
- package/dist/RemotionRoot.d.ts +1 -0
- package/dist/RemotionRoot.js +9 -6
- package/dist/Sequence.d.ts +13 -4
- package/dist/Sequence.js +38 -30
- package/dist/Still.d.ts +1 -1
- package/dist/Still.js +0 -0
- package/dist/absolute-src.d.ts +0 -0
- package/dist/absolute-src.js +0 -0
- package/dist/asset-types.d.ts +1 -4
- package/dist/asset-types.js +0 -0
- package/dist/audio/Audio.d.ts +5 -3
- package/dist/audio/Audio.js +24 -4
- package/dist/audio/AudioForDevelopment.d.ts +6 -2
- package/dist/audio/AudioForDevelopment.js +42 -6
- package/dist/audio/AudioForRendering.d.ts +9 -2
- package/dist/audio/AudioForRendering.js +48 -5
- package/dist/audio/index.d.ts +0 -0
- package/dist/audio/index.js +0 -0
- package/dist/audio/props.d.ts +4 -2
- package/dist/audio/props.js +0 -0
- package/dist/audio/shared-audio-tags.d.ts +9 -4
- package/dist/audio/shared-audio-tags.js +117 -45
- package/dist/audio/use-audio-frame.d.ts +0 -0
- package/dist/audio/use-audio-frame.js +0 -0
- package/dist/bezier.d.ts +0 -0
- package/dist/bezier.js +0 -0
- package/dist/config/input-props.d.ts +0 -0
- package/dist/config/input-props.js +12 -14
- package/dist/config.d.ts +285 -0
- package/dist/config.js +21 -0
- package/dist/default-css.d.ts +1 -0
- package/dist/default-css.js +9 -2
- package/dist/delay-render.d.ts +0 -0
- package/dist/delay-render.js +4 -4
- package/dist/easing.d.ts +0 -0
- package/dist/easing.js +0 -0
- package/dist/freeze.d.ts +0 -0
- package/dist/freeze.js +0 -0
- package/dist/get-asset-file-name.d.ts +0 -0
- package/dist/get-asset-file-name.js +0 -0
- package/dist/get-compositions-from-markup.d.ts +3 -0
- package/dist/get-compositions-from-markup.js +19 -0
- package/dist/get-environment.d.ts +1 -0
- package/dist/get-environment.js +14 -2
- package/dist/get-preview-dom-element.d.ts +0 -0
- package/dist/get-preview-dom-element.js +0 -0
- package/dist/get-static-files.d.ts +17 -0
- package/dist/get-static-files.js +31 -0
- package/dist/get-timeline-clip-name.d.ts +0 -0
- package/dist/get-timeline-clip-name.js +2 -1
- package/dist/index.d.ts +33 -5
- package/dist/index.js +18 -3
- package/dist/internals.d.ts +50 -101
- package/dist/internals.js +16 -91
- package/dist/interpolate-colors.d.ts +0 -0
- package/dist/interpolate-colors.js +0 -0
- package/dist/interpolate.d.ts +0 -0
- package/dist/interpolate.js +0 -0
- package/dist/is-approximately-the-same.d.ts +0 -0
- package/dist/is-approximately-the-same.js +0 -0
- package/dist/is-player.d.ts +3 -0
- package/dist/is-player.js +14 -0
- package/dist/layers.d.ts +24 -0
- package/dist/layers.js +149 -0
- package/dist/loading-indicator.d.ts +0 -0
- package/dist/loading-indicator.js +0 -0
- package/dist/loop/index.d.ts +2 -2
- package/dist/loop/index.js +7 -5
- package/dist/multiple-versions-warning.d.ts +0 -0
- package/dist/multiple-versions-warning.js +23 -4
- package/dist/nonce.d.ts +0 -0
- package/dist/nonce.js +0 -0
- package/dist/play-and-handle-not-allowed-error.d.ts +1 -1
- package/dist/play-and-handle-not-allowed-error.js +4 -0
- package/dist/portal-node.d.ts +0 -0
- package/dist/portal-node.js +0 -0
- package/dist/prefetch-state.d.ts +8 -0
- package/dist/prefetch-state.js +27 -0
- package/dist/prefetch.d.ts +9 -0
- package/dist/prefetch.js +108 -0
- package/dist/random.d.ts +2 -1
- package/dist/random.js +0 -0
- package/dist/register-root.d.ts +1 -1
- package/dist/register-root.js +3 -0
- package/dist/series/flatten-children.d.ts +1 -1
- package/dist/series/flatten-children.js +0 -0
- package/dist/series/index.d.ts +4 -4
- package/dist/series/index.js +4 -2
- package/dist/setup-env-variables.d.ts +0 -0
- package/dist/setup-env-variables.js +0 -0
- package/dist/spring/index.d.ts +8 -4
- package/dist/spring/index.js +21 -6
- package/dist/spring/measure-spring.d.ts +1 -1
- package/dist/spring/measure-spring.js +1 -1
- package/dist/spring/spring-utils.d.ts +0 -0
- package/dist/spring/spring-utils.js +0 -0
- package/dist/static-file.d.ts +4 -0
- package/dist/static-file.js +10 -0
- package/dist/timeline-position-state.d.ts +1 -1
- package/dist/timeline-position-state.js +0 -0
- package/dist/truthy.d.ts +0 -0
- package/dist/truthy.js +0 -0
- package/dist/use-current-frame.d.ts +0 -1
- package/dist/use-current-frame.js +10 -7
- package/dist/use-lazy-component.d.ts +3 -3
- package/dist/use-lazy-component.js +0 -0
- package/dist/use-media-in-timeline.d.ts +4 -3
- package/dist/use-media-in-timeline.js +13 -6
- package/dist/use-media-playback.d.ts +5 -2
- package/dist/use-media-playback.js +11 -6
- package/dist/use-media-tag-volume.d.ts +1 -1
- package/dist/use-media-tag-volume.js +0 -0
- package/dist/use-sync-volume-with-media-tag.d.ts +2 -2
- package/dist/use-sync-volume-with-media-tag.js +1 -0
- package/dist/use-unsafe-video-config.d.ts +1 -1
- package/dist/use-unsafe-video-config.js +0 -0
- package/dist/use-video-config.d.ts +1 -1
- package/dist/use-video-config.js +10 -1
- package/dist/use-video.d.ts +13 -1
- package/dist/use-video.js +16 -3
- package/dist/validate-media-props.d.ts +3 -3
- package/dist/validate-media-props.js +0 -0
- package/dist/validate-start-from-props.d.ts +0 -0
- package/dist/validate-start-from-props.js +0 -0
- package/dist/validation/validate-composition-id.d.ts +0 -0
- package/dist/validation/validate-composition-id.js +0 -0
- package/dist/validation/validate-dimensions.d.ts +0 -0
- package/dist/validation/validate-dimensions.js +0 -0
- package/dist/validation/validate-duration-in-frames.d.ts +0 -0
- package/dist/validation/validate-duration-in-frames.js +0 -0
- package/dist/validation/validate-folder-name.d.ts +0 -0
- package/dist/validation/validate-folder-name.js +0 -0
- package/dist/validation/validate-fps.d.ts +1 -1
- package/dist/validation/validate-fps.js +4 -1
- package/dist/validation/validate-offthreadvideo-image-format.d.ts +1 -0
- package/dist/validation/validate-offthreadvideo-image-format.js +15 -0
- package/dist/validation/validation-spring-duration.d.ts +1 -0
- package/dist/validation/validation-spring-duration.js +21 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +5 -0
- package/dist/video/NativeVideo.d.ts +5 -0
- package/dist/video/NativeVideo.js +33 -0
- package/dist/video/NativeVideoForRendering.d.ts +8 -0
- package/dist/video/NativeVideoForRendering.js +14 -0
- package/dist/video/OffthreadVideo.d.ts +2 -2
- package/dist/video/OffthreadVideo.js +10 -2
- package/dist/video/OffthreadVideoForRendering.d.ts +1 -1
- package/dist/video/OffthreadVideoForRendering.js +24 -13
- package/dist/video/Video.d.ts +5 -3
- package/dist/video/Video.js +25 -4
- package/dist/video/VideoForDevelopment.d.ts +10 -2
- package/dist/video/VideoForDevelopment.js +75 -7
- package/dist/video/VideoForRendering.d.ts +9 -2
- package/dist/video/VideoForRendering.js +80 -23
- package/dist/video/duration-state.d.ts +17 -0
- package/dist/video/duration-state.js +34 -0
- package/dist/video/get-current-time.d.ts +2 -1
- package/dist/video/get-current-time.js +7 -7
- package/dist/video/index.d.ts +1 -1
- package/dist/video/index.js +0 -0
- package/dist/video/props.d.ts +9 -3
- package/dist/video/props.js +0 -0
- package/dist/video/video-fragment.d.ts +12 -0
- package/dist/video/video-fragment.js +60 -0
- package/dist/video-config.d.ts +0 -0
- package/dist/video-config.js +0 -0
- package/dist/volume-position-state.d.ts +0 -0
- package/dist/volume-position-state.js +0 -0
- package/dist/volume-prop.d.ts +2 -1
- package/dist/volume-prop.js +4 -3
- package/dist/warn-about-non-seekable-media.d.ts +1 -1
- package/dist/warn-about-non-seekable-media.js +14 -2
- package/dist/wrap-remotion-context.d.ts +5 -0
- package/dist/wrap-remotion-context.js +13 -1
- package/package.json +26 -16
- package/.turbo/turbo-build.log +0 -5
- 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 +0 -7
- package/dist/compress-assets.d.ts.map +0 -1
- package/dist/compress-assets.js +0 -25
- package/dist/compress-assets.js.map +0 -1
- package/dist/config/browser-executable.d.ts +0 -3
- package/dist/config/browser-executable.d.ts.map +0 -1
- package/dist/config/browser-executable.js +0 -12
- package/dist/config/browser-executable.js.map +0 -1
- package/dist/config/browser.d.ts +0 -4
- package/dist/config/browser.d.ts.map +0 -1
- package/dist/config/browser.js +0 -19
- package/dist/config/browser.js.map +0 -1
- package/dist/config/bundle-out-dir.d.ts +0 -2
- package/dist/config/bundle-out-dir.js +0 -12
- package/dist/config/chromium-flags.d.ts +0 -10
- package/dist/config/chromium-flags.d.ts.map +0 -1
- package/dist/config/chromium-flags.js +0 -34
- package/dist/config/chromium-flags.js.map +0 -1
- package/dist/config/codec.d.ts +0 -17
- package/dist/config/codec.d.ts.map +0 -1
- package/dist/config/codec.js +0 -103
- package/dist/config/codec.js.map +0 -1
- package/dist/config/concurrency.d.ts +0 -3
- package/dist/config/concurrency.d.ts.map +0 -1
- package/dist/config/concurrency.js +0 -15
- package/dist/config/concurrency.js.map +0 -1
- package/dist/config/crf.d.ts +0 -9
- package/dist/config/crf.d.ts.map +0 -1
- package/dist/config/crf.js +0 -83
- package/dist/config/crf.js.map +0 -1
- package/dist/config/env-file.d.ts +0 -2
- package/dist/config/env-file.d.ts.map +0 -1
- package/dist/config/env-file.js +0 -10
- package/dist/config/env-file.js.map +0 -1
- package/dist/config/every-nth-file.d.ts +0 -2
- package/dist/config/every-nth-file.js +0 -12
- package/dist/config/ffmpeg-executable.d.ts +0 -5
- package/dist/config/ffmpeg-executable.d.ts.map +0 -1
- package/dist/config/ffmpeg-executable.js +0 -21
- package/dist/config/ffmpeg-executable.js.map +0 -1
- package/dist/config/frame-range.d.ts +0 -5
- package/dist/config/frame-range.d.ts.map +0 -1
- package/dist/config/frame-range.js +0 -80
- package/dist/config/frame-range.js.map +0 -1
- package/dist/config/image-format.d.ts +0 -8
- package/dist/config/image-format.d.ts.map +0 -1
- package/dist/config/image-format.js +0 -37
- package/dist/config/image-format.js.map +0 -1
- package/dist/config/image-sequence.d.ts +0 -3
- package/dist/config/image-sequence.d.ts.map +0 -1
- package/dist/config/image-sequence.js +0 -15
- package/dist/config/image-sequence.js.map +0 -1
- package/dist/config/index.d.ts +0 -167
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -180
- 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 +0 -7
- package/dist/config/log.d.ts.map +0 -1
- package/dist/config/log.js +0 -25
- package/dist/config/log.js.map +0 -1
- package/dist/config/loop.d.ts +0 -3
- package/dist/config/loop.js +0 -15
- package/dist/config/max-timeline-tracks.d.ts +0 -2
- package/dist/config/max-timeline-tracks.d.ts.map +0 -1
- package/dist/config/max-timeline-tracks.js +0 -24
- package/dist/config/max-timeline-tracks.js.map +0 -1
- package/dist/config/override-webpack.d.ts +0 -6
- package/dist/config/override-webpack.d.ts.map +0 -1
- package/dist/config/override-webpack.js +0 -14
- package/dist/config/override-webpack.js.map +0 -1
- package/dist/config/overwrite.d.ts +0 -3
- package/dist/config/overwrite.d.ts.map +0 -1
- package/dist/config/overwrite.js +0 -14
- package/dist/config/overwrite.js.map +0 -1
- package/dist/config/pixel-format.d.ts +0 -8
- package/dist/config/pixel-format.d.ts.map +0 -1
- package/dist/config/pixel-format.js +0 -38
- package/dist/config/pixel-format.js.map +0 -1
- package/dist/config/preview-server.d.ts +0 -2
- package/dist/config/preview-server.d.ts.map +0 -1
- package/dist/config/preview-server.js +0 -20
- package/dist/config/preview-server.js.map +0 -1
- package/dist/config/prores-profile.d.ts +0 -7
- package/dist/config/prores-profile.d.ts.map +0 -1
- package/dist/config/prores-profile.js +0 -32
- package/dist/config/prores-profile.js.map +0 -1
- package/dist/config/public-path.d.ts +0 -2
- package/dist/config/public-path.js +0 -12
- package/dist/config/quality.d.ts +0 -2
- package/dist/config/quality.d.ts.map +0 -1
- package/dist/config/quality.js +0 -17
- package/dist/config/quality.js.map +0 -1
- package/dist/config/scale.d.ts +0 -3
- package/dist/config/scale.d.ts.map +0 -1
- package/dist/config/scale.js +0 -15
- package/dist/config/scale.js.map +0 -1
- package/dist/config/still-frame.d.ts +0 -2
- package/dist/config/still-frame.d.ts.map +0 -1
- package/dist/config/still-frame.js +0 -12
- package/dist/config/still-frame.js.map +0 -1
- package/dist/config/timeout.d.ts +0 -2
- package/dist/config/timeout.d.ts.map +0 -1
- package/dist/config/timeout.js +0 -17
- package/dist/config/timeout.js.map +0 -1
- package/dist/config/webpack-caching.d.ts +0 -3
- package/dist/config/webpack-caching.d.ts.map +0 -1
- package/dist/config/webpack-caching.js +0 -16
- 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 +0 -1
- package/dist/feature-flags.d.ts.map +0 -1
- package/dist/feature-flags.js +0 -7
- 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 +0 -2
- package/dist/initial-frame.d.ts.map +0 -1
- package/dist/initial-frame.js +0 -12
- 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 +0 -5
- package/dist/interpolateColors.d.ts.map +0 -1
- package/dist/interpolateColors.js +0 -401
- 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 +0 -2
- package/dist/is-audio-codec.d.ts.map +0 -1
- package/dist/is-audio-codec.js +0 -7
- 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 +0 -5
- package/dist/perf/index.d.ts.map +0 -1
- package/dist/perf/index.js +0 -35
- 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 +0 -19
- package/dist/sequencing/index.d.ts.map +0 -1
- package/dist/sequencing/index.js +0 -123
- 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 +0 -12
- package/dist/timeline-inout-position-state.d.ts.map +0 -1
- package/dist/timeline-inout-position-state.js +0 -23
- 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 +0 -2
- package/dist/timeout.d.ts.map +0 -1
- package/dist/timeout.js +0 -12
- 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 +0 -7
- package/dist/use-frame.d.ts.map +0 -1
- package/dist/use-frame.js +0 -25
- 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-every-nth-frame.d.ts +0 -1
- package/dist/validation/validate-every-nth-frame.js +0 -21
- 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 +0 -1
- package/dist/validation/validate-frame.d.ts.map +0 -1
- package/dist/validation/validate-frame.js +0 -24
- package/dist/validation/validate-frame.js.map +0 -1
- package/dist/validation/validate-image-format.d.ts +0 -2
- package/dist/validation/validate-image-format.d.ts.map +0 -1
- package/dist/validation/validate-image-format.js +0 -9
- package/dist/validation/validate-image-format.js.map +0 -1
- package/dist/validation/validate-opengl-renderer.d.ts +0 -4
- package/dist/validation/validate-opengl-renderer.d.ts.map +0 -1
- package/dist/validation/validate-opengl-renderer.js +0 -14
- package/dist/validation/validate-opengl-renderer.js.map +0 -1
- package/dist/validation/validate-quality.d.ts +0 -1
- package/dist/validation/validate-quality.d.ts.map +0 -1
- package/dist/validation/validate-quality.js +0 -21
- 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
|
@@ -7,30 +7,33 @@ const absolute_src_1 = require("../absolute-src");
|
|
|
7
7
|
const use_audio_frame_1 = require("../audio/use-audio-frame");
|
|
8
8
|
const CompositionManager_1 = require("../CompositionManager");
|
|
9
9
|
const delay_render_1 = require("../delay-render");
|
|
10
|
+
const get_environment_1 = require("../get-environment");
|
|
10
11
|
const is_approximately_the_same_1 = require("../is-approximately-the-same");
|
|
11
12
|
const random_1 = require("../random");
|
|
12
13
|
const Sequence_1 = require("../Sequence");
|
|
14
|
+
const timeline_position_state_1 = require("../timeline-position-state");
|
|
13
15
|
const use_current_frame_1 = require("../use-current-frame");
|
|
14
16
|
const use_unsafe_video_config_1 = require("../use-unsafe-video-config");
|
|
15
17
|
const volume_prop_1 = require("../volume-prop");
|
|
18
|
+
const warn_about_non_seekable_media_1 = require("../warn-about-non-seekable-media");
|
|
16
19
|
const get_current_time_1 = require("./get-current-time");
|
|
17
|
-
const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbackRate, ...props }, ref) => {
|
|
18
|
-
const absoluteFrame = (0,
|
|
20
|
+
const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, allowAmplificationDuringRender, playbackRate, onDuration, ...props }, ref) => {
|
|
21
|
+
const absoluteFrame = (0, timeline_position_state_1.useTimelinePosition)();
|
|
19
22
|
const frame = (0, use_current_frame_1.useCurrentFrame)();
|
|
20
23
|
const volumePropsFrame = (0, use_audio_frame_1.useFrameForVolumeProp)();
|
|
21
24
|
const videoConfig = (0, use_unsafe_video_config_1.useUnsafeVideoConfig)();
|
|
22
25
|
const videoRef = (0, react_1.useRef)(null);
|
|
23
26
|
const sequenceContext = (0, react_1.useContext)(Sequence_1.SequenceContext);
|
|
24
27
|
const mediaStartsAt = (0, use_audio_frame_1.useMediaStartsAt)();
|
|
28
|
+
const environment = (0, get_environment_1.useRemotionEnvironment)();
|
|
25
29
|
const { registerAsset, unregisterAsset } = (0, react_1.useContext)(CompositionManager_1.CompositionManager);
|
|
26
30
|
// Generate a string that's as unique as possible for this asset
|
|
27
31
|
// but at the same time the same on all threads
|
|
28
32
|
const id = (0, react_1.useMemo)(() => {
|
|
29
33
|
var _a;
|
|
30
|
-
return `video-${(0, random_1.random)((_a = props.src) !== null && _a !== void 0 ? _a : '')}-${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}
|
|
34
|
+
return `video-${(0, random_1.random)((_a = props.src) !== null && _a !== void 0 ? _a : '')}-${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}`;
|
|
31
35
|
}, [
|
|
32
36
|
props.src,
|
|
33
|
-
props.muted,
|
|
34
37
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.cumulatedFrom,
|
|
35
38
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.relativeFrom,
|
|
36
39
|
sequenceContext === null || sequenceContext === void 0 ? void 0 : sequenceContext.durationInFrames,
|
|
@@ -42,6 +45,7 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
42
45
|
volume: volumeProp,
|
|
43
46
|
frame: volumePropsFrame,
|
|
44
47
|
mediaVolume: 1,
|
|
48
|
+
allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : false,
|
|
45
49
|
});
|
|
46
50
|
(0, react_1.useEffect)(() => {
|
|
47
51
|
if (!props.src) {
|
|
@@ -50,6 +54,12 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
50
54
|
if (props.muted) {
|
|
51
55
|
return;
|
|
52
56
|
}
|
|
57
|
+
if (volume <= 0) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!window.remotion_audioEnabled) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
53
63
|
registerAsset({
|
|
54
64
|
type: 'video',
|
|
55
65
|
src: (0, absolute_src_1.getAbsoluteSrc)(props.src),
|
|
@@ -58,6 +68,7 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
58
68
|
volume,
|
|
59
69
|
mediaFrame: frame,
|
|
60
70
|
playbackRate: playbackRate !== null && playbackRate !== void 0 ? playbackRate : 1,
|
|
71
|
+
allowAmplificationDuringRender: allowAmplificationDuringRender !== null && allowAmplificationDuringRender !== void 0 ? allowAmplificationDuringRender : false,
|
|
61
72
|
});
|
|
62
73
|
return () => unregisterAsset(id);
|
|
63
74
|
}, [
|
|
@@ -70,12 +81,17 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
70
81
|
frame,
|
|
71
82
|
absoluteFrame,
|
|
72
83
|
playbackRate,
|
|
84
|
+
allowAmplificationDuringRender,
|
|
73
85
|
]);
|
|
74
86
|
(0, react_1.useImperativeHandle)(ref, () => {
|
|
75
87
|
return videoRef.current;
|
|
76
|
-
});
|
|
88
|
+
}, []);
|
|
77
89
|
(0, react_1.useEffect)(() => {
|
|
78
|
-
if (!
|
|
90
|
+
if (!window.remotion_videoEnabled) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const { current } = videoRef;
|
|
94
|
+
if (!current) {
|
|
79
95
|
return;
|
|
80
96
|
}
|
|
81
97
|
const currentTime = (() => {
|
|
@@ -85,6 +101,7 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
85
101
|
src: props.src,
|
|
86
102
|
playbackRate: playbackRate || 1,
|
|
87
103
|
startFrom: -mediaStartsAt,
|
|
104
|
+
mediaType: 'video',
|
|
88
105
|
});
|
|
89
106
|
})();
|
|
90
107
|
const handle = (0, delay_render_1.delayRender)(`Rendering <Video /> with src="${props.src}"`);
|
|
@@ -92,18 +109,22 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
92
109
|
(0, delay_render_1.continueRender)(handle);
|
|
93
110
|
return;
|
|
94
111
|
}
|
|
95
|
-
if ((0, is_approximately_the_same_1.isApproximatelyTheSame)(
|
|
96
|
-
if (
|
|
112
|
+
if ((0, is_approximately_the_same_1.isApproximatelyTheSame)(current.currentTime, currentTime)) {
|
|
113
|
+
if (current.readyState >= 2) {
|
|
97
114
|
(0, delay_render_1.continueRender)(handle);
|
|
98
115
|
return;
|
|
99
116
|
}
|
|
100
|
-
|
|
117
|
+
const loadedDataHandler = () => {
|
|
101
118
|
(0, delay_render_1.continueRender)(handle);
|
|
102
|
-
}
|
|
103
|
-
|
|
119
|
+
};
|
|
120
|
+
current.addEventListener('loadeddata', loadedDataHandler, { once: true });
|
|
121
|
+
return () => {
|
|
122
|
+
current.removeEventListener('loadeddata', loadedDataHandler);
|
|
123
|
+
};
|
|
104
124
|
}
|
|
105
|
-
|
|
106
|
-
|
|
125
|
+
current.currentTime = currentTime;
|
|
126
|
+
const seekedHandler = () => {
|
|
127
|
+
(0, warn_about_non_seekable_media_1.warnAboutNonSeekableMedia)(current, 'exception');
|
|
107
128
|
if (window.navigator.platform.startsWith('Mac')) {
|
|
108
129
|
// Improve me: This is ensures frame perfectness but slows down render.
|
|
109
130
|
// Please see this issue for context: https://github.com/remotion-dev/remotion/issues/200
|
|
@@ -115,22 +136,28 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
115
136
|
else {
|
|
116
137
|
(0, delay_render_1.continueRender)(handle);
|
|
117
138
|
}
|
|
118
|
-
}
|
|
119
|
-
|
|
139
|
+
};
|
|
140
|
+
current.addEventListener('seeked', seekedHandler, { once: true });
|
|
141
|
+
const endedHandler = () => {
|
|
120
142
|
(0, delay_render_1.continueRender)(handle);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
143
|
+
};
|
|
144
|
+
current.addEventListener('ended', endedHandler, { once: true });
|
|
145
|
+
const errorHandler = () => {
|
|
146
|
+
var _a;
|
|
147
|
+
if (current === null || current === void 0 ? void 0 : current.error) {
|
|
148
|
+
console.error('Error occurred in video', current === null || current === void 0 ? void 0 : current.error);
|
|
149
|
+
throw new Error(`The browser threw an error while playing the video ${props.src}: Code ${current.error.code} - ${(_a = current === null || current === void 0 ? void 0 : current.error) === null || _a === void 0 ? void 0 : _a.message}. See https://remotion.dev/docs/media-playback-error for help`);
|
|
127
150
|
}
|
|
128
151
|
else {
|
|
129
|
-
throw new Error('The browser threw an
|
|
152
|
+
throw new Error('The browser threw an error');
|
|
130
153
|
}
|
|
131
|
-
}
|
|
154
|
+
};
|
|
155
|
+
current.addEventListener('error', errorHandler, { once: true });
|
|
132
156
|
// If video skips to another frame or unmounts, we clear the created handle
|
|
133
157
|
return () => {
|
|
158
|
+
current.removeEventListener('ended', endedHandler);
|
|
159
|
+
current.removeEventListener('error', errorHandler);
|
|
160
|
+
current.removeEventListener('seeked', seekedHandler);
|
|
134
161
|
(0, delay_render_1.continueRender)(handle);
|
|
135
162
|
};
|
|
136
163
|
}, [
|
|
@@ -141,6 +168,36 @@ const VideoForRenderingForwardFunction = ({ onError, volume: volumeProp, playbac
|
|
|
141
168
|
frame,
|
|
142
169
|
mediaStartsAt,
|
|
143
170
|
]);
|
|
171
|
+
const { src } = props;
|
|
172
|
+
// If video source switches, make new handle
|
|
173
|
+
if (environment === 'rendering') {
|
|
174
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
175
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
176
|
+
if (process.env.NODE_ENV === 'test') {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const newHandle = (0, delay_render_1.delayRender)('Loading <Video> duration with src=' + src);
|
|
180
|
+
const { current } = videoRef;
|
|
181
|
+
const didLoad = () => {
|
|
182
|
+
if (current === null || current === void 0 ? void 0 : current.duration) {
|
|
183
|
+
onDuration(src, current.duration);
|
|
184
|
+
}
|
|
185
|
+
(0, delay_render_1.continueRender)(newHandle);
|
|
186
|
+
};
|
|
187
|
+
if (current === null || current === void 0 ? void 0 : current.duration) {
|
|
188
|
+
onDuration(src, current.duration);
|
|
189
|
+
(0, delay_render_1.continueRender)(newHandle);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
current === null || current === void 0 ? void 0 : current.addEventListener('loadedmetadata', didLoad, { once: true });
|
|
193
|
+
}
|
|
194
|
+
// If tag gets unmounted, clear pending handles because video metadata is not going to load
|
|
195
|
+
return () => {
|
|
196
|
+
current === null || current === void 0 ? void 0 : current.removeEventListener('loadedmetadata', didLoad);
|
|
197
|
+
(0, delay_render_1.continueRender)(newHandle);
|
|
198
|
+
};
|
|
199
|
+
}, [src, onDuration]);
|
|
200
|
+
}
|
|
144
201
|
return (0, jsx_runtime_1.jsx)("video", { ref: videoRef, ...props, onError: onError });
|
|
145
202
|
};
|
|
146
203
|
exports.VideoForRendering = (0, react_1.forwardRef)(VideoForRenderingForwardFunction);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
declare type DurationState = Record<string, number>;
|
|
3
|
+
declare type DurationAction = {
|
|
4
|
+
type: 'got-duration';
|
|
5
|
+
src: string;
|
|
6
|
+
durationInSeconds: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const durationReducer: (state: DurationState, action: DurationAction) => DurationState;
|
|
9
|
+
declare type TDurationsContext = {
|
|
10
|
+
durations: DurationState;
|
|
11
|
+
setDurations: React.Dispatch<DurationAction>;
|
|
12
|
+
};
|
|
13
|
+
export declare const DurationsContext: React.Context<TDurationsContext>;
|
|
14
|
+
export declare const DurationsContextProvider: React.FC<{
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
}>;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DurationsContextProvider = exports.DurationsContext = exports.durationReducer = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const durationReducer = (state, action) => {
|
|
7
|
+
switch (action.type) {
|
|
8
|
+
case 'got-duration':
|
|
9
|
+
return {
|
|
10
|
+
...state,
|
|
11
|
+
[action.src]: action.durationInSeconds,
|
|
12
|
+
};
|
|
13
|
+
default:
|
|
14
|
+
return state;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.durationReducer = durationReducer;
|
|
18
|
+
exports.DurationsContext = (0, react_1.createContext)({
|
|
19
|
+
durations: {},
|
|
20
|
+
setDurations: () => {
|
|
21
|
+
throw new Error('context missing');
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const DurationsContextProvider = ({ children }) => {
|
|
25
|
+
const [durations, setDurations] = (0, react_1.useReducer)(exports.durationReducer, {});
|
|
26
|
+
const value = (0, react_1.useMemo)(() => {
|
|
27
|
+
return {
|
|
28
|
+
durations,
|
|
29
|
+
setDurations,
|
|
30
|
+
};
|
|
31
|
+
}, [durations]);
|
|
32
|
+
return ((0, jsx_runtime_1.jsx)(exports.DurationsContext.Provider, { value: value, children: children }));
|
|
33
|
+
};
|
|
34
|
+
exports.DurationsContextProvider = DurationsContextProvider;
|
|
@@ -3,10 +3,11 @@ export declare const getExpectedMediaFrameUncorrected: ({ frame, playbackRate, s
|
|
|
3
3
|
playbackRate: number;
|
|
4
4
|
startFrom: number;
|
|
5
5
|
}) => number;
|
|
6
|
-
export declare const getMediaTime: ({ fps, frame, src, playbackRate, startFrom, }: {
|
|
6
|
+
export declare const getMediaTime: ({ fps, frame, src, playbackRate, startFrom, mediaType, }: {
|
|
7
7
|
fps: number;
|
|
8
8
|
frame: number;
|
|
9
9
|
src: string;
|
|
10
10
|
playbackRate: number;
|
|
11
11
|
startFrom: number;
|
|
12
|
+
mediaType: 'video' | 'audio';
|
|
12
13
|
}) => number;
|
|
@@ -7,24 +7,24 @@ const getExpectedMediaFrameUncorrected = ({ frame, playbackRate, startFrom, }) =
|
|
|
7
7
|
return (0, interpolate_1.interpolate)(frame, [-1, startFrom, startFrom + 1], [-1, startFrom, startFrom + playbackRate]);
|
|
8
8
|
};
|
|
9
9
|
exports.getExpectedMediaFrameUncorrected = getExpectedMediaFrameUncorrected;
|
|
10
|
-
const getMediaTime = ({ fps, frame, src, playbackRate, startFrom, }) => {
|
|
10
|
+
const getMediaTime = ({ fps, frame, src, playbackRate, startFrom, mediaType, }) => {
|
|
11
11
|
const expectedFrame = (0, exports.getExpectedMediaFrameUncorrected)({
|
|
12
12
|
frame,
|
|
13
13
|
playbackRate,
|
|
14
14
|
startFrom,
|
|
15
15
|
});
|
|
16
|
-
if (src.endsWith('mp4')) {
|
|
17
|
-
// In Chrome, for MP4s, if 30fps, the first frame is still displayed at 0.033333
|
|
18
|
-
// even though after that it increases by 0.033333333 each.
|
|
19
|
-
// So frame = 0 in Remotion is like frame = 1 for the browser
|
|
20
|
-
return (expectedFrame + 1) / fps;
|
|
21
|
-
}
|
|
22
16
|
if (src.endsWith('webm')) {
|
|
23
17
|
// For WebM videos, we need to add a little bit of shift to get the right frame.
|
|
24
18
|
const msPerFrame = 1000 / fps;
|
|
25
19
|
const msShift = msPerFrame / 2;
|
|
26
20
|
return (expectedFrame * msPerFrame + msShift) / 1000;
|
|
27
21
|
}
|
|
22
|
+
if (mediaType === 'video') {
|
|
23
|
+
// In Chrome, for MP4s, if 30fps, the first frame is still displayed at 0.033333
|
|
24
|
+
// even though after that it increases by 0.033333333 each.
|
|
25
|
+
// So frame = 0 in Remotion is like frame = 1 for the browser
|
|
26
|
+
return (expectedFrame + 1) / fps;
|
|
27
|
+
}
|
|
28
28
|
// For audio, we don't do any shift correction
|
|
29
29
|
return expectedFrame / fps;
|
|
30
30
|
};
|
package/dist/video/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { OffthreadVideo } from './OffthreadVideo';
|
|
2
|
-
export { OffthreadVideoProps as RemotionOffthreadVideoProps, RemotionMainVideoProps, RemotionVideoProps, } from './props';
|
|
2
|
+
export { OffthreadVideoImageFormat, OffthreadVideoProps as RemotionOffthreadVideoProps, RemotionMainVideoProps, RemotionVideoProps, } from './props';
|
|
3
3
|
export { Video } from './Video';
|
package/dist/video/index.js
CHANGED
|
File without changes
|
package/dist/video/props.d.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { VolumeProp } from '../volume-prop';
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
import type { VolumeProp } from '../volume-prop';
|
|
3
3
|
export declare type RemotionMainVideoProps = {
|
|
4
4
|
startFrom?: number;
|
|
5
5
|
endAt?: number;
|
|
6
6
|
};
|
|
7
|
-
export declare type RemotionVideoProps = Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, 'autoPlay' | 'controls' | '
|
|
7
|
+
export declare type RemotionVideoProps = Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, 'autoPlay' | 'controls' | 'onEnded' | 'nonce'> & {
|
|
8
8
|
volume?: VolumeProp;
|
|
9
9
|
playbackRate?: number;
|
|
10
|
+
acceptableTimeShiftInSeconds?: number;
|
|
11
|
+
allowAmplificationDuringRender?: boolean;
|
|
10
12
|
};
|
|
13
|
+
export declare type OffthreadVideoImageFormat = 'png' | 'jpeg';
|
|
11
14
|
export declare type OffthreadVideoProps = {
|
|
12
15
|
src: string;
|
|
13
16
|
className?: string;
|
|
@@ -16,4 +19,7 @@ export declare type OffthreadVideoProps = {
|
|
|
16
19
|
playbackRate?: number;
|
|
17
20
|
muted?: boolean;
|
|
18
21
|
onError?: React.ReactEventHandler<HTMLVideoElement | HTMLImageElement>;
|
|
22
|
+
imageFormat?: OffthreadVideoImageFormat;
|
|
23
|
+
acceptableTimeShiftInSeconds?: number;
|
|
24
|
+
allowAmplificationDuringRender?: boolean;
|
|
19
25
|
};
|
package/dist/video/props.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const useAppendVideoFragment: ({ actualSrc: initialActualSrc, actualFrom: initialActualFrom, duration: initialDuration, fps, }: {
|
|
2
|
+
actualSrc: string;
|
|
3
|
+
actualFrom: number;
|
|
4
|
+
duration: number;
|
|
5
|
+
fps: number;
|
|
6
|
+
}) => string;
|
|
7
|
+
export declare const appendVideoFragment: ({ actualSrc, actualFrom, duration, fps, }: {
|
|
8
|
+
actualSrc: string;
|
|
9
|
+
actualFrom: number;
|
|
10
|
+
duration: number;
|
|
11
|
+
fps: number;
|
|
12
|
+
}) => string;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appendVideoFragment = exports.useAppendVideoFragment = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const toSeconds = (time, fps) => {
|
|
6
|
+
return Math.round((time / fps) * 100) / 100;
|
|
7
|
+
};
|
|
8
|
+
const isSubsetOfDuration = (prevStartFrom, newStartFrom, prevDuration, newDuration) => {
|
|
9
|
+
return (prevStartFrom <= newStartFrom &&
|
|
10
|
+
prevStartFrom + prevDuration >= newStartFrom + newDuration);
|
|
11
|
+
};
|
|
12
|
+
const useAppendVideoFragment = ({ actualSrc: initialActualSrc, actualFrom: initialActualFrom, duration: initialDuration, fps, }) => {
|
|
13
|
+
const actualFromRef = (0, react_1.useRef)(initialActualFrom);
|
|
14
|
+
const actualDuration = (0, react_1.useRef)(initialDuration);
|
|
15
|
+
const actualSrc = (0, react_1.useRef)(initialActualSrc);
|
|
16
|
+
if (!isSubsetOfDuration || initialActualSrc !== actualSrc.current) {
|
|
17
|
+
actualFromRef.current = initialActualFrom;
|
|
18
|
+
actualDuration.current = initialDuration;
|
|
19
|
+
actualSrc.current = initialActualSrc;
|
|
20
|
+
}
|
|
21
|
+
const appended = (0, exports.appendVideoFragment)({
|
|
22
|
+
actualSrc: actualSrc.current,
|
|
23
|
+
actualFrom: actualFromRef.current,
|
|
24
|
+
duration: actualDuration.current,
|
|
25
|
+
fps,
|
|
26
|
+
});
|
|
27
|
+
return appended;
|
|
28
|
+
};
|
|
29
|
+
exports.useAppendVideoFragment = useAppendVideoFragment;
|
|
30
|
+
// https://github.com/remotion-dev/remotion/issues/1655
|
|
31
|
+
const isIOSSafariCase = (actualSrc) => {
|
|
32
|
+
return typeof window === 'undefined'
|
|
33
|
+
? false
|
|
34
|
+
: /iP(ad|od|hone)/i.test(window.navigator.userAgent) &&
|
|
35
|
+
Boolean(navigator.userAgent.match(/Version\/[\d.]+.*Safari/)) &&
|
|
36
|
+
actualSrc.startsWith('blob:');
|
|
37
|
+
};
|
|
38
|
+
const appendVideoFragment = ({ actualSrc, actualFrom, duration, fps, }) => {
|
|
39
|
+
var _a;
|
|
40
|
+
if (isIOSSafariCase(actualSrc)) {
|
|
41
|
+
return actualSrc;
|
|
42
|
+
}
|
|
43
|
+
if (actualSrc.startsWith('data:')) {
|
|
44
|
+
return actualSrc;
|
|
45
|
+
}
|
|
46
|
+
const existingHash = Boolean(new URL(actualSrc, (_a = (typeof window === 'undefined' ? null : window.location.href)) !== null && _a !== void 0 ? _a : 'http://localhost:3000').hash);
|
|
47
|
+
if (existingHash) {
|
|
48
|
+
return actualSrc;
|
|
49
|
+
}
|
|
50
|
+
if (!Number.isFinite(actualFrom)) {
|
|
51
|
+
return actualSrc;
|
|
52
|
+
}
|
|
53
|
+
actualSrc += `#t=${toSeconds(-actualFrom, fps)}`;
|
|
54
|
+
if (!Number.isFinite(duration)) {
|
|
55
|
+
return actualSrc;
|
|
56
|
+
}
|
|
57
|
+
actualSrc += `,${toSeconds(duration, fps)}`;
|
|
58
|
+
return actualSrc;
|
|
59
|
+
};
|
|
60
|
+
exports.appendVideoFragment = appendVideoFragment;
|
package/dist/video-config.d.ts
CHANGED
|
File without changes
|
package/dist/video-config.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/volume-prop.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare type VolumeProp = number | ((frame: number) => number);
|
|
2
|
-
export declare const evaluateVolume: ({ frame, volume, mediaVolume, }: {
|
|
2
|
+
export declare const evaluateVolume: ({ frame, volume, mediaVolume, allowAmplificationDuringRender, }: {
|
|
3
3
|
frame: number;
|
|
4
4
|
volume: VolumeProp | undefined;
|
|
5
5
|
mediaVolume: number;
|
|
6
|
+
allowAmplificationDuringRender: boolean;
|
|
6
7
|
}) => number;
|
package/dist/volume-prop.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.evaluateVolume = void 0;
|
|
4
|
-
const evaluateVolume = ({ frame, volume, mediaVolume = 1, }) => {
|
|
4
|
+
const evaluateVolume = ({ frame, volume, mediaVolume = 1, allowAmplificationDuringRender, }) => {
|
|
5
|
+
const maxVolume = allowAmplificationDuringRender ? Infinity : 1;
|
|
5
6
|
if (typeof volume === 'number') {
|
|
6
|
-
return Math.min(
|
|
7
|
+
return Math.min(maxVolume, volume * mediaVolume);
|
|
7
8
|
}
|
|
8
9
|
if (typeof volume === 'undefined') {
|
|
9
10
|
return Number(mediaVolume);
|
|
@@ -18,6 +19,6 @@ const evaluateVolume = ({ frame, volume, mediaVolume = 1, }) => {
|
|
|
18
19
|
if (!Number.isFinite(evaluated)) {
|
|
19
20
|
throw new TypeError(`You passed in a function to the volume prop but it returned a non-finite number for frame ${frame}.`);
|
|
20
21
|
}
|
|
21
|
-
return Math.min(
|
|
22
|
+
return Math.max(0, Math.min(maxVolume, evaluated));
|
|
22
23
|
};
|
|
23
24
|
exports.evaluateVolume = evaluateVolume;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const warnAboutNonSeekableMedia: (ref: HTMLMediaElement) => void;
|
|
1
|
+
export declare const warnAboutNonSeekableMedia: (ref: HTMLMediaElement | null, type: 'console-warning' | 'console-error' | 'exception') => void;
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.warnAboutNonSeekableMedia = void 0;
|
|
4
4
|
const alreadyWarned = {};
|
|
5
|
-
const warnAboutNonSeekableMedia = (ref) => {
|
|
5
|
+
const warnAboutNonSeekableMedia = (ref, type) => {
|
|
6
6
|
// Media is not loaded yet, but this does not yet mean something is wrong with the media
|
|
7
|
+
if (ref === null) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
7
10
|
if (ref.seekable.length === 0) {
|
|
8
11
|
return;
|
|
9
12
|
}
|
|
@@ -15,7 +18,16 @@ const warnAboutNonSeekableMedia = (ref) => {
|
|
|
15
18
|
}
|
|
16
19
|
const range = { start: ref.seekable.start(0), end: ref.seekable.end(0) };
|
|
17
20
|
if (range.start === 0 && range.end === 0) {
|
|
18
|
-
|
|
21
|
+
const msg = `The media ${ref.src} cannot be seeked. This could be one of two reasons: 1) The media resource was replaced while the video is playing but it was not loaded yet. 2) The media does not support seeking. Please see https://remotion.dev/docs/non-seekable-media for assistance.`;
|
|
22
|
+
if (type === 'console-error') {
|
|
23
|
+
console.error(msg);
|
|
24
|
+
}
|
|
25
|
+
else if (type === 'console-warning') {
|
|
26
|
+
console.warn(`The media ${ref.src} does not support seeking. The video will render fine, but may not play correctly in preview and in the <Player>. See https://remotion.dev/docs/non-seekable-media for an explanation.`);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new Error(msg);
|
|
30
|
+
}
|
|
19
31
|
alreadyWarned[ref.src] = true;
|
|
20
32
|
}
|
|
21
33
|
};
|
|
@@ -5,6 +5,11 @@ export declare function useRemotionContexts(): {
|
|
|
5
5
|
setTimelineContext: import("./timeline-position-state").SetTimelineContextValue;
|
|
6
6
|
sequenceContext: import("./Sequence").SequenceContextType | null;
|
|
7
7
|
nonceContext: import("./nonce").TNonceContext;
|
|
8
|
+
canUseRemotionHooksContext: boolean;
|
|
9
|
+
nativeLayersContext: import("./NativeLayers").TNativeLayersContext;
|
|
10
|
+
preloadContext: {
|
|
11
|
+
[x: string]: string;
|
|
12
|
+
};
|
|
8
13
|
};
|
|
9
14
|
export interface RemotionContextProviderProps {
|
|
10
15
|
contexts: ReturnType<typeof useRemotionContexts>;
|
|
@@ -29,8 +29,11 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
29
29
|
// such as in React Three Fiber. All the contexts need to be passed again
|
|
30
30
|
// for them to be useable
|
|
31
31
|
const react_1 = __importStar(require("react"));
|
|
32
|
+
const CanUseRemotionHooks_1 = require("./CanUseRemotionHooks");
|
|
32
33
|
const CompositionManager_1 = require("./CompositionManager");
|
|
34
|
+
const NativeLayers_1 = require("./NativeLayers");
|
|
33
35
|
const nonce_1 = require("./nonce");
|
|
36
|
+
const prefetch_state_1 = require("./prefetch-state");
|
|
34
37
|
const Sequence_1 = require("./Sequence");
|
|
35
38
|
const timeline_position_state_1 = require("./timeline-position-state");
|
|
36
39
|
function useRemotionContexts() {
|
|
@@ -39,23 +42,32 @@ function useRemotionContexts() {
|
|
|
39
42
|
const setTimelineContext = react_1.default.useContext(timeline_position_state_1.SetTimelineContext);
|
|
40
43
|
const sequenceContext = react_1.default.useContext(Sequence_1.SequenceContext);
|
|
41
44
|
const nonceContext = react_1.default.useContext(nonce_1.NonceContext);
|
|
45
|
+
const canUseRemotionHooksContext = react_1.default.useContext(CanUseRemotionHooks_1.CanUseRemotionHooks);
|
|
46
|
+
const nativeLayersContext = react_1.default.useContext(NativeLayers_1.NativeLayersContext);
|
|
47
|
+
const preloadContext = react_1.default.useContext(prefetch_state_1.PreloadContext);
|
|
42
48
|
return (0, react_1.useMemo)(() => ({
|
|
43
49
|
compositionManagerCtx,
|
|
44
50
|
timelineContext,
|
|
45
51
|
setTimelineContext,
|
|
46
52
|
sequenceContext,
|
|
47
53
|
nonceContext,
|
|
54
|
+
canUseRemotionHooksContext,
|
|
55
|
+
nativeLayersContext,
|
|
56
|
+
preloadContext,
|
|
48
57
|
}), [
|
|
49
58
|
compositionManagerCtx,
|
|
50
59
|
nonceContext,
|
|
51
60
|
sequenceContext,
|
|
52
61
|
setTimelineContext,
|
|
53
62
|
timelineContext,
|
|
63
|
+
canUseRemotionHooksContext,
|
|
64
|
+
nativeLayersContext,
|
|
65
|
+
preloadContext,
|
|
54
66
|
]);
|
|
55
67
|
}
|
|
56
68
|
exports.useRemotionContexts = useRemotionContexts;
|
|
57
69
|
const RemotionContextProvider = (props) => {
|
|
58
70
|
const { children, contexts } = props;
|
|
59
|
-
return ((0, jsx_runtime_1.jsx)(nonce_1.NonceContext.Provider, { value: contexts.nonceContext, children: (0, jsx_runtime_1.jsx)(CompositionManager_1.CompositionManager.Provider, { value: contexts.compositionManagerCtx, children: (0, jsx_runtime_1.jsx)(timeline_position_state_1.TimelineContext.Provider, { value: contexts.timelineContext, children: (0, jsx_runtime_1.jsx)(timeline_position_state_1.SetTimelineContext.Provider, { value: contexts.setTimelineContext, children: (0, jsx_runtime_1.jsx)(Sequence_1.SequenceContext.Provider, { value: contexts.sequenceContext, children: children }) }) }) }) }));
|
|
71
|
+
return ((0, jsx_runtime_1.jsx)(CanUseRemotionHooks_1.CanUseRemotionHooks.Provider, { value: contexts.canUseRemotionHooksContext, children: (0, jsx_runtime_1.jsx)(nonce_1.NonceContext.Provider, { value: contexts.nonceContext, children: (0, jsx_runtime_1.jsx)(NativeLayers_1.NativeLayersContext.Provider, { value: contexts.nativeLayersContext, children: (0, jsx_runtime_1.jsx)(prefetch_state_1.PreloadContext.Provider, { value: contexts.preloadContext, children: (0, jsx_runtime_1.jsx)(CompositionManager_1.CompositionManager.Provider, { value: contexts.compositionManagerCtx, children: (0, jsx_runtime_1.jsx)(timeline_position_state_1.TimelineContext.Provider, { value: contexts.timelineContext, children: (0, jsx_runtime_1.jsx)(timeline_position_state_1.SetTimelineContext.Provider, { value: contexts.setTimelineContext, children: (0, jsx_runtime_1.jsx)(Sequence_1.SequenceContext.Provider, { value: contexts.sequenceContext, children: children }) }) }) }) }) }) }) }));
|
|
60
72
|
};
|
|
61
73
|
exports.RemotionContextProvider = RemotionContextProvider;
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remotion",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-newpathfunctions.13+40cc970bd",
|
|
4
4
|
"description": "Render videos in React",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"scripts": {
|
|
9
|
+
"prepublishOnly": "node ensure-correct-version.js && cp ../../README.md .",
|
|
9
10
|
"lint": "eslint src --ext ts,tsx",
|
|
10
|
-
"test": "
|
|
11
|
+
"test": "vitest --run",
|
|
11
12
|
"build": "tsc -d",
|
|
12
|
-
"watch": "tsc -w"
|
|
13
|
-
"prerelease": "cp ../../README.md ."
|
|
13
|
+
"watch": "tsc -w"
|
|
14
14
|
},
|
|
15
15
|
"repository": {
|
|
16
16
|
"url": "https://github.com/remotion-dev/remotion"
|
|
@@ -25,35 +25,45 @@
|
|
|
25
25
|
"react-dom": ">=16.8.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@jonny/eslint-config": "3.0.
|
|
29
|
-
"@testing-library/react": "13.
|
|
30
|
-
"@types/jest": "^27.4.0",
|
|
28
|
+
"@jonny/eslint-config": "3.0.266",
|
|
29
|
+
"@testing-library/react": "13.3.0",
|
|
31
30
|
"@types/node": "^16.7.5",
|
|
32
|
-
"@types/react": "18.0.
|
|
33
|
-
"@types/react-dom": "18.0.
|
|
31
|
+
"@types/react": "18.0.26",
|
|
32
|
+
"@types/react-dom": "18.0.10",
|
|
34
33
|
"@types/webpack-env": "^1.16.0",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
34
|
+
"@vitejs/plugin-react": "^2.0.0",
|
|
35
|
+
"eslint": "8.25.0",
|
|
36
|
+
"jsdom": "20.0.1",
|
|
37
|
+
"prettier": "^2.7.1",
|
|
38
38
|
"prettier-plugin-organize-imports": "^2.3.4",
|
|
39
39
|
"react": "^18.0.0",
|
|
40
40
|
"react-dom": "^18.0.0",
|
|
41
41
|
"react-test-renderer": "^18.0.0",
|
|
42
42
|
"rimraf": "^3.0.2",
|
|
43
|
-
"ts-jest": "^27.0.5",
|
|
44
43
|
"typescript": "^4.7.0",
|
|
45
|
-
"
|
|
44
|
+
"vitest": "0.24.3",
|
|
45
|
+
"webpack": "5.74.0"
|
|
46
46
|
},
|
|
47
47
|
"keywords": [
|
|
48
48
|
"remotion",
|
|
49
49
|
"ffmpeg",
|
|
50
50
|
"video",
|
|
51
51
|
"react",
|
|
52
|
-
"puppeteer",
|
|
53
52
|
"player"
|
|
54
53
|
],
|
|
55
54
|
"publishConfig": {
|
|
56
55
|
"access": "public"
|
|
57
56
|
},
|
|
58
|
-
"
|
|
57
|
+
"exports": {
|
|
58
|
+
".": "./dist/index.js",
|
|
59
|
+
"./version": "./dist/version.js"
|
|
60
|
+
},
|
|
61
|
+
"typesVersions": {
|
|
62
|
+
">=1.0": {
|
|
63
|
+
"version": [
|
|
64
|
+
"dist/version.d.ts"
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"gitHead": "40cc970bd20f2c9fde0c1644f1c9f33cd47f3dc7"
|
|
59
69
|
}
|
package/.turbo/turbo-build.log
DELETED
|
@@ -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"}
|