srs ffmpeg拉取rtsp流,推送rtmp流到srs,vlc播放花屏、srs网页播放器播放跳秒/跳帧的问题。
现象如下。
折腾了好几天,不容易。
最开始ffmpeg推流花屏、公司自己做的国标推流器也会花屏,初步把问题定位到srs里面。但是检查几遍srs_app_rtmp_conn.cpp 吞吐message 包是否丢包,没有问题。尝试修改 conf文件里面srs各种配置依然没有问题。中途也尝试过只开启一路视频流、一路视频流不用1080p,用720p,甚至更小分辨率,也会出现花屏现象。当时整个人已经懵了。
折腾几天后,想到会不会是两个推流器都有问题?然后网上查阅资料,尝试修改ffmpeg udp buffer大小无果。
最后顺着排查ffmpeg的思路,检查srs objs 下的ffmpeg推流日志,发现ffmpeg拉取rstp丢包,柳暗花明。网上一查,原来是ffmpeg默认是使用udp的方式拉取rtsp流,udp方式会丢包。
废话不多说。
解决方法:ffmpeg推流使用tcp方式推流:
/root/ffmpegTest/ffmpeg-4.1/ffmpeg -rtsp_transport tcp -i rtsp://admin:aaa@qq.com:554/h264/ch1/main/av_stream -vcodec copy -acodec copy -f flv -y rtmp://192.168.0.210:1935/live?vhost=ruiyan/ruiyan_234
srs代码如下更改:
srs_app_ffmpeg.cpp 265行 左右, params.push_back("-i")前加入指定tcp的代码。
params.push_back("-rtsp_transport");
params.push_back("tcp");
params.push_back("-i");
params.push_back(input);
上一篇: 顺序表归并,链表归并,顺序表划分
下一篇: (一)Mybatis入门之第一个程序