推荐三款开源流媒体推流/拉流服务软件
在音视频开发、直播系统搭建、摄像头接入以及流媒体转发等场景中,推流和拉流服务几乎是绕不开的一环。无论是 RTSP 摄像头转 Web 播放,还是 RTMP、HLS、WebRTC 等协议之间的转换,一个稳定、私有、易部署、可维护的流媒体服务都能大大降低开发和运维成本。
本文主要推荐三款常见的开源流媒体服务:MediaMTX、ZLMediaKit 和 SRS。它们各自有不同的定位和优势:有的轻量简单,适合快速搭建和测试;有的功能丰富,适合复杂的音视频业务场景;也有的在直播、低延迟和协议支持方面表现突出。
文章主要为介绍如何快速安装搭建以及简单实现推拉流方法,不需要复杂的协议底层原理知识,只需跟着步骤就能直简单上手起来。同时下面也会介绍各种协议之间的区别和如何选择,文章采用OBS的推流方法来列举推流链接格式。
软件共有的重要特性:
- 同时推拉多条流媒体
- 自动转换协议-协议自动桥接
(推流一般建议rtmp比较稳,拉流需要看情况所以需要有协议转换)
常见流媒体协议特性对比:
| 协议 | 底层协议 | 主要用途 | 延迟 | 优点 | 缺点 | 常见场景 |
|---|---|---|---|---|---|---|
| SRT | UDP | 低延迟远程传输 | 低 | 抗丢包能力强、弱网优化好、支持加密 | 配置相对复杂、生态不如 RTMP 普及 | 跨公网传输、远程导播、运营商专线替代 |
| WebRTC | UDP(主要) | 实时音视频通信 | 极低(毫秒级) | 超低延迟、浏览器原生支持、互动能力强 | NAT 穿透复杂、服务部署难度高 | 视频会议、连麦直播、实时互动 |
| RTSP | TCP / UDP | 摄像头流控制与传输 | 低 | IPC/NVR 兼容性高、控制能力强 | 浏览器不直接支持 | 安防监控、摄像头接入 |
| RTMP | TCP | 直播推流 | 较低 | 稳定、成熟、推流生态完善 | Flash 被淘汰后浏览器支持弱 | OBS 推流、直播平台推流入口 |
| HLS | HTTP(TCP) | 视频分发与点播 | 高 | CDN 兼容性强、浏览器支持好 | 延迟高 | 点播、直播观看、大规模分发 |
| MPEG-TS | UDP / TCP | 音视频封装格式 | 中低 | 兼容性强、传输稳定 | 只是封装格式,不是完整业务协议 | DVB、直播流封装、TS 切片 |
| RTP | UDP(常见) | 实时媒体传输 | 低 | 轻量、实时性好 | 不保证可靠性 | RTSP、WebRTC、VoIP 底层媒体传输 |
*具体描述可在这个帖子查看
协议端口介绍:
| 前缀协议默认端口 | 协议 | 底层传输 | URL 前缀 | 说明 |
|---|---|---|---|---|
| 1935 | RTMP | TCP | rtmp:// rtmps:// | RTMP 默认端口,常用于直播推流与拉流。如果使用默认端口,URL 中通常可以省略端口号。 |
| 554 | RTSP | TCP | rtsp:// rtsps:// | RTSP 默认端口,主要用于摄像头、NVR 等设备的视频流传输。使用默认端口时一般可省略端口号。 |
| 8000 | RTP / RTCP / WebRTC / RTSP | UDP | (通常无固定前缀) | 常用于 RTSP 的 UDP 模式数据传输(RTP/RTCP),同时也常作为 WebRTC 的 UDP 媒体传输端口。 |
| (须手动加) | SRT | UDP | srt:// | SRT 默认服务端口之一,用于低延迟、弱网环境的视频传输。由于协议本身没有固定默认端口,通常需要手动在域名后面加端口号。 |
| 80 | HTTP / 信令 | TCP | http:// | 默认 Web 服务端口,常用于后台管理页面、HTTP API,以及 WebRTC 的 HTTP 信令交换。默认情况下可省略端口号。 |
| 443 | HTTPS / WSS | TCP | https:// wss:// | TLS/SSL 默认端口,用于 HTTPS 页面访问及加密 WebSocket 通信。默认情况下可省略端口号。 |
| 30000-30500 | WebSocket 动态端口 | TCP | ws:// wss:// | WebSocket 建立连接后,部分服务会动态分配该范围内端口用于后续数据通信。具体端口范围通常可在配置文件中修改。 |
RTSP 既支持 TCP,也支持 UDP:
- TCP 模式更稳定
- UDP 模式延迟更低
WebRTC 通常会同时使用:
- HTTP/HTTPS 做信令交换
- UDP 做真实音视频传输
wss:// 本质上是:
- WebSocket + TLS(类似 HTTPS 和 HTTP 的关系)
很多流媒体服务(如 ZLMediaKit、SRS、MediaMTX)默认都会同时监听多个协议端口,因此部署时要注意防火墙和端口占用。
使用前缀协议+默认端口就不用手动在域名后添加,但是如果有问题连不上先看看配置文件,各个平台的配置端口可能不一样,再检查网络问题。
OBS配置设置:
根据推荐的三个平台配置填入参数,此为OBS推流通用配置
通用推流设置
启动OBS并转到文件 – 设置 – 直播,配置如下:
- 服务:
自定义... - 服务器:
rtmp://(IP、域名、本地)/(任意字母数字) - 推流码:
(可选,会加到字母文本后面就像rtmp://localhost/(任意字母数字)/(推流码))
- 服务:
如果要同时推webRTC转到设置 – 输出 – 录制,配置如下:
- FFmpeg 输出类型:
输出到URL - 保存路径或URL:
rtsp://(IP、域名、本地):8554(同时输入避免端口占用)/(任意字母数字) - 封装格式:
rtsp - 检查
显示所有编解码器(即使可能不兼容) - 视频编码器:
h264_nvenc (libx264) - 视频编码器设置 (如有):
bf=0 - 音轨:
2 - 音频编码器:
libopus
OBS推WebRTC
- FFmpeg 输出类型:
启动OBS并转到文件 – 设置 – 直播,配置:
- 服务:
WHIP - 服务器:
http://(IP、域名、本地):8889/(任意字母数字)/whip
- 服务:
接下来开始安装和介绍三个不同的服务软件
一、MediaMTX
简介
最先推荐 MediaMTX 一个非常轻量级的流媒体服务器,主打“开箱即用”。它是单二进制程序(构建好了的单可执行文件),没有复杂依赖不用配置环境,下载好后双击即可自动运行,非常适合本地调试或小型项目。
支持协议:SRT、WebRTC、RTSP、RTMP、HLS、MPEG-TS、RTP
支持特性:认证、转发、API控制、录制流
- 满足推拉流的基本功能,不花里胡哨。
安装方式
(Win):
# 下载
https://github.com/bluenviron/mediamtx/releases/latest/download/mediamtx_windows_amd64.zip
# 右键解压可得mediamtx.exe
双击mediamtx.exe启动
#附带配置文件可自行打开配置
mediamtx.yml(Linux/Mac):
# 下载
wget https://github.com/bluenviron/mediamtx/releases/latest/download/mediamtx_linux_amd64.tar.gz
# 解压
tar -xvf mediamtx_linux_amd64.tar.gz
# 启动
./mediamtx启动后默认监听多个协议(RTSP、RTMP、HLS、WebRTC 等),无需额外配置即可使用。

推流示例
RTMP
服务:自定义...
服务器:rtmp(s)://(IP、域名、本地)/(任意字母数字)
推流码:(推流码任意字母数字)
WebRTC
服务:WHIP
服务器:http://(IP、域名、本地):8889/(任意字母数字)/whip拉流示例
#注意这个平台配置默认rstp端口为8554需手动添加端口后缀,如不想添加可在配置修改为855即可
rtsp(s)://(IP、域名、本地):8554/(你的字母数字)/(推流码)
rtmp(s)://(IP、域名、本地)/(你的字母数字)/(推流码)
srt://(IP、域名、本地):8890?streamid=read:(你的字母数字);key=(推流码)
HLS
http://(IP、域名、本地):8888/(你的字母数字)/(推流码)
http://(IP、域名、本地):8888/(你的字母数字)/(推流码)/index.m3u8
WebRTC
http://(IP、域名、本地):8889/(你的字母数字)
或
http://(IP、域名、本地):8889/(你的字母数字)/whep二、ZLMediaKit
简介
明天继续填坑。。。
推荐三款开源流媒体推流/拉流服务软件
https://www.zzeko.com/index.php/archives/1/