FFmpeg无限循环RTMPS推流几小时后自动终止问题求助
大家好,我最近在用FFmpeg做无限循环的RTMPS推流,一开始用的命令是这样的:
ffmpeg -re -stream_loop -1 -i abc.mp4 -c copy -f flv rtmps://abc.xyz/.....
本来期望它能持续稳定推流,但实际运行几个小时后进程就自动终止了,报错信息如下:
av_interleaved_write_frame(): Broken pipe
[flv @ 0x55d73001dd00] Failed to update header with correct duration.
[flv @ 0x55d73001dd00] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/........................: Broken pipe
frame=1812023 fps= 30 q=-1.0 Lsize= 4902934kB time=16:47:41.10 bitrate= 664.3kbits/s speed= 1x
video:3879605kB audio:944717kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.629512%
Conversion failed!
从报错来看,核心问题是Broken pipe(管道破裂),伴随FLV头部时长和文件大小更新失败,最终导致转码流程崩溃。
我一开始怀疑是网络连接不稳定导致的,所以尝试加上了FFmpeg的重连参数,修改后的命令如下:
ffmpeg -stream_loop -1 -re -i abc.mp4 -c copy -f flv -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 2 rtmps://abc.xyz/......
但即使加了-reconnect 1、-reconnect_streamed 1和-reconnect_delay_max 2这些重连参数,问题依然存在,推流还是会在几个小时后自动终止。
我现在有点摸不着头绪,不确定是不是还有其他隐藏的网络问题,或者是FFmpeg在循环推流场景下的某些机制引发的问题?有没有大佬能帮忙分析下问题根源,或者给点可行的解决方案?
备注:内容来源于stack exchange,提问作者Isteyak Ali




