开始以为是硬解兼容性问题,浏览器开软解就行了。
实际测试,在某种情形下,还是可以播放出来的。
出问题的视频,用h264分析格式,是h264 main ,level 52,且sps里面带了00 00 03竞争码
首先测试,将竞争码00 00 03 还原
即 ebsp转rbsp,丢给chrome和火狐播放。chrome能解码了,火狐还不行。
接着修改sps的level,到51。修改sps里面的level描述,改成0x33,不知道有啥影响,火狐能解码了。
最后看flv.js的源码
发现,flv.js解析sps时,是进行了ebsp转rbsp转换,然后解析出视频信息的,但是喂解码器时,是直接原始的sps丢解码器。修改之后:
重新用rbsp封装avcc头,就可以了。
火狐的sps修改如下:
目前只在部分win7系统的旧浏览器,发现这个bug。