<OffthreadVideo>
从 Remotion 3.0.11 开始可用
此组件导入并显示视频,类似于 <Video/>
,但在渲染期间,从视频中提取精确的帧并在 <Img>
标签中显示。此提取过程在浏览器外部使用 FFmpeg 进行。
此组件旨在解决默认 <Video>
元素的限制。请参见:<Video>
vs <OffthreadVideo>
.
示例
tsx
import {AbsoluteFill ,OffthreadVideo ,staticFile } from "remotion";export constMyVideo = () => {return (<AbsoluteFill ><OffthreadVideo src ={staticFile ("video.webm")} /></AbsoluteFill >);};
tsx
import {AbsoluteFill ,OffthreadVideo ,staticFile } from "remotion";export constMyVideo = () => {return (<AbsoluteFill ><OffthreadVideo src ={staticFile ("video.webm")} /></AbsoluteFill >);};
您也可以从 URL 加载视频:
tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo src ="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" /></AbsoluteFill >);};
tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo src ="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" /></AbsoluteFill >);};
属性
src
要渲染的视频的 URL。可以是远程 URL 或使用 staticFile()
引用的本地文件。
startFrom?
将在视频开头删除一部分。
在以下示例中,我们假设合成的 fps
为 30
。
通过传递 startFrom={60}
,播放立即开始,但视频的前 2 秒将被裁剪掉。
通过传递 endAt={120}
,文件中 4 秒标记后的任何视频将被裁剪掉。
视频将播放从 00:02:00
到 00:04:00
的范围,意味着视频将播放 2 秒。
tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo src ={staticFile ("video.webm")}startFrom ={60}endAt ={120}/></AbsoluteFill >);};
tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo src ={staticFile ("video.webm")}startFrom ={60}endAt ={120}/></AbsoluteFill >);};
endAt?
在视频结尾删除一部分。请参见 startAt
以获取解释。
transparent?
v4.0.0
如果设置为 true
,帧将被提取为 PNG,从而实现透明度,但也会减慢渲染速度。
如果设置为 false
(默认),帧将被提取为位图(BMP),这更快。
volume?
允许您控制整个轨道的音量或根据每帧更改音量。请参阅 使用音频 指南以了解如何使用。
使用静态音量的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo volume ={0.5}src ={staticFile ("video.webm")} /></AbsoluteFill >);};
使用静态音量的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo volume ={0.5}src ={staticFile ("video.webm")} /></AbsoluteFill >);};
在 100 帧内逐渐增加音量的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo volume ={(f ) =>interpolate (f , [0, 100], [0, 1], {extrapolateLeft : "clamp" })}src ={staticFile ("video.webm")}/></AbsoluteFill >);};
在 100 帧内逐渐增加音量的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo volume ={(f ) =>interpolate (f , [0, 100], [0, 1], {extrapolateLeft : "clamp" })}src ={staticFile ("video.webm")}/></AbsoluteFill >);};
在 iOS Safari 上,无法精确地更改媒体标签的音量。
浏览器只会尊重值 0
和 1
。
loopVolumeCurveBehavior?
v4.0.142
控制在使用 volume
回调函数并将 OffthreadVideo
包装在 <Loop>
中时返回的 frame
。
可以是 "repeat"
(默认值,在每次迭代时从 0 开始)或 "extend"
(保持 增加帧)。
style?
您可以传递任何您可以传递给本机 HTML 元素的样式。请记住,在渲染期间,<OffthreadVideo>
渲染一个 <Img>
标签,但在预览期间使用 <video>
标签。
tsx
export constMyComposition = () => {return (<AbsoluteFill ><Img src ={staticFile ("video.webm")}style ={{height : 720,width : 1280 }}/></AbsoluteFill >);};
tsx
export constMyComposition = () => {return (<AbsoluteFill ><Img src ={staticFile ("video.webm")}style ={{height : 720,width : 1280 }}/></AbsoluteFill >);};
allowAmplificationDuringRender?
v3.3.17
使 volume
大于 1
的值在渲染期间产生放大效果。
在预览期间,音量将被限制为 1
,因为浏览器无法放大音频。
name?
v4.0.71
在 Remotion Studio 时间轴中显示为序列标签的名称。此属性仅用于帮助您在时间轴中跟踪项目。
toneFrequency?
v4.0.47
调整音频的音调 - 仅在渲染期间应用。
接受介于 0.01
和 2
之间的数字,其中 1
代表原始音调。小于 1
的值会降低音调,而大于 1
的值会增加音调。
toneFrequency
为 0.5 会将音调降低一半,而 1.5
会将音调增加 50%。
onError?
处理播放视频时出现的错误。从 v3.3.89 开始,如果传递了一个 onError
回调,则不会抛出异常。以前,无法捕获错误。
playbackRate?
v2.2.0
控制视频的播放速度。1
是默认值,表示正常速度,0.5
会减慢视频速度,使其变为原来的两倍长,2
会加快视频速度,使其变为原来的两倍快。```
虽然 Remotion 不限制可能的播放速度范围,在开发模式下使用 HTMLMediaElement.playbackRate
API,对极端值会抛出错误。在撰写本文时,Google Chrome 如果播放速度低于 0.0625
或高于 16
会抛出异常。
视频以两倍速播放的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo playbackRate ={2}src ={staticFile ("video.webm")} /></AbsoluteFill >);};
视频以两倍速播放的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo playbackRate ={2}src ={staticFile ("video.webm")} /></AbsoluteFill >);};
muted?
您可以通过添加 muted
属性来消除视频的音频:
静音视频的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo muted src ="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"/></AbsoluteFill >);};
静音视频的示例tsx
export constMyComposition = () => {return (<AbsoluteFill ><OffthreadVideo muted src ="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"/></AbsoluteFill >);};
acceptableTimeShiftInSeconds?
v3.2.42
在 Studio 或 Remotion Player 中,如果视频与 Remotion 的内部时间差异过大 - 无论是由于视频加载还是页面无法实时跟上,Remotion 将会寻找视频。默认情况下,如果遇到 0.45
秒的时间差,将触发一次搜索。使用此属性,您可以自定义阈值。
allowAmplificationDuringRender?
v3.3.17
使 volume
大于 1
的值在渲染过程中产生放大效果。