MacOS High Sierra下FFmpeg推RTSP流遇Connection refused问题求助
解决FFmpeg推送RTSP流时的Connection Refused错误
问题场景
你在MacOS High Sierra系统上用brew安装的FFmpeg,执行以下命令推送RTSP流:
sudo ffmpeg -re -i ./Big_Buck_Bunny_1080_10s_1MB.mp4 -c:v libx264 -preset superfast -tune zerolatency -c:a aac -ar 44100 -f rtsp -rtsp_transport udp rtsp://127.0.0.1:8888/live
但出现了连接拒绝的错误:
[tcp @ 0x7fb979e22ec0] Connection to tcp://127.0.0.1:1935?timeout=0 failed: Connection refused Could not write header for output file #0 (incorrect codec parameters ?): Connection refused Error initializing output stream 0:0 -- Conversion failed!
你尝试过加/不加sudo、更换协议、修改端口等操作都没解决问题。
问题根源
这个错误的核心原因很简单:FFmpeg只是推流工具,它需要一个能接收并处理流的流媒体服务器,而你当前没有启动任何这类服务器。没有接收端的情况下,FFmpeg自然无法建立连接,就会抛出Connection Refused错误。
解决方法
先启动流媒体服务器
你需要先部署一个支持RTSP协议的流媒体服务器,常用的选择有:- VLC:作为简易服务器非常方便,打开VLC后通过「媒体」→「流」选项,按照向导设置好接收端口和路径,就能搭建一个临时的RTSP接收服务器
- Wowza:如果需要更专业的流处理能力(比如多终端分发、转码等),可以选择这类商用/开源的专业流媒体服务器
注意要让服务器监听的地址、端口和你FFmpeg命令中的目标地址保持一致(比如命令里的rtsp://127.0.0.1:8888/live,就要确保服务器在8888端口开启了RTSP服务,并配置对应流路径)
重新执行推流命令
等服务器完全启动并处于正常监听状态后,再运行你之前的FFmpeg推流命令,此时就能成功建立连接并推送流了。
额外建议
关于FFmpeg流媒体推送的更多细节和最佳实践,可以参考FFmpeg官方文档中的Streaming Guide部分,里面有更详细的配置说明和常见问题排查方案。
内容的提问来源于stack exchange,提问作者TalG
相关产品推荐
相关产品推荐

