【问题标题】:h264 syntax (P frames syntax details)h264 语法(P 帧语法详细信息)
【发布时间】:2011-04-22 13:29:13
【问题描述】:

我正在解析 h264 NAL 单元。在我的序列中 - 有带有图片参数集、序列参数集、I 帧(它们也是 IDR)和 P 帧(I 和 P 帧由单个切片组成)的 NAL 单元。 (根本没有 B 帧)

所以我的 NAL 单元流看起来像:

[SPS] [PPS] [I(IDR)] [P] [P] [P] ... [P] [P] [SPS] [PPS] [I(IDR)] [P] [P] [P] ....

我的流中的每个 I 帧也是 IDR 帧,因此它的 frame_num 为 0(根据 h.264 标准)。

此外,每个 P 帧的 frame_num 每单位都比前一帧大。

但是,我对pic_order_cnt_lsb 感到困惑。

pic_order_cnt_lsb 代表什么?

按照我的顺序:

  • 如果P帧有frame_num==2它的 pic_order_cnt_lsb==4
  • 如果P帧有frame_num==3它的 pic_order_cnt_lsb==6
  • 如果P帧有frame_num==4它的 pic_order_cnt_lsb==8
  • 等等...(在我的情况下pic_order_cnt_lsb == 2*frame_num

为什么frame_numpic_order_cnt_lsb之间存在这种关联?

谢谢,

【问题讨论】:

    标签: c++ video video-streaming h.264


    【解决方案1】:

    看起来你有交错的数据。对于隔行扫描数据,一帧由两个场组成。每帧的另一个字段将具有 pic_order_cnt_lsb 的奇数值。

    pic_order_cnt_lsb 只是跟踪图片顺序的计数器的最低有效位。如果(如在典型的隔行扫描数据中)每帧有两张图片,那么 frame_num 的每次变化都会增加 2。如果您的流是渐进式的而不是隔行式的,则两者将一起递增。

    【讨论】:

      猜你喜欢
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多