我对 H264 视频流的格式感到困惑。简单地说,我从 ISO 规范和其他来源中读到,H264 NAL 单元由起始代码分隔,不包含长度信息 和 ,它们 没有 有起始代码,并由 4 个字节引导(我知道这可能会有所不同)给出 NAL 单元的长度。为了让事情更加困惑,我一直在查看 Spydroid 中的代码,它似乎解决了这两种情况。是否有两种不同的格式让我混淆了,如果有的话,任何人都可以指导我了解解释这两种格式的信息。
背景
提供一些背景信息,以防它有助于我从 Android 相机进行实时流式传输。该流将在设备上拆分以用于 RTP,或者作为要在服务器上拆分的原始 MP4 数据发送。无论哪种方式,流都将是实时的,因此将没有 MOOV 信息来查找音频和视频帧。我相信我已经弄清楚了该项目的大部分内容,但我基本上对我应该在 H264 流中看到的内容感到困惑。如果长度确实包含在 NAL 单元中,它肯定会对我有所帮助。
最佳答案
就 H.264 比特流而言。它被分成 NAL 单元,由 startcode 前缀分隔。 IE。
startcode_prefix NALUnit startcode_prefix NALUnit .....
里面没有长度信息,因为它是一个比特流。您必须在下一个 NAL 单元的比特流中寻找起始码模式(0x000001 OR 0x00000001)。
更多信息:H264 parsing - slice header detection
关于android - H264基本流格式困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11043505/