【问题标题】:Parsing h.264 NAL units from a quicktime MOV file从 quicktime MOV 文件中解析 h.264 NAL 单元
【发布时间】:2012-08-04 09:18:52
【问题描述】:

我正在尝试从 iPhone 上的 MOV 文件中获取 h.264 NAL 单元, 为了将 iPhone 摄像头中的 h.264 视频 RTP 传输到服务器。

Apple 的 API 不允许直接访问来自相机输出的编码比特流,因此我只能在写入 MOV 文件时访问它。

根据Apple's MOV structure reference,我已将 MOV 文件解析为 Atoms,但现在我需要从 mdat atom 中提取 NAL 单元 strong> 以便将其打包到 RTP 并流式传输。

我很高兴在这里得到一些帮助,因为我找不到关于 mdat 结构 的文档。谢谢!

【问题讨论】:

  • Steve McFarlin (stackoverflow.com/users/227021/steve-mcfarlin) 有这样一个库。
  • @avishic 你最后是怎么解决这个问题的?您是否使用任何库或手动解析帧?你能在这里发布你的问题的答案吗?谢谢。
  • @Anastasia 还没有完全解决。如果 mdat 包含多个视频通道,则解析 mdat 似乎非常复杂。但是,如果它确实包含单个视频通道,则 mdat 只是 NAL 单元的集合。所以根据他们的头文件(mdat & nal 单元)你可以知道每个 nal 单元有多少字节并自己解析。不理想,但可行的解决方案。
  • @avishic 那么,现在您可以从硬件编码器获取 H.264 帧,对吧?你能分享你的代码吗?请联系我(查看我的个人资料)。
  • @Anastasia 抱歉,我不能分享代码,因为它具有合法权利。但是请查看上述问题中有关 Atom 和 mdat 的 Apple 文档的链接。

标签: ios h.264 quicktime rtp mov


【解决方案1】:

mdat 原子是一大块数据,其本身没有任何意义。要了解它的内容,必须首先解析 moov 原子。您说您将 MOV 文件分解为原子——您是否比 moov、mdat、ftyp 和其他一些顶级原子更深入?您必须解析 moov 原子(其中有很多原子)才能获得所需的数据(附加到 H.264 stsd 原子的额外编解码器数据与来自 H.264 块的数据相结合,这些数据由 stco 索引或 co64 原子)。

或者使用已经为您完成所有繁琐工作的库。

【讨论】:

  • 嗨,迈克,我不能使用其他库,因为所有库都假定文件是密封的,并且我正在解析一个在我阅读时写入的文件。如果我只使用一个 H264 视频轨道,从“mdat”中获取 NAL 单元并不难——这是唯一的东西(实际上它们的标题被它们的大小替换)。如何使用“moov”原子信息来解析包含音频的文件?有什么好的参考吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 2012-08-06
相关资源
最近更新 更多