Skip to main content

parseMedia() vs. getVideoMetadata()

有多种方法可以获取有关媒体的信息,例如:

🌐 There are multiple ways to retrieve information about a media such as:

  • 持续时间
  • 宽度和高度
  • 编解码器,容器,帧率

推荐:parseMedia()

🌐 Recommendation: parseMedia()

parseMedia() 是由 Remotion 开发的一个使用 JavaScript 解析视频文件的库。

优势

🌐 Advantages

✅ 它支持比 getVideoMetadata() 更多的容器:.mp4.mov.webm.mkv.avi.m3u8.ts.mp3.wav.aac.m4a.flac ✅ 它支持获取在 iPhone 上拍摄的视频的尺寸,这是在 Linux 上使用 getVideoMetadata() 时的常见问题 ✅ 它还可以在 Node.js 和 Bun 的服务器上运行 ✅ 它只获取你请求的信息,因此需要读取更少的字节来获得所需信息

缺点

🌐 Disadvantages

❌ 在浏览器中使用时:资源需要来自相同来源或启用 CORS。

getVideoMetadata() 来自 @remotion/media-utils

🌐 getVideoMetadata() from @remotion/media-utils

getVideoMetadata() 将在浏览器中挂载一个 <video> 标签,并在其可用后返回元数据。

优势

🌐 Advantages

✅ 在浏览器中,它不要求资源启用 CORS 或位于同一源。

缺点

🌐 Disadvantages

❌ 它只能在浏览器中使用。
❌ 它不支持某些编解码器,例如 iPhone 视频使用的编解码器。

getVideoMetadata() 来自 @remotion/renderer

🌐 getVideoMetadata() from @remotion/renderer

[getVideoMetadata()](/docs/renderer/get-video-metadata) 将通过 Rust 接口使用 FFmpeg 读取元数据。

优势

🌐 Advantages

✅ 最广泛的格式兼容性。

缺点

🌐 Disadvantages

❌ 它只在 Node.js 和 Bun 中有效,所以你不能在 calculateMetadata() 中使用它。
❌ 它调用了一个 Rust 二进制文件,因此打包它并不简单。

另请参阅

🌐 See also