wrapper - 确定媒体文件编解码器的 Surefire 方法

标签 wrapper codec

我正在寻找一种确定音频或视频文件中使用的编解码器的可靠方法。我当前使用的两件事是文件扩展名(显而易见)和通过在文件上运行“file -ib”确定的 mime 类型。

这似乎并没有让我完全明白:大量格式是“包装”格式,隐藏了其中使用的确切编解码器 - 例如,“.ogg”文件可以在内部使用 Vorbis、Speex 或FLAC 编解码器。它们的 MIME 类型通常也隐藏在“application/ogg”或类似内容下。

"file"程序显然能够告诉我使用了哪个编解码器,但它返回了人类可读的散文:

kb.ogg: Ogg data, Vorbis audio, stereo, 44100 Hz, ~0 bps

因此,以编程方式使用它是很危险的。

我本质上要问的是:是否有一个脚本(任何语言)可以遍历这些包装格式并告诉我文件的内容是什么?

最佳答案

ffmpeg包括一个名为 libavformat 的库,它可以打开和解复用几乎任何媒体格式。显然这比您实际需要的要多,但我认为您找不到其他如此完整的东西。我自己就用过它,取得了巨大的成功。看看this article进行介绍。这些库还有一些常见脚本语言的绑定(bind),例如 python .

(如果您不想使用该库构建某些内容,您可以使用常规的 ffmpeg 二进制文件。)

关于wrapper - 确定媒体文件编解码器的 Surefire 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2037407/

相关文章:

java - 为什么 Primitives 的包装类没有 setter?

generics - 类型成员的包装

linux - 免费/开放 h.264 视频解码库? (非 GPL)

ubuntu - AVCONV 截屏音频跳过

video - ffmpeg 从 H.264 转换 (High 4 :4:4 Profile) to H. 264 (Main Profile)

ffmpeg - 无损ffmpeg转换/编码

java - 使用 JSmooth 包装 .jar 时字符串搜索中断

c++ - 如何在 C++/CLI 中包装 C 库回调

c# - 将图像从 OpenCV/C++ 传递回 .NET C#

c++ - 对音频信号进行编码是否有任何限制?