这是上个月的旧闻了,《开源播放器VLC被曝漏洞 与安全公司骂战》。
大概是一个ffmpeg引起的漏洞,被安全公司按在了VLC头上。有兴趣的话,可以去看看,挺有意思的。
国内很多播放器多用到ffmpeg,大家小心被攻击哟。
说实话,要让ffmpeg崩溃是很容易的。
比如rtsp流媒体传输H264场景下,RTP丢包,VLC接受到的媒体数据不完整,就可能引起ffmpeg崩溃。
在0.6.6,0.8两个ffmpeg版本上测试,每100包丢1包,ffmpeg平均每2小时崩溃一次。
这些崩溃不是exit(),全是内存访问错误,这比X11渲染错误更严重。
好歹X11还通知了VLC,让VLC体面地结束,ffmpeg是完全不给VLC体面结束的机会。
为了避免崩溃,启用RTP的验证机制,如果RTP发现丢掉一包,就清空ffmpeg的缓冲,同时丢掉后面的P帧,直到下一个I帧。
好了,结果类似于跳帧播放。
大家有没有好的办法呢?