2013-10-04 17 views

回答

1

我不知道FFmpeg是否提供直接API来检索这些细节。但是,这里有一个令人难以置信的懒惰的解决方案,应该让你抓住从一个QuickTime/MP4文件avcC原子:

  1. 打开文件,并找到在顶层原子结构(中mdat遍历moov原子,ftyp ,也许还有其他一些原子)。
  2. 将整个moov原子加载到内存中(它很容易适合)。
  3. 执行'avcC'的字符串搜索。

这不是最干净的方法,但它可能会工作。为了获得额外的正确性(以防万一字符串'avcC'出现在原子中的其他地方,如元数据原子中),请检查'avcC'字符串前面的4个字节,将它们视为一个大端32位数字,原子的长度为avcC,并确保它们有意义。我只检查了一些H.264.MP4文件,经验上它的长度大约是43-45字节。至少要确保原子的长度大于8(最小原子尺寸),并且不会碰撞原子的末端。