求助大佬们, FFmpeg 指令拉实时流转推的正确姿势到底是什么?

4 天前
 zapper

大佬们好,我用

ffmpeg -re -rtsp_transport tcp -stimeout 5000000 -i rtsp://xxxx -c:v libx264 -f flv rtmp://xxx

上面这个指令,在一切正常的时候没有问题,但是当输入的 RTSP 中断了一会,这个推流就会处于一个跑飞了的状态,不再推送有效数据,并且进程也没有终止; 然后我网上搜说用rw_timeout参数可破,可是我将指令修改为

ffmpeg -re -rtsp_transport tcp -rw_timeout 5000000 -stimeout 5000000 -i rtsp://xxxx -c:v libx264 -f flv rtmp://xxx

可是整个指令根本跑不起来。提示-rw_timeout不存在,除非输入换成 RTMP ,但是加了这个参数其实也不好使。 由于输出的地址不是我们自己管控的,所以不像保存文件一样能定期检测文件大小是否变化来判断是不是应该 kill 掉进程,所以要怎么才能在他没数据传输的时候干掉他,或者能通过配置参数让他自己退?

先谢谢大佬们

761 次点击
所在节点    FFmpeg
3 条回复
jifengg
4 天前
https://ffmpeg.org/ffmpeg-protocols.html#Demuxer

看看这里有没有能帮到你的
vivisidea
4 天前
https://trac.ffmpeg.org/wiki/Creating%20multiple%20outputs

ffmpeg 可以有多个 output 的,试试输出一个到 rtmp ,再输出另一个到本地文件,然后监控这个本地文件变化情况?
zapper
4 天前
@vivisidea #2 确实能这样。我试试性能顶不顶

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1101957

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX