使用ffmpeg搜索电影原子

时间:2013-10-04 12:34:25

标签: video ffmpeg h.264 quicktime

如何使用ffmpeg从文件中检索电影原子?例如,我需要avcC个原子字节。如果有一些解决方案,我宁愿不自己编码解析器。

http://www.ffmpeg.org/doxygen/0.6/mov_8c-source.html似乎提供了一些API,但我不熟悉ffmpeg。

或者是否有直接API来获取SPS和PPS NAL?

1 个答案:

答案 0 :(得分:1)

我不知道FFmpeg是否提供了直接的API来检索这些细节。但是,这是一个非常懒惰的解决方案,应该允许您从QuickTime / MP4文件中获取avcC原子:

  1. 打开文件并在顶级原子结构中找到moov原子(遍历mdatftyp以及其他一些原子。)
  2. 将整个moov原子加载到内存中(它很容易适合)。
  3. 执行'avcC'的字符串搜索。
  4. 这不是最干净的方法,但它可能会奏效。为了额外的理智(如果字符串'avcC'出现在原子的其他地方,就像在元数据原子中一样),检查'avcC'字符串前面的4个字节,将它们视为一个32位的大端数字,表示avcC原子的长度,并确保它们有意义。我刚检查了一些H.264 .MP4文件,根据经验,长度约为43-45字节。至少,确保原子的长度大于8(最小原子大小),并且不会碰到moov原子的末端。