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