Skip to main content

getCanExtractFramesFast()

warning

从 v4.0 版本开始,帧始终可以快速提取,因此该函数已被移除。本文档中的信息仅适用于 Remotion 的旧版本,并保留供仍在使用这些版本的人使用。

自 v3.3.2 版本起可用,v4.0 版本中移除 - @remotion/renderer 包的一部分。

探测在使用 <OffthreadVideo> 时是否可以高效提取视频帧。

ts
// @module: ESNext
// @target: ESNext
import { getCanExtractFramesFast } from "@remotion/renderer";
const result = await getCanExtractFramesFast({
src: "/var/path/to/video.mp4",
});
console.log(result.canExtractFramesFast); // false
console.log(result.shouldReencode); // true
ts
// @module: ESNext
// @target: ESNext
import { getCanExtractFramesFast } from "@remotion/renderer";
const result = await getCanExtractFramesFast({
src: "/var/path/to/video.mp4",
});
console.log(result.canExtractFramesFast); // false
console.log(result.shouldReencode); // true
info

getCanExtractFramesFast() 传递绝对路径。不支持 URL。

使用此 API 的时机

如果您正在使用 <OffthreadVideo>,当包含的视频不包含足够的元数据以高效提取视频的某一帧时,您可能会收到警告 "使用缓慢的方法提取帧"。这可能导致渲染变慢。

使用此 API,您可以探测此问题是否影响您的视频文件。它将尝试提取视频的最后一帧,如果成功,则您的视频不受影响。否则,canExtractFramesFast 将为 false

根据结果采取行动

canExtractFramesFastfalse 时,您应检查 shouldReencode 标志。如果为 true,则可以重新编码视频以加快渲染速度。请注意,并非总是重新编码视频比处理缓慢的渲染更快。

VP8 编解码器的视频根本不支持快速帧提取,因此即使 canExtractFramesFast 为 false,shouldReencode 也可能为 false。

重新编码视频

您可以使用 FFmpeg 重新编码视频:

sh
ffmpeg -i inputvideo.mp4 outputvideo.mp4
sh
ffmpeg -i inputvideo.mp4 outputvideo.mp4

参数

包含以下一个或多个选项的对象:

src

指向视频文件。必须是绝对文件路径。

ffmpegExecutable?

v4.0 版本中已移除

string - 可选

一个绝对路径,用于覆盖要使用的 ffmpeg 可执行文件。

ffprobeExecutable?

在 v4.0 中已移除,_string,可选

一个绝对路径,用于覆盖要使用的 ffprobe 可执行文件。

返回值

返回一个解析为具有以下参数的对象的 Promise:

  • canExtractFramesFast: boolean 是否从视频中提取帧速度快。
  • shouldReencode: boolean 视频是否可以重新编码以加快渲染速度。