使用ffmpeg推流rtsp,用vlc播放黑屏,但是编码数据保存264文件能正常播放原因汇总

原因一:项目中使用cuda编码,然后用ffmpeg推流rtsp,用vlc播放rtsp链接,发现播放黑屏,然后把编码数据保存264文件,用vlc打开能够正常播放。

解决一:UltraEdit打开264文件,如下图

使用ffmpeg推流rtsp,用vlc播放黑屏,但是编码数据保存264文件能正常播放原因汇总

从图中可以看出00 00 00 01 67(SPS)     00 00 00 01 68(PPS)     00 00 00 01 65(I帧),这个IDR帧是正常的所以用VLC播放可以。但是在这个264文件里后续的帧都没有出现00 00 00 01 65(I帧),所以这就是为什么推流rtsp黑屏的原因了,解决办法就是让后续间断的产生I帧就可以了,不管是哪种编码器,都有一个设置gop参数的值,通过设置gop就可以控制生成I帧了(正常不应该为0值),在我设置gop参数之后(设置为非0值),用vlc播放rtsp正常。