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 重新编码视频:
shffmpeg -i inputvideo.mp4 outputvideo.mp4
shffmpeg -i inputvideo.mp4 outputvideo.mp4
参数
包含以下一个或多个选项的对象:
src
指向视频文件。必须是绝对文件路径。
ffmpegExecutable?
ffmpegExecutable?v4.0 版本中已移除
string - 可选
一个绝对路径,用于覆盖要使用的 ffmpeg 可执行文件。
ffprobeExecutable?
ffprobeExecutable?在 v4.0 中已移除,_string,可选
一个绝对路径,用于覆盖要使用的 ffprobe 可执行文件。
返回值
返回一个解析为具有以下参数的对象的 Promise:
canExtractFramesFast: boolean 是否从视频中提取帧速度快。shouldReencode: boolean 视频是否可以重新编码以加快渲染速度。