mediamtx:即用型、零依赖性的实时媒体服务器和媒体代理
MediaMTX 是一款拿来就能用,而且不依赖其他软件的实时媒体服务器与媒体代理。它能实现视频和音频流的发布、读取、代理、录制以及回放功能。它就像是一个 “媒体路由器”,能把媒体流从一端传输到另一端。
直播流可以通过以下几种方式发布到服务器上:
协议 | 变体 | 视频编码格式 | 音频编码格式 |
[SRT 客户端] | | H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3 |
[SRT 摄像机和服务器] | | H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3 |
[WebRTC 客户端] | WHIP | AV1、VP9、VP8、H265、H264 | Opus、G722、G711(PCMA、PCMU) |
[WebRTC 服务器] | WHEP | AV1、VP9、VP8、H265、H264 | Opus、G722、G711(PCMA、PCMU) |
[RTSP 客户端] | UDP、TCP、RTSPS | AV1、VP9、VP8、H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频、M - JPEG 以及任何和 RTP 兼容的编码格式 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3、G726、G722、G711(PCMA、PCMU)、LPCM 以及任何和 RTP 兼容的编码格式 |
[RTSP 摄像机和服务器] | UDP、UDP 组播、TCP、RTSPS | AV1、VP9、VP8、H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频、M - JPEG 以及任何和 RTP 兼容的编码格式 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3、G726、G722、G711(PCMA、PCMU)、LPCM 以及任何和 RTP 兼容的编码格式 |
[RTMP 客户端] | RTMP、RTMPS、增强型 RTMP | AV1、VP9、H265、H264 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3、G711(PCMA、PCMU)、LPCM |
[RTMP 摄像机和服务器] | RTMP、RTMPS、增强型 RTMP | AV1、VP9、H265、H264 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3、G711(PCMA、PCMU)、LPCM |
[HLS 摄像机和服务器] | 低延迟 HLS、基于 MP4 的 HLS、传统 HLS | AV1、VP9、[H265](#支持的浏览器 - 1)、H264 | Opus、MPEG - 4 音频(AAC) |
[UDP/MPEG - TS] | 单播、广播、组播 | H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3 |
[树莓派摄像机] | | H264 | |
从服务器读取直播流的方式如下:
协议 | 变体 | 视频编码格式 | 音频编码格式 |
SRT | | H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3 |
WebRTC | WHEP | AV1、VP9、VP8、H265、H264 | Opus、G722、G711(PCMA、PCMU) |
RTSP | UDP、UDP 组播、TCP、RTSPS | AV1、VP9、VP8、H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频、M - JPEG 以及任何和 RTP 兼容的编码格式 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3、G726、G722、G711(PCMA、PCMU)、LPCM 以及任何和 RTP 兼容的编码格式 |
RTMP | RTMP、RTMPS、增强型 RTMP | H264 | MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3) |
HLS | 低延迟 HLS、基于 MP4 的 HLS、传统 HLS | AV1、VP9、[H265](#支持的浏览器 - 1)、H264 | Opus、MPEG - 4 音频(AAC) |
直播流录制和回放可以采用以下格式:
格式 | 视频编码格式 | 音频编码格式 |
fMP4 | AV1、VP9、H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频、M - JPEG | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3、G711(PCMA、PCMU)、LPCM |
MPEG - TS | H265、H264、MPEG - 4 视频(H263、Xvid)、MPEG - 1/2 视频 | Opus、MPEG - 4 音频(AAC)、MPEG - 1/2 音频(MP3)、AC - 3 |
特点
- 往服务器发布直播流
- 从服务器读取直播流
- 流能自动在不同协议间转换
- 能同时在不同路径提供多个流服务
- 把流录制到磁盘
- 回放录制好的流
- 用户身份验证
- 将读取端重定向到其他 RTSP 服务器(负载均衡)
- 通过控制 API 控制服务器
- 不中断现有客户端连接就能重新加载配置(热重载)
- 读取和 Prometheus 兼容的指标数据
- 客户端连接、断开、读取或发布流时,能运行钩子(外部命令)
- 兼容 Linux、Windows 和 macOS 系统,无需依赖其他软件或解释器,只有一个可执行文件
https://github.com/bluenviron/mediamtx