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";awaitgetVideoMetadata (staticFile ("video.mp4")); /* {durationInSeconds: 100.00,width: 1280,height: 720,aspectRatio: 1.77777778,isRemote: false} */awaitgetVideoMetadata ("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";awaitgetVideoMetadata (staticFile ("video.mp4")); /* {durationInSeconds: 100.00,width: 1280,height: 720,aspectRatio: 1.77777778,isRemote: false} */awaitgetVideoMetadata ("https://example.com/remote-audio.webm"); /* {durationInSeconds: 40.213,width: 1920,height: 1080,aspectRatio: 1.77777778,isRemote: true} */
缓存行为
此函数会对其返回的结果进行记忧。
如果多次将相同参数传递给 src
,它将从第二次开始返回缓存版本,而不管文件是否已更改。要清除缓存,必须重新加载页面。