Skip to main content

getVideoMetadata()

@remotion/media-utils 包中的辅助函数之一。

note

此函数用于浏览器。对于 Node.js,请改用 @remotion/renderer 中的 getVideoMetadata()

接受指向视频的 src,加载它并返回指定源的元数据。

参数

src

指向资源的字符串。

返回值

Promise<VideoMetadata> - 包含视频数据信息的对象:

  • durationInSeconds: number 视频的持续时间(秒)。
  • width: number 视频的宽度(像素)。
  • height: number 视频的高度(像素)。
  • aspectRatio: number 视频宽度除以视频高度。
  • isRemote: boolean 视频是本地导入还是来自不同来源。
warning

durationInSeconds 可能返回 Infinity。如果视频的持续时间未存储在文件开头,则会发生这种情况。
例如,对于使用网络摄像头录制并在录制仍在进行时进行编码的视频,就是这种情况。
确保处理用户提供的视频中的 Infinity,并使用 FFmpeg 重新编码视频以将持续时间移至文件开头。

示例

tsx
import { getVideoMetadata } from "@remotion/media-utils";
 
await getVideoMetadata(staticFile("video.mp4")); /* {
durationInSeconds: 100.00,
width: 1280,
height: 720,
aspectRatio: 1.77777778,
isRemote: false
} */
await getVideoMetadata("https://example.com/remote-audio.webm"); /* {
durationInSeconds: 40.213,
width: 1920,
height: 1080,
aspectRatio: 1.77777778,
isRemote: true
} */
tsx
import { getVideoMetadata } from "@remotion/media-utils";
 
await getVideoMetadata(staticFile("video.mp4")); /* {
durationInSeconds: 100.00,
width: 1280,
height: 720,
aspectRatio: 1.77777778,
isRemote: false
} */
await getVideoMetadata("https://example.com/remote-audio.webm"); /* {
durationInSeconds: 40.213,
width: 1920,
height: 1080,
aspectRatio: 1.77777778,
isRemote: true
} */

缓存行为

此函数会对其返回的结果进行记忧。 如果多次将相同参数传递给 src,它将从第二次开始返回缓存版本,而不管文件是否已更改。要清除缓存,必须重新加载页面。

参见