IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用 MediaMTX + RTSP 搭建低延迟直播服务器

    泠泫凝发表于 2024-01-17 05:42:51
    love 0

    使用 MediaMTX 和 RTSP 协议搭建低延迟直播服务器

    服务端部署

    服务端采用MediaMTX,可以在Release页面中下载最新版本,目前官方支持arm架构的linux和x64版本的linux和Windows。

    1. 下载后解压,会获得一个可执行文件和一个yaml配置文件,首先修改yaml文件:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      # 此处仅展示需要修改的项

      # Protocols 修改为仅tcp
      protocols: [tcp]

      # Username required to publish.
      # 限制推流用户名
      publishUser: "lxnchan"
      # Password required to publish.
      # 限制推流密码,也可以用"sha256:xxxxx"使用sha256
      publishPass: "lxnchan1234"
      # IPs or networks (x.x.x.x/24) allowed to publish.
      # 也可以直接限制推流IP地址,留空不限制
      publishIPs: []
    2. 启动主程序
      1
      ./mediamtx
      记下其中一行输出:
      1
      2024/01/17 10:12:47 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)

    直播端推流

    目前来说我这边推流使用OBS Studio,但OBS并不支持直接向服务器推RTSP流,因此我们这里采取曲线救国的方法,通过录像到URL的形式来推流。

    1. 打开OBS Studio,选择“文件”-“设置”-“输出”-“输出模式”更改为“高级”-切换到“录像”选项卡,下方“类型”选择“自定义输出”
    2. 下方“输出类型”选择“输出到URL”,随后URL按照如下格式填写:
      1
      rtsp://用户名:密码@服务器地址:端口/流id
      其中用户名和密码是上面设置的,服务器地址是你的服务器地址,端口是你的服务器端口(上面记录的那行日志中TCP的所在端口),流ID随意填写但不要和实例内别人重复。
      示例:
      1
      rtsp://lxnchan:lxnchan1234@192.168.10.12:8554/live1
    3. 容器格式选择rstp
    4. 视频码率和关键帧间隔根据实际情况调整,通常是越大质量越好,但对服务器和带宽要求更高,带机量相对更低。
    5. 视频编码器设置按如下填写
      1
      -preset:v llhq -tune:v zerolatency -profile veryfast
      • -preset:v llhq: 使用高质量低延迟预设(仅限显卡编码)
      • -tune:v zerolatency: 使用低延迟模式
      • -profile veryfast: 启用veryfast预设
    6. 保存设置后直接开始录制即开始推流。

    客户端播放

    这里采用VLC做播放介质。

    打开VLC,选择“媒体”-“打开网络串流”,输入如下格式的URL:

    1
    rtsp://read用户名:read密码@IP地址:端口号/流id

    例如:

    1
    rtsp://user:passw0rd@192.168.10.12:8554/live1

    如果没设置read用户名密码可以直接去掉前半部分。

    其他问题

    报WARN:write queue is full

    长时间推流需要先关一下或者提高配置文件中writeQueueSize的值。注意,提高该值会导致内存占用提高。



沪ICP备19023445号-2号
友情链接