2012-07-30 58 views
4

我试图从iPhone上的MOV文件获取h.264 NAL单元, 为了将RTP h.264视频从iPhone相机传输到服务器。从quicktime MOV文件解析h.264 NAL单元

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

我已经解析的MOV文件到原子,根据Apple's MOV structure reference但现在我需要提取从的mdat原子NAL单元以便它收拾RTP和流它。

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

+0

Steve McFarlin(http://stackoverflow.com/users/227021/steve-mcfarlin)有这样一个库。 – magma 2012-08-04 01:58:32

+0

@avishic你最终如何解决这个问题?您是否手动使用任何库或解析框架?你能在这里回答你的问题吗?谢谢。 – Anastasia 2013-02-11 09:02:32

+1

@Anastasia还没有完全解决它。如果解析mdat包含多个视频通道,它似乎非常复杂。但是,如果它确实包含单个视频通道,那么mdat仅仅是NAL单元的集合。所以根据它们的头文件(mdat和nal单元),你可以知道每个nal单元中有多少字节并且自己解析它。不理想,但是一个工作解决方案。 – avishic 2013-02-11 13:10:23

回答

2

mdat原子是一个很大的数据块,它本身没有意义。要理解它的内容,首先必须解析moov原子。你说你将MOV文件分解为原子 - 你是否深入挖掘了moov,mdat,ftyp和其他一些顶级原子?您必须解析moov原子(大量原子)以获取您需要的数据(附加到H.264 stsd原子的额外编解码器数据,该数据与来自H.264块的数据相结合,这些数据由stco索引或co64原子)。

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

+2

嗨迈克,我不能使用其他库,因为所有的图书馆都假设文件是​​密封的,而我正在解析一个文件,这是我在阅读时写入的。如果我只使用一个H264视频轨道,从'mdat'获取NAL单元并不难 - 它是唯一的东西(实际上它们的头部被它们的大小所取代)。我怎样才能使用'moov'原子信息来解析一个文件也有音频?有什么好的参考?谢谢! – avishic 2012-08-08 13:19:08