我在webrc上流一个原始的h264。我面临的问题是,视频只有2或3的SPS和PPS包在文件的开始。因此,每当观众加入到中间的流,他不能看到视频。我发现ffmpeg中有一个过滤器,叫做dump_extra
。我用ffmpeg的过滤器,它做instert sps和pps和视频播放时,有人从中间加入。我面临的问题是,当我试图使用这个过滤器从libav的代码只是直了不工作。我没有通过任何错误,它成功地产生了数据包,但数据包不包含sps或pps。我查看了dump_extra filter的代码,它正在将extra data字段从codeccontext转储到avpacket,但我的codeccontext extra data字段设置为null,extra data_size为零。虽然它可以用ffmpeg处理相同的h264原始视频,但用libav处理它会失败,有人能给我一些代码或解决方案吗?
1条答案
按热度按时间jw5wzhpr1#
我认为ffmpeg复制了第一个数据包的sps和pps(或者有sps和pps的数据包),并将其放入
extradata
。之后,过滤器复制该额外数据并将其放在每个nalu之前。我只需要从nalu中提取extradata并将其放入AVContext
的extradata
字段中,然后运行dump_extra
过滤器。