getVideoMetadata()
Part of the @remotion/media-utils package of helper functions.
Does not support H.265 videos on Linux and also fails on some other formats. Soon to be deprecated.
Suggestion: Use parseMedia() to get video metadata instead.
Only works in the browser.
Takes a src to a video, loads it and returns metadata for the specified source.
Arguments
src
A string pointing to an asset.
Return value
Promise<VideoMetadata> - object with information about the video data:
durationInSeconds:numberThe duration of the video in seconds.width:numberThe width of the video in pixels.height:numberThe height of the video in pixels.aspectRatio:numberVideo width divided by video height.isRemote:booleanWhether the video was imported locally or from a different origin.
durationInSeconds may return Infinity. This happens if the duration of the video is not stored in the beginning of the file.
This is for example the case for videos that are recorded with a webcam and being encoded while the recording is still in progress.
Ensure handling for Infinity for user-provided videos and re-encode videos with FFmpeg to move the duration to the beginning of the file.
Example
tsximport {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} */
Caching behavior
This function is memoizing the results it returns.
If you pass in the same argument to src multiple times, it will return a cached version from the second time on, regardless of if the file has changed. To clear the cache, you have to reload the page.