我对H264视频流的格式感到困惑。简单地说,我已经从ISO规范和其他来源读取了H264 NAL单元由起始代码分隔并且不包含长度信息 AND 他们不具有开始代码并由4个字节(我知道这可以改变)引导,给出NAL单元的长度。为了让事情更加混乱,我一直在查看Spydroid中的代码,它似乎可以解决这两种情况。我有两种不同的格式,如果有的话,任何人都可以指导我解释这两种格式的信息。
提供一些背景知识,以帮助我从Android相机进行直播。流将在设备上拆分为RTP,或作为原始MP4数据发送,以便在服务器上拆分。无论哪种方式,流都将是实时的,因此没有MOOV信息可以找到音频和视频帧。我相信我已经找到了很多项目,但我对H264流中应该看到的内容感到困惑。如果长度确实包含在NAL单位中,那肯定对我有帮助。
答案 0 :(得分:3)
就H.264比特流而言。它被分成NAL单元,由startcode前缀分隔。即
startcode_prefix NALUnit startcode_prefix NALUnit .....
其中没有长度信息,因为它是比特流。您必须在下一个NAL单元的比特流中查找起始码模式(0x000001或0x00000001)。
答案 1 :(得分:2)
根据以下链接,有H.264子类型。一些具有流中的起始码,而另一些具有1,2或4个字节长度的字段。
http://msdn.microsoft.com/en-us/library/windows/desktop/dd757808(v=vs.85).aspx
所以看起来我需要检查子类型以确定如何解析流。