FFmpeg推RTMP流出现Error Writing trailer...Broken Pipe错误,求解决办法
解决FFmpeg推RTMP时"Broken Pipe"错误的可行方案
排查与修复步骤
确认RTMP连接有效性
先验证rtmp://Streamlink/Streamkey地址和密钥是否正确,用OBS等工具手动推流测试,排除服务器端故障。若为临时网络波动,可添加自动重连参数:ffmpeg -re -f concat -i Playlist.txt -codec copy -flvflags no_duration_filesize -f flv -reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5 rtmp://Streamlink/Streamkey参数解释:
-reconnect 1开启自动重连,-reconnect_delay_max设置最大重连等待时长(单位:秒)。调整FLV封装参数
no_duration_filesize可能导致服务器无法解析流元数据,尝试移除该参数:ffmpeg -re -f concat -i Playlist.txt -codec copy -f flv rtmp://Streamlink/Streamkey若必须保留该参数,可添加
-movflags frag_keyframe确保关键帧对齐,避免服务器因流格式异常断开连接。校验concat列表文件格式
检查Playlist.txt是否符合FFmpeg规范:每行必须为file '绝对路径/文件名',编码为UTF-8且无特殊字符。示例:file '/home/user/video1.mp4' file '/home/user/video2.mp4'若列表中视频编码参数(分辨率、帧率等)不一致,
-codec copy会引发流异常,需重新编码统一参数:ffmpeg -re -f concat -i Playlist.txt -c:v libx264 -c:a aac -f flv rtmp://Streamlink/Streamkey优化推流速率与缓冲区
网络带宽不足会导致连接中断,可添加码率限制参数:ffmpeg -re -f concat -i Playlist.txt -codec copy -maxrate 2M -bufsize 4M -flvflags no_duration_filesize -f flv rtmp://Streamlink/Streamkey若无需严格按原视频帧率推流,可去掉
-re参数,让FFmpeg以最快速度推送(注意部分服务器限制推流速率)。升级FFmpeg版本
旧版本FFmpeg的RTMP模块可能存在兼容性bug,建议升级到最新稳定版:# Ubuntu/Debian sudo apt update && sudo apt install --upgrade ffmpeg # macOS(Homebrew) brew upgrade ffmpeg
内容的提问来源于stack exchange,提问作者Hellwraith
相关产品推荐
相关产品推荐

