为IP摄像头搭建MediaMTX RTSP代理遇Exit1异常,请求排查
RTSP代理(MediaMTX)Exit1异常排查步骤
优先查看MediaMTX启动日志
启动容器时的终端输出会包含具体错误信息,重点查找error、warning关键词,比如源RTSP连接失败、端口占用、配置文件解析错误等。这些日志是定位问题的核心依据。验证源RTSP流的可用性
先排除源端问题,直接用ffmpeg或VLC测试原始流:# 用ffmpeg测试源流 ffmpeg -rtsp_transport tcp -i rtsp://original-url -vcodec copy -f null -如果测试失败,说明问题出在IP摄像头端,比如带宽不足、摄像头认证错误、网络不通,需要先解决源端问题。
核对端口与网络配置
- 检查端口一致性:MediaMTX默认RTSP端口是8554,但你的ffmpeg命令中使用了
8854,这是明显的端口错误,需统一改为8554。 - 确认端口未被占用:用以下命令检查8554端口是否被其他程序占用:
ss -tulpn | grep 8554 - 验证Docker网络:
--network=host模式下容器直接使用主机网络,确保主机能正常访问摄像头的RTSP端口。
- 检查端口一致性:MediaMTX默认RTSP端口是8554,但你的ffmpeg命令中使用了
检查配置文件有效性
- 配置文件挂载是否成功:启动日志中需包含
loaded config from /mediamtx.yml,否则说明挂载路径错误(比如$PWD是否为配置文件所在目录)。 - 路径配置优先级:如果同时配置了
all和proxied路径,proxied作为具体路径会覆盖all的配置,需确保proxied的source地址正确,若源地址包含特殊字符(如密码中的@、&),需进行URL编码。 - 认证配置的使用:若添加了
readUser和readPass,访问代理流时必须携带认证信息,比如:rtsp://user:userpass@localhost:8554/proxied
- 配置文件挂载是否成功:启动日志中需包含
修正ffmpeg命令参数
你的ffmpeg命令中错误添加了-re参数,该参数用于推流时模拟实时速率,拉流时无需使用,修正后的命令示例:cmd := exec.Command("ffmpeg", "-rtsp_transport", "tcp", "-i", "rtsp://user:userpass@localhost:8554/proxied", "-c:v", "copy", "-f", "segment", "-segment_time", "300", "-segment_format", "mp4", "-segment_list", "recordings/playlist.m3u8", "-segment_list_entry_prefix", "recordings/", "-nostdin", "recordings/output-%03d.mp4")执行时捕获stderr输出,查看具体错误(比如无法连接、流格式不兼容)。
尝试更换MediaMTX版本
若以上步骤无效,可能是版本兼容问题,尝试使用最新稳定版镜像:docker run --rm -it --network=host -v $PWD/mediamtx.yml:/mediamtx.yml aler9/rtsp-simple-server:latest
内容的提问来源于stack exchange,提问作者Gigatron333
相关产品推荐
相关产品推荐

