Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

使用 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备19013963号

萌ICP备 20219421 号

中国互联网违法和不良信息举报中心

架构版本号:8.1.6 | 本站已全面支持IPv6

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2024 LingXuanNing, All rights reserved.