我正在写一个MPEG-TS到MP4转换器,这主要是因为我可以播放具有适当尺寸和播放速度的可播放MP4文件等等。从具有损坏的SPS的MPEG-TS流获取H.264视频尺寸
但是,我不确定VLC(或者我测试过我的输出的任何其他视频播放器)是如何确定视频的正确尺寸。我通过解析SPS来计算的宽度和高度值是全部垃圾;我最终得到了像16x160或32x1529的东西。
现在,MP4文件中的avcC框包含完整的原始SPS单元,所以我看到两种可能性: 1.我的SPS解析器实际上被破坏了,MP4播放器重新提取宽度,高度,轮廓和关于他们自己的的正确信息来自完整的SPS。在那种情况下,我可以使用哪些测试用例来验证我的SPS分析器? 2.我的SPS解析器很好,SPS数据真的很棘手,MP4播放器能够通过其他方式从视频数据中检索正确的参数。在那种情况下,其他手段是什么?
编辑:作为参考,我这里还有一些SPSS软件我试图解析,结果我得到的:
SPS:0x674d401feca0c8edff807007088003080031e078c18cb0 pic_width_in_mbs_minus1:0 pic_height_in_map_units_minus1:0 frame_cropping_flag:0 frame_mbs_only_flag:0 宽度:16 高度:32
SPS:0x6742c015d90a07e84003040030f03c58b920 pic_width_in_mbs_minus1:1个 pic_height_in_map_units_minus 1:159 frame_cropping_flag:1(底部偏移为1,其余为0) frame_mbs_only_flag:0 宽度:32 高度:5118
SPS:0x676401eacd940b031a100301003032f162d96
pic_width_in_mbs_minus1:0 pic_height_in_map_units_minus1:4 frame_cropping_flag :0 frame_mbs_only_flag:0 宽度:16 高度:160
我解析器代码是相当大的,包括在这里,但是G上itHub在https://github.com/gliese1337/HLS.js/blob/master/SPSParser.js
我会先检查语法分析器,THI s解释了如何将位流中的值转换为像素尺寸:[获取H264视频流的尺寸](http://stackoverflow.com/a/6477652/868014) –
@RomanR。我通过直接从规范工作来构建SPS分析器,使用该答案中引用的相同表格。如果解析器出现问题,我不认为再次看同一个引用会有帮助,因此想知道是否有可能已知的测试用例可以运行它。 –
为什么不显示您的SPS字节(或解析器,或两者兼而有之),哪些可以获得垃圾尺寸。 –