Ios 从quicktime MOV文件解析h.264 NAL单元

Ios 从quicktime MOV文件解析h.264 NAL单元,ios,h.264,quicktime,rtp,mov,Ios,H.264,Quicktime,Rtp,Mov,我试图从iPhone上的MOV文件中获取h.264 NAL单元, 为了将h.264视频从iPhone摄像头传输到服务器 苹果的API不允许从相机输出直接访问编码的比特流,所以我只能在编写MOV文件时访问它 根据,我已经将MOV文件解析为原子,但现在我需要从mdat原子中提取NAL单位,以便将其打包到RTP并流式传输 我很高兴在这里得到一些帮助,因为我找不到有关mdat结构的文档。谢谢 mdat原子是一个巨大的数据块,其本身毫无意义。要理解其内容,必须首先解析moov原子。你说你把MOV文件分解成

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

苹果的API不允许从相机输出直接访问编码的比特流,所以我只能在编写MOV文件时访问它

根据,我已经将MOV文件解析为原子,但现在我需要从mdat原子中提取NAL单位,以便将其打包到RTP并流式传输


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

mdat原子是一个巨大的数据块,其本身毫无意义。要理解其内容,必须首先解析moov原子。你说你把MOV文件分解成了原子——你有没有比moov、mdat、ftyp和其他一些顶级原子更深入的研究?您必须解析moov原子(其中有很多原子)以获得所需的数据(附加到H.264 stsd原子的额外编解码器数据,该数据与由stco或co64原子索引的H.264块中的数据相结合)


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

Steve McFarlin()有这样一个库。@avishic您最终是如何解决这个问题的?您是否使用任何库或手动解析帧?你能把你的问题的答案贴在这里吗?谢谢。@Anastasia还没有完全解决它。如果mdat包含多个视频通道,则解析mdat似乎非常复杂。但是,如果它确实包含单个视频通道,那么mdat只是NAL单元的集合。因此,根据它们的头(mdat&nal单元),您可以知道每个nal单元中有多少字节,并自己解析它。不太理想,但这是一个可行的解决方案。@avishic那么,现在你可以从硬件编码器获得H.264帧了,对吗?你能分享你的代码吗?请与我联系(查看我的个人资料)。@Anastasia抱歉,我无法共享该代码,因为它具有合法权利。但是请查看上面问题中有关atoms&mdat的苹果文档的链接。嗨,迈克,我不能使用其他库,因为所有库都假设文件是密封的,我正在解析一个在阅读时写入的文件。如果我只使用一个H264视频曲目,那么从“mdat”中获取NAL单元并不困难——这是其中唯一的内容(实际上,它们的标题由它们的大小替换)。如何使用“moov”atom信息来解析包含音频的文件?有好的参考资料吗?谢谢