3

我对 H264 视频流的格式感到困惑。简而言之,我从 ISO 规范和其他来源中读到 H264 NAL 单元由起始代码分隔并且不包含长度信息并且它们没有起始代码并且由 4 个字节引导(我知道这可能会有所不同) 给出 NAL 单元的长度。为了让事情更加混乱,我一直在查看Spydroid中的代码,它似乎可以解决这两种情况。是否有两种不同的格式我混淆了,如果有的话,任何人都可以指导我了解解释这两种格式的信息。

背景

为了提供一些背景信息,以防它有助于我从 Android 相机进行实时流式传输。流将在 RTP 设备上拆分或作为原始 MP4 数据发送以在服务器上拆分。无论哪种方式,流都将是实时的,因此将没有 MOOV 信息来查找音频和视频帧。我相信我已经弄清楚了该项目的大部分内容,但我基本上对我应该在 H264 流中看到的内容感到困惑。如果长度确实包含在 NAL 单元中,那肯定会对我有所帮助。

4

2 回答 2

3

就 H.264 比特流而言。它被分成 NAL 单元,由 startcode 前缀分隔。IE

startcode_prefix  NALUnit    startcode_prefix  NALUnit .....  

其中没有长度信息,因为它是比特流。您必须在比特流中寻找下一个 NAL 单元的起始码模式(0x000001 或 0x00000001)。

此处的更多信息:H264 解析 - 切片标头检测

于 2012-06-15T18:57:32.343 回答
2

根据以下链接,有 H.264 子类型。有些在流中有起始码,有些则有 1、2 或 4 字节长度字段。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd757808(v=vs.85).aspx

所以看起来我需要检查子类型以确定如何解析流。

于 2012-06-16T04:24:39.867 回答