You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MediaMTX服务器将单路RTSP流拆分为多路不同分辨率流?

用MediaMTX + FFmpeg拆分RTSP流为多路不同分辨率流

1. 配置MediaMTX接收多路推流

打开MediaMTX的配置文件(默认是mediamtx.yml),在paths节点下添加对应分辨率的流路径,设置允许外部推流:

paths:
  high:
    source: publisher  # 允许推流到该路径
  medium:
    source: publisher
  low:
    source: publisher

2. 编写FFmpeg转码推流命令

使用FFmpeg读取输入RTSP流,同时转码为多种分辨率并推送到MediaMTX的对应路径。替换命令中的rtsp://your-input-rtsp-url为实际输入流地址:

ffmpeg -i rtsp://your-input-rtsp-url \
  -c:v libx264 -preset fast -crf 23 -s 1920x1080 -f rtsp rtsp://localhost:8554/high \
  -c:v libx264 -preset fast -crf 23 -s 1280x720 -f rtsp rtsp://localhost:8554/medium \
  -c:v libx264 -preset fast -crf 23 -s 640x360 -f rtsp rtsp://localhost:8554/low

参数说明:

  • -c:v libx264:采用H.264视频编码
  • -preset fast:平衡编码速度与压缩效率
  • -crf 23:控制视频质量,数值越小质量越高(常用范围18-28)
  • -s WxH:指定输出分辨率,示例为1080p、720p、360p
  • -f rtsp rtsp://localhost:8554/xxx:以RTSP格式推送到MediaMTX对应流路径

3. 启动服务与转码

  1. 启动MediaMTX服务:
./mediamtx  # Linux/macOS
# Windows 直接运行 mediamtx.exe
  1. 执行上述FFmpeg命令,开始转码推流

4. 验证多路流

用RTSP播放器(如VLC)分别访问以下地址,验证不同分辨率的流:

  • rtsp://localhost:8554/high(1080p)
  • rtsp://localhost:8554/medium(720p)
  • rtsp://localhost:8554/low(360p)

可选:让MediaMTX自动启动FFmpeg

如果不想手动运行FFmpeg命令,可以将转码逻辑集成到MediaMTX配置中,让服务自动启动转码进程:

paths:
  input:
    # 当有客户端访问input路径时启动FFmpeg转码
    source: "ffmpeg -i rtsp://your-input-rtsp-url -c:v libx264 -preset fast -crf 23 -s 1920x1080 -f rtsp rtsp://localhost:8554/high -c:v libx264 -preset fast -crf 23 -s 1280x720 -f rtsp rtsp://localhost:8554/medium -c:v libx264 -preset fast -crf 23 -s 640x360 -f rtsp rtsp://localhost:8554/low -f null -"
    sourceOnDemand: true
  high:
    source: publisher
  medium:
    source: publisher
  low:
    source: publisher

注:命令末尾的-f null -用于让FFmpeg生成标准输出,避免MediaMTX判定进程启动失败。

内容的提问来源于stack exchange,提问作者Cobalt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:34:56