FFmpeg本身不能直接作为RTSP服务器,需要搭配一个专门的RTSP服务器软件来配合验证。最常用的方案是使用 MediaMTX (曾用名 rtsp-simple-server)。
整个流程就是:先启动MediaMTX服务,然后用FFmpeg把本地视频文件或屏幕画面推送给它,最后用 ffplay 或者VLC来拉流播放,这样就完成了一次完整的验证。
第一步:部署RTSP服务器 (MediaMTX)
你可以选择下面任意一种方式快速启动一个RTSP服务。
方式一:直接运行二进制文件(推荐)
- 去 MediaMTX GitHub Releases 页面 下载和你操作系统匹配的最新版本压缩包。
- 解压后,在终端/命令行里执行解压出的
mediamtx可执行文件。它会使用默认配置启动,默认监听端口是8554。 - 看到类似
server is ready的日志,就说明服务已经跑起来了。
方式二:使用Docker(如果你熟悉Docker)
bash
bash
docker run -d --name rtsp-server -p 8554:8554 -p 8000:8000/udp -p 8001:8001/udp aler9/rtsp-simple-server
第二步:使用FFmpeg推流
接下来,打开另一个终端窗口,用FFmpeg把视频源推到你刚启动的RTSP服务器上。你需要保持第一个终端里的MediaMTX一直在运行。
这里有几个常用的推流示例,你可以选一个试试:
-
推送一个本地视频文件(最常用) : 用
-re参数保证视频以正常速度播放,而不是瞬间传完。bash
bashffmpeg -re -i 你的视频文件.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream -
循环推送一个视频文件 : 加上
-stream_loop -1,视频播完后会自动从头开始循环。bash
bashffmpeg -re -stream_loop -1 -i 你的视频文件.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream -
bash
bashffmpeg -f gdigrab -framerate 15 -video_size 1920x1080 -i desktop -c:v libx264 -preset ultrafast -f rtsp rtsp://localhost:8554/mystream
第三步:验证拉流播放
推流开始后,你可以用 ffplay 直接播放刚才推送的RTSP地址,来验证整个环境是否搭建成功:
bash
bash
ffplay rtsp://localhost:8554/mystream
如果你用的是VLC播放器,也可以打开"网络串流",输入这个地址进行播放。
顺利的话,你应该就能看到视频画面了。如果 ffplay 提示连接失败,可以检查下第一个终端里的 mediamtx 是否正常运行。如果看到视频但感觉延迟比较高,可以试试把 rtsp_transport 设置成 TCP 模式:
bash
bash
ffplay rtsp://localhost:8554/mystream -rtsp_transport tcp
来看看我的推流效果:
