利用FFmpeg快速实现一个RTSP推流服务器

FFmpeg本身不能直接作为RTSP服务器,需要搭配一个专门的RTSP服务器软件来配合验证。最常用的方案是使用 MediaMTX (曾用名 rtsp-simple-server)。

整个流程就是:先启动MediaMTX服务,然后用FFmpeg把本地视频文件或屏幕画面推送给它,最后用 ffplay 或者VLC来拉流播放,这样就完成了一次完整的验证。

第一步:部署RTSP服务器 (MediaMTX)

你可以选择下面任意一种方式快速启动一个RTSP服务。

方式一:直接运行二进制文件(推荐)

  1. 去 MediaMTX GitHub Releases 页面 下载和你操作系统匹配的最新版本压缩包。
  2. 解压后,在终端/命令行里执行解压出的 mediamtx 可执行文件。它会使用默认配置启动,默认监听端口是 8554。
  3. 看到类似 server is ready 的日志,就说明服务已经跑起来了。

方式二:使用Docker(如果你熟悉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

    bash 复制代码
    ffmpeg -re -i 你的视频文件.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream
  • 循环推送一个视频文件 : 加上 -stream_loop -1,视频播完后会自动从头开始循环。

    bash

    bash 复制代码
    ffmpeg -re -stream_loop -1 -i 你的视频文件.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream
  • 推送电脑屏幕(Windows) : 可以用来共享你的桌面。

    bash

    bash 复制代码
    ffmpeg -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

来看看我的推流效果:

相关推荐
EatFan9 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
波力海苔夹心脆67510 小时前
C# 序列化与反序列化详解:System.Text.Json、Newtonsoft.Json、XmlSerializer 用法、特性选项与安全实践
经验分享·后端·c#·json·.net
JavaGuide11 小时前
NVIDIA 又开源了!这次给 AI Agent 加上权限管控
前端·后端
excel11 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
IT_陈寒14 小时前
Java线程池这破玩意,差点让我周末加班排查到凌晨
前端·人工智能·后端
弈栈录14 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
凤山老林15 小时前
Spring Boot 集成 iText 7 实现动态 PDF 生成与电子签章:合同、报表场景实战
spring boot·后端·pdf·itext7·电子签章
孙启超15 小时前
【AI开发之Rust】第 19 课:UniFFI 导出核心能力
开发语言·后端·rust
ServBay15 小时前
基于Jev的浏览器Agent插件狂揽 21k star,3分钟教你解放双手
后端·aigc·ai编程