在 Windows 下使用 MediaMTX 服务器,推流和拉流命令基本保持不变,主要区别在于MediaMTX 自身支持多种流媒体协议,你可以按需选择。
1. 基础准备:运行 MediaMTX
在 Windows 上使用 MediaMTX 非常简单,无需安装。
下载:从 GitHub 发布页下载
mediamtx_windows_amd64.zip文件。运行:解压后,直接双击
mediamtx.exe运行。你会在命令行窗口看到类似下面的日志,这表明服务器成功启动,并开启了多个端口的监听服务。
text
2023/12/10 14:18:25 INF [RTSP] listener opened on :8554 2023/12/10 14:18:25 INF [RTMP] listener opened on :1935 2023/12/10 14:18:25 INF [HLS] listener opened on :8888
这意味着你的推流和拉流地址需要根据选择的协议来调整。
2. 推流命令 (使用 FFmpeg)
和之前一样,但你可以选择推送到不同的协议端口。MediaMTX 默认支持 RTMP (1935)、RTSP (8554) 等。
推 RTMP 流(和你之前的用法几乎一样)
只需将rtmp://地址中的 IP 改为你的 Windows 电脑 IP 或127.0.0.1(本地测试)。bash
ffmpeg -re -f lavfi -i "sine=frequency=1000" -c:a aac -ar 44100 -b:a 64k -f flv rtmp://127.0.0.1:1935/live/test
推 RTSP 流
如果想用 RTSP 协议,就推送到 8554 端口。bash
ffmpeg -re -f lavfi -i "sine=frequency=1000" -c:a aac -ar 44100 -b:a 64k -f rtsp rtsp://127.0.0.1:8554/live/test
注意:根据 MediaMTX 官方文档,如果使用 FFmpeg 8.0 版本,必须同时包含视频和音频轨道,否则可能会出错。对于纯音频推流,可以考虑使用较早版本的 FFmpeg 或加上一个虚拟的视频源。
3. 拉流播放命令
拉流时,根据你推流时选择的协议,使用对应的播放地址即可。
| 协议 | 拉流地址示例 | 播放命令 (FFplay / VLC) |
|---|---|---|
| RTMP | rtmp://127.0.0.1:1935/live/test | ffplay rtmp://127.0.0.1:1935/live/test |
| RTSP | rtsp://127.0.0.1:8554/live/test | ffplay rtsp://127.0.0.1:8554/live/test |
| HLS | http://127.0.0.1:8888/live/test | 可直接用 Chrome 浏览器打开此地址 |
提示:
127.0.0.1是本地回环地址,用于本机测试。如果是局域网内另一台设备拉流,需要把127.0.0.1替换为运行 MediaMTX 的 Windows 电脑的实际局域网 IP 地址(例如192.168.x.x)。
4. 关于 Windows 防火墙的提醒
如果你是局域网内其他设备来拉流,需要注意 Windows 防火墙可能会拦截流量。可以通过以下命令(以管理员身份运行CMD)放行端口,例如放行 RTSP 的 8554 端口:
cmd
netsh advfirewall firewall add rule name="Allow Port 8554" dir=in action=allow protocol=TCP localport=8554
如果需要,也可以为 RTMP 的 1935 端口执行类似操作。