getCanExtractFramesFast()
从 v4.0 版本开始,帧始终可以快速提取,因此该函数已被移除。本文档中的信息仅适用于 Remotion 的旧版本,并保留供仍在使用这些版本的人使用。
自 v3.3.2 版本起可用,v4.0 版本中移除 - @remotion/renderer
包的一部分。
探测在使用 <OffthreadVideo>
时是否可以高效提取视频帧。
ts
// @module: ESNext// @target: ESNextimport { getCanExtractFramesFast } from "@remotion/renderer";const result = await getCanExtractFramesFast({src: "/var/path/to/video.mp4",});console.log(result.canExtractFramesFast); // falseconsole.log(result.shouldReencode); // true
ts
// @module: ESNext// @target: ESNextimport { getCanExtractFramesFast } from "@remotion/renderer";const result = await getCanExtractFramesFast({src: "/var/path/to/video.mp4",});console.log(result.canExtractFramesFast); // falseconsole.log(result.shouldReencode); // true
向 getCanExtractFramesFast()
传递绝对路径。不支持 URL。
使用此 API 的时机
如果您正在使用 <OffthreadVideo>
,当包含的视频不包含足够的元数据以高效提取视频的某一帧时,您可能会收到警告 "使用缓慢的方法提取帧"。这可能导致渲染变慢。
使用此 API,您可以探测此问题是否影响您的视频文件。它将尝试提取视频的最后一帧,如果成功,则您的视频不受影响。否则,canExtractFramesFast
将为 false
。
根据结果采取行动
当 canExtractFramesFast
为 false
时,您应检查 shouldReencode
标志。如果为 true,则可以重新编码视频以加快渲染速度。请注意,并非总是重新编码视频比处理缓慢的渲染更快。
VP8 编解码器的视频根本不支持快速帧提取,因此即使 canExtractFramesFast
为 false,shouldReencode
也可能为 false。
重新编码视频
您可以使用 FFmpeg 重新编码视频:
sh
ffmpeg -i inputvideo.mp4 outputvideo.mp4
sh
ffmpeg -i inputvideo.mp4 outputvideo.mp4
参数
包含以下一个或多个选项的对象:
src
指向视频文件。必须是绝对文件路径。
ffmpegExecutable?
ffmpegExecutable?
v4.0 版本中已移除
string - 可选
一个绝对路径,用于覆盖要使用的 ffmpeg
可执行文件。
ffprobeExecutable?
ffprobeExecutable?
在 v4.0 中已移除,_string,可选
一个绝对路径,用于覆盖要使用的 ffprobe
可执行文件。
返回值
返回一个解析为具有以下参数的对象的 Promise:
canExtractFramesFast
: boolean 是否从视频中提取帧速度快。shouldReencode
: boolean 视频是否可以重新编码以加快渲染速度。