在Windows操作系统上,快速部署一个支持多协议、低延迟且稳定的流媒体服务器有多种实现方案。本文将以 Mediamtx + FFmpeg 这套轻量级组合为例,详细介绍从环境准备、服务器配置、推流操作到最终播放验证的全流程,并提供一系列实用的进阶配置技巧。
本方案的核心优势在于其轻量、易用与多功能性,非常适用于以下场景:
🟢 本地视频文件的循环播放与分发
🟢 支持RTSP、RTMP、WebRTC等多协议流媒体输出
🟢 设备模拟测试、局域网内直播、AI视觉处理管道的视频输入源搭建
🟢 替代传统硬件摄像头(如海康、大华),作为灵活的自定义视频源
1. 核心组件介绍
Mediamtx 是一个零依赖的跨平台媒体网关,其主要特点包括:
- 支持 RTSP、RTMP、WebRTC、SRT、HLS 等主流流媒体协议
- 内置Web管理界面,方便监控与管理
- 单文件可执行,无需复杂安装过程
- 资源占用极低,非常适合嵌入式设备、Windows桌面或服务器等资源受限场景
它的核心定位是:将任意输入的媒体源,转化为支持多协议输出的通用网关。
FFmpeg:开源多媒体处理框架
FFmpeg 是音视频领域功能最强大的工具套件之一,常用于:
- 读取各类音视频文件或采集设备(如摄像头、麦克风)
- 进行转码、滤镜处理、流封装等操作
- 向 RTSP、RTMP 等服务器推流
在本方案中,两者的分工明确:FFmpeg 负责采集和推流(输入源处理),Mediamtx 负责接收和分发(流媒体服务器)。
2. 安装与配置
- 访问 Mediamtx 的 GitHub Releases 页面:https://github.com/bluenviron/mediamtx/releases
- 下载适用于 Windows 的版本,例如
mediamtx_v1.15.5_windows_amd64.zip。
- 解压下载的ZIP文件,你将得到两个主要文件:
mediamtx.exe(主程序)和 mediamtx.yml(配置文件)。
- 启动服务器:直接双击
mediamtx.exe,或在命令行中执行 mediamtx.exe。
启动成功后,控制台会显示服务器监听的端口信息,例如:
• RTSP: 8554
• RTMP: 1935
• WebRTC: 8889
• HLS: 8888
至此,一个功能完整的流媒体服务器已准备就绪。
2.2 安装 FFmpeg
- 推荐从官方推荐站点(如 gyan.dev)下载已编译好的 Windows 版本。
- 解压下载的压缩包,进入
bin 目录,其中包含 ffmpeg.exe 和 ffprobe.exe 等核心可执行文件。
- 为了方便在任意路径下调用,建议将
bin 目录的完整路径添加到系统的环境变量 PATH 中。
- 验证安装:打开新的命令提示符窗口,输入
ffmpeg -version,若能正确显示版本信息即表示安装成功。
3. 推流命令深度解析
一个典型的应用场景是将本地视频文件推送到 Mediamtx 服务器(通过RTSP协议)。命令如下:
ffmpeg -re -stream_loop -1 -i input_video.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/mystream
下面对关键参数进行逐一解释:
| 参数 |
含义与作用 |
-re |
以原始帧率读取输入,模拟实时直播流,避免“快进”播放。 |
-stream_loop -1 |
无限循环播放输入的视频文件。-1 代表循环无数次。 |
-i input_video.mp4 |
指定输入源,请将其替换为你的实际视频文件路径。 |
-c copy |
使用“流复制”模式,不对音视频进行重新编码,极大降低CPU占用。 |
-f rtsp |
指定输出格式为 RTSP 流。 |
rtsp://127.0.0.1:8554/mystream |
推流目标地址。127.0.0.1:8554是服务器地址,/mystream是自定义的流路径名。 |
执行该命令后,若推流成功,Mediamtx 控制台将显示类似 RTSP session opened 的连接日志,表明视频流已成功注入服务器。
4. 验证与播放
方法一:使用 VLC 播放器
打开 VLC 播放器,点击“媒体” -> “打开网络串流”,输入地址:
rtsp://127.0.0.1:8554/mystream
即可实时播放推送到服务器的视频流。
方法二:使用 ffplay (FFmpeg 自带)
在命令行中直接使用 ffplay 进行播放:
ffplay rtsp://127.0.0.1:8554/mystream
这是 Mediamtx 的一大特色功能,可实现浏览器内超低延迟播放。打开浏览器,访问:
http://127.0.0.1:8889
在打开的Web界面中,选择读取名为 mystream 的流,即可通过 WebRTC 协议在网页中直接观看。
5. 进阶配置与技巧
5.1 修改默认端口
编辑 mediamtx.yml 配置文件,找到以下段落并修改端口号:
rtspPort: 8554
rtmpPort: 1935
webrtcPort: 8889
hlsPort: 8888
修改后保存文件,并重启 Mediamtx 服务使配置生效。
5.2 设置推流鉴权(防止恶意推流)
在 mediamtx.yml 的 paths 配置段中,为特定流路径设置用户名和密码:
paths:
mystream:
publishUser: admin
publishPass: 123456
配置后,推流地址需要包含认证信息:
ffmpeg ... rtsp://admin:123456@127.0.0.1:8554/mystream
5.3 推送 USB 摄像头画面
利用FFmpeg的 dshow 组件捕获摄像头视频并推流:
ffmpeg -f dshow -i video="USB Camera Name" -f rtsp rtsp://127.0.0.1:8554/cam
请将 "USB Camera Name" 替换为你的摄像头在系统中的实际名称。
5.4 推送桌面屏幕画面
使用 gdigrab 设备捕获整个桌面屏幕并推流:
ffmpeg -f gdigrab -i desktop -f rtsp rtsp://127.0.0.1:8554/screen
6. 总结
通过 Mediamtx + FFmpeg 的组合,我们可以在 Windows 平台上快速搭建起一个功能强大、协议全面的流媒体服务。该方案部署简单,资源消耗小,且能灵活适应从本地文件推流到硬件设备采集等多种输入源,是进行流媒体技术开发、测试和嵌入式应用原型验证的理想工具栈。除了本文介绍的方法,流媒体服务器领域还有 Nginx with RTMP module、SRS、Nimble 等多种优秀方案可供探索。