H264具有多个PPS和SPS

Pau*_*opf 13 decoder h.264

我有一张卡,它在每个I帧之前直接按顺序生成带有SPS(序列参数集)和PPS(图像参数集)的H264流.我看到大多数H264流在第一个I帧上包含PPS和SPS.

这是推荐的吗?解码器/复用器通常支持多个PPS和SRS吗?

Mar*_*ann 29

H.264有多种流格式.一种变体称为"附录B".

(AUD)(SPS)(PPS)(I-Slice)(PPS)(P-Slice)(PPS)(P-Slice)...(AUD)(SPS)(PPS)(I-Slice).

通常,您会在每个I帧之前看到SPS/PPS,而在其他切片之前看到PPS.

大多数解码器/复用器都对"附件B"和SPS/PPS的重复感到满意.

如果您更改格式和SPS/PPS中游,大多数解码器/复用器将不会执行任何有意义的操作.

大多数解码器/复用器将第一个SPS/PPS解析为设置过程的一部分,并忽略后续SPS.

一些解码器/复用器更喜欢没有(AUD),起始码和SPS/PPS的H.264.然后,您必须在带外提供SPS/PPS作为设置解码器/复用器的一部分.

  • MP4格式可以与in-mdat SPS和PPS一起使用,但几乎我见过的每个文件都将SPS和PPS放在stsd.avc1.avcC下的轨道描述中,然后mdat只包含样本数据.在流中间更改SPS和PPS是最简单的可能发生的事情.我很确定单个流可能有各种基于不同SPS和PPS的样本.考虑字段slice_header.pic_parameter_set_id和picture_parameter_set.seq_parameter_set_id.我怀疑大多数解码器在2013年都不支持此功能. (2认同)

sza*_*ary 22

没有SPS和PPS,就无法解码IDR帧或I片.对于像mp4这样的容器,SPS和PPS远离文件头中的视频数据存储.在回放时解析mp4,SPS/PPS用于配置AVC解码器一次,然后可以从任何IDR/I切片开始播放视频.

第二种情况是直播视频.使用实时视频,没有文件头,因为没有文件.因此,当电视调入频道时,它会在哪里获得SPS/PPS?由于电视是广播的,意味着电视无法请求SPS/PPS,因此在流中重复.

因此,当您开始编码视频时,您的编码器不知道您打算如何处理视频.现在,如果额外的SPS/PPS出现在mp4中,解码器就会忽略它们,但是如果你正在流式传输到电视,没有它们,流将永远不会播放.所以大多数默认重复SPS/PPS以防万一.