Video streaming 如何在h264中找到任何I/B/P帧?

Video streaming 如何在h264中找到任何I/B/P帧?,video-streaming,h.264,mpeg-4,bytestream,Video Streaming,H.264,Mpeg 4,Bytestream,我需要在h264字节流中找到任何(I/B/p)新帧 我听说了NAL header,但我有一条奇怪的小溪: 00 00 00 01 09 F0 00 00 00 01 67 64 00 1E AC B2 01 40 5F F2 E0 22 00 00 07 D2 00 01 D4 C0 1E 2C 5C 90 00 00 00 01 68 EB C3 CB 22 C0 00 00 01 06 05 FF 00 00 01之间的0x09 0xF0是什么意思 如何检测新帧(任何I/B/P)

我需要在h264字节流中找到任何(I/B/p)新帧

我听说了NAL header,但我有一条奇怪的小溪:

00 00 00 01 09 F0 00 00 00 01 
67 64 00 1E AC B2 01 40 5F F2 
E0 22 00 00 07 D2 00 01 D4 C0 
1E 2C 5C 90 00 00 00 01 68 EB 
C3 CB 22 C0 00 00 01 06 05 FF 
  • 00 00 01之间的0x09 0xF0是什么意思
  • 如何检测新帧(任何I/B/P)
  • 从哪里开始


    首先
    0x09 0xF0
    是一个访问单元分隔符。这是您的帧的开始。但请注意,这是一个可选的NALU,可能不存在于所有帧中。其次,一个帧可以由多个切片组成,每个切片都可以是I/P/B类型。因此,可以找到一个包含所有三种切片类型的帧。我可以更详细地介绍如何确定切片类型,以及如果没有AUD,如何找到帧的开始。但这两个主题都非常大,应该(也可能确实)有自己的堆栈溢出问题。

    看起来您真的了解h264编码的工作原理,也许您对我的问题有一个答案:我必须编写mpeg ts muxer,并且需要设置PTS(没有DTS,-流没有b帧)。我可以简单地生成它,还是需要解析h264?顺便说一下,我的输出流中不需要音频,-如果这很重要的话。AVC比特流不包含任何时间戳,所以您可以自己生成。但是,您应该检查SPS中的VUI参数,如果设置了fixed_frame_rate_标志,您的pts应该精确增加90000*((2*num_units_in_tick)/time_scale)。除非框架被放下。