srs ffmpeg拉取rtsp流,推送rtmp流到srs,vlc播放花屏、srs网页播放器播放跳秒/跳帧的问题。

针对ffmpeg推流至srs过程中出现的花屏、跳秒/跳帧问题,经过排查发现是由于ffmpeg使用UDP拉取rtsp流导致丢包。通过将ffmpeg推流方式改为TCP,即`-rtsp_transport tcp`,并调整srs_app_ffmpeg.cpp配置,成功解决了问题,确保流畅播放。
摘要由CSDN通过智能技术生成

现象如下。
在这里插入图片描述
折腾了好几天,不容易。
最开始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:mm852456@192.168.0.234: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_bac

在Android项目中使用FFmpeg拉取RTSP推送RTMP服务器,可以按照以下步骤进行操作: 步骤1:添加FFmpeg库 首先,将FFmpeg库添加到Android项目中。可以使用开源的FFmpeg库,也可以使用第三方的FFmpeg库。在项目的build.gradle文件中添加FFmpeg库的依赖。 步骤2:初始化FFmpeg 在代码中初始化FFmpeg,可以在Application的onCreate()方法中进行初始化操作。 步骤3:拉取RTSP 使用FFmpeg命令行或者FFmpeg库提供的API来拉取RTSP。可以通过设置输入源和输出格式等参数,实现从RTSP服务器拉取数据。 步骤4:推送RTMP服务器 使用FFmpeg命令行或者FFmpeg库提供的API来推送数据到RTMP服务器。可以通过设置输出源和RTMP服务器地址等参数,实现将拉取到的数据推送RTMP服务器。 步骤5:对推送过程进行监听和处理 通过FFmpeg库提供的回调函数,可以对推送过程进行监听和处理。例如,可以监听传输的状态、推送的进度等。 步骤6:处理异常情况 在使用FFmpeg的过程中,可能会遇到各种异常情况,比如网络异常、编解码错误等。需要在代码中进行异常处理,保证项目的稳定性和可靠性。 需要注意的是,使用FFmpeg进行RTSP拉取RTMP推送需要一定的编程技巧和对FFmpeg库的理解。并且,由于FFmpeg库在不同平台和版本之间可能存在差异,因此在集成和使用FFmpeg库时,需要确保库的版本和平台的兼容性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值