利用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

来看看我的推流效果:

相关推荐
计算机学姐6 分钟前
基于SpringBoot的旅游系统的设计与实现
java·vue.js·spring boot·后端·spring·java-ee·旅游
卷心菜的学习路11 分钟前
Spring Boot 多数据源落地:AbstractRoutingDataSource + 注解切面(附源码)
java·spring boot·后端
薄雾晚晴22 分钟前
大模型Skill暴论:所有Skill终将消亡?最新Skill方法论与模型增强开发实战
前端·后端·架构
MacroZheng41 分钟前
面试官皱眉:"你懂 Vibe Coding,那你说superpowers和grill-me怎么选?",我:"小孩才做选择,我全都要!"
java·人工智能·后端
千里码aicood1 小时前
flask-基于注意力机制的异常流量检测与自动防御系统
后端·python·flask
李迟1 小时前
Golang实践录:工程框架实践:搭建工程模板
开发语言·后端·golang
Lynko1 小时前
C语言指针高阶
后端
the局外人1 小时前
学习 FastAPI 的 Day 2:用异步 ORM 完成增删改查
后端·python·fastapi
SamDeepThinking1 小时前
if嵌套最好控制在3层以内
java·后端·程序员
苏渡苇1 小时前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
java·后端·spring·spring cloud·springboot·性能监控