从MPEG-TS流中获取H.264的视频尺寸,带有损坏的SPS



我正在为MP4 Transmuxer编写MPEG-TS,它大多是在我从中获得可播放的MP4文件的,它具有适当的尺寸和播放速度等等。

但是,我不确定VLC(或我测试过的其他视频播放器)如何弄清楚视频的适当维度是多少。我通过解析SPS计算得出的宽度和高度值是总垃圾。我最终得到了16x160或32x1529。

之类的东西。

现在,MP4文件中的AVCC框包含完整的原始SPS单元,因此我看到了两种可能性:1.我的SPS解析器实际上以某种方式被打破,MP4播放器从完整的SPS中正确地通过自己的正确提取了宽度,高度,配置文件和级别信息。在那种情况下,是否可以使用测试案例来验证我的SPS解析器?2.我的SPS解析器很好,并且SPS数据确实很棘手,MP4播放器能够通过其他一些方式从视频数据中检索正确的参数。在这种情况下,这是什么意思?

编辑:供参考,这是我要解析的一些SPS,以及我得到的结果:

sps:0x674d401feca0c8edff8070070888003080031E078C18CB0pic_width_in_mbs_minus1:0pic_height_in_map_units_minus1:0frame_cropping_flag:0frame_mbs_only_flag:0宽度:16身高:32

sps:0x6742C015D90A07E84003040030F03C58B920pic_width_in_mbs_minus1:1pic_height_in_map_units_minus1:159frame_cropping_flag:1(底部偏移量为1,其余为0)frame_mbs_only_flag:0宽度:32身高:5118

sps:0x676401eacd940b031a1a100301003032f162d96

pic_width_in_mbs_minus1:0pic_height_in_map_units_minus1:4frame_cropping_flag:0frame_mbs_only_flag:0宽度:16身高:160

我的解析器代码很大,可以在此处包含,但在https://github.com/gliese1337/hls.js/blob/master/master/spsparser.js

这仍然是您的SPS解析器的问题:

Sequence Parameter Set
profile_idc 77 
constraint_set0_flag 0 
constraint_set1_flag 1 
constraint_set2_flag 0 
constraint_set3_flag 0 
level_idc 31 
seq_parameter_set_id 0 
num_ref_frames 4 
gaps_in_frame_num_value_allowed_flag 0 
pic_width_in_mbs_minus1 24 
pic_height_in_map_units_minus1 13 
frame_mbs_only_flag 1 
direct_8x8_inference_flag 1 
frame_cropping_flag 0 
vui_parameters_present_flag 1 

分辨率:400x224