You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

FFmpeg循环推流至MediaMTX RTSP服务器时出现400错误及路径无效问题求助

FFmpeg循环推流至MediaMTX RTSP服务器时出现400错误及路径无效问题求助

问题描述

我最近在用MediaMTX搭建RTSP服务器,尝试通过FFmpeg把本地的clouds.mp4视频循环推流到服务器上,但试了好几种参数组合都没成功,MediaMTX的终端一直提示“invalid path”错误。以下是我的配置和错误信息:

  • 使用的FFmpeg命令:
ffmpeg -re -stream_loop -1 -i ./clouds.mp4 -f rtsp -rtsp_transport tcp rtsp://localhost:8554
  • 视频文件详细信息(通过FFmpeg读取的输入信息):
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './clouds.mp4':
Metadata:
major_brand     : mp42
minor_version   : 0
compatible_brands: mp42isomavc1
creation_time   : 2023-01-12T20:44:34.000000Z
Duration: 00:00:56.34, start: 0.000000, bitrate: 2952 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 2758 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)
Metadata:
creation_time   : 2023-01-12T20:44:34.000000Z
handler_name    : Vimeo Artax Video Handler
vendor_id       : [0][0][0][0]
encoder         : AVC Coding
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
Metadata:
creation_time   : 2023-01-12T20:44:34.000000Z
handler_name    : Vimeo Artax Audio Handler
vendor_id       : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
  • MediaMTX终端错误日志:
2023/05/08 17:30:43 INF [RTSP] [session 298895e1] created by 127.0.0.1:38024
2023/05/08 17:30:43 INF [RTSP] [conn 127.0.0.1:38024] closed (invalid path)

专家解答

你遇到的核心问题是RTSP推流地址缺少了流路径,MediaMTX要求推流时必须指定一个具体的流名称(路径),否则服务器无法识别该推流请求,从而返回“invalid path”错误。

1. 修正FFmpeg推流命令

把你的命令修改为:

ffmpeg -re -stream_loop -1 -i ./clouds.mp4 -c copy -f rtsp -rtsp_transport tcp rtsp://localhost:8554/mystream

这里做了两个关键调整:

  • 添加了-c copy参数:直接复用视频的H.264编码和音频的AAC编码,避免不必要的转码,提升推流效率,同时减少兼容性问题。
  • 在RTSP地址末尾添加了/mystream:这就是推流的路径(流名称),你可以换成任意你喜欢的名称,比如/clouds_stream

2. 验证推流是否成功

修改命令后重新执行,此时MediaMTX的终端应该会输出类似这样的日志,说明推流成功:

2023/XX/XX XX:XX:XX INF [RTSP] [session XXXXXXXX] created by 127.0.0.1:XXXX
2023/XX/XX XX:XX:XX INF [RTSP] [path mystream] created
2023/XX/XX XX:XX:XX INF [RTSP] [session XXXXXXXX] is publishing to path 'mystream'

3. 额外排查点

如果修改后还是有问题,可以检查这两点:

  • 确认MediaMTX的配置文件(默认是mediamtx.yml)中,paths部分是否允许推流。默认配置下,所有路径都是允许发布和读取的,如果你修改过配置,确保目标路径的publish权限是开启的。
  • 确认FFmpeg能正确读取到./clouds.mp4文件,你可以先执行ffmpeg -i ./clouds.mp4测试文件是否能正常解析。

备注:内容来源于stack exchange,提问作者lokit khemka

火山引擎 最新活动