基于FFmpeg模拟监控摄像头输出rtsp视频
预计 7 min read
配置环境
FFmpeg
安装 FFmpeg,进入官网点击下载,也可直接使用 GitHub release 直接解压安装(直接解压更为方便,但是需要科学上网)
配置 FFmpeg 环境
在解压后的 ffmpeg-master-latest-win 64-gpl\bin
配置到环境变量里面,以便后续全局使用命令(省略配置环境步骤,同配置 python 环境类似)
MediaMTX
- MediaMTX 是一个开源的实时媒体服务器和媒体代理,可以作为 rtsp 服务器,能够将媒体流从一个端点路由到另一个端点。 进入 GitHub release 点击下载 下载完毕后解压文件即可。
视频串流查看
VLC
最简单的查看是否推流成功
操作步骤 点击媒体->打开网络串流->输入网路ur
一键执行
- 将解压 MediaMTX 的文件夹中的 yml 文件复制粘贴至脚本同级目录下(该配置文件是必须的,如果使用脚本打开 mediamtx 软件,需要将配置一并复制出来)
- 执行 python 文件,替换各文件的路径
- 点击查看源码
本地视频操作
- 准备一个视频在本地
- 在解压后的 MediaMTX 文件夹中双击
exe
文件,点击启动 RTSP 视频流服务器 - 在视频的同级目录下打开命令窗口,使用命令
ffmpeg -re -stream_loop -1 -i .\xiaomi.mp4 -c:v libx264 -f rtsp rtsp://localhost:8554/live.sdp
ffmpeg
: 调用FFmpeg程序-re
: 表示以实时速度读取输入文件。适用于流媒体输出,这样FFmpeg会模拟输入文件的真实播放速度。-stream_loop -1
:设置输入流的循环播放次数。-1
表示无限循环。此参数使得视频在播放完毕后会自动从头开始播放-i .\xiaomi.mp4
:指定输入文件。.\xiaomi.mp4
是要循环播放的本地视频文件路径(.
表示当前目录)。-c:v libx264
:设置视频编码器为libx264
,这是用于H.264编码的FFmpeg库。H.264是一种常用的高效视频编码格式,适合网络流媒体。-f rtsp
:指定输出格式为RTSP(Real-Time Streaming Protocol)。RTSP是一种网络协议,用于控制流媒体服务器的播放。rtsp://localhost:8554/live.sdp
:设置输出RTSP流的URL。localhost
表示本机,8554
是端口号,/live.sdp
是流的路径。使用该URL可以通过RTSP播放器(如VLC)访问流。
- 打开 VLC `点击媒体->打开网络串流->输入网路ur: rtsp://localhost: 8554/live.sdp
笔记本摄像头操作
- 在命令窗口查找摄像头名称
ffmpeg -list_devices true -f dshow -i dummy
- 使用命令
ffmpeg -f dshow -rtbufsize 100M -i video="USB2.0 HD UVC WebCam" -video_size 640x480 -r 15 -c:v libx264 -preset ultrafast -f rtsp rtsp://localhost:8554/live.sdp
调取摄像头,并且实时的推流
-f dshow
:指定输入格式为DirectShow。这用于从摄像头获取视频流。-rtbufsize 100M
:设置实时缓冲区大小为100MB。防止在读取视频流时因缓冲区满而丢帧。-i video="USB2.0 HD UVC WebCam"
:指定输入设备为USB2.0 HD UVC WebCam
。这是你系统中的摄像头名称。确保这个名称与实际设备匹配。-video_size 640x480
:设置视频分辨率为640x480。确保捕获的画面符合此分辨率。-r 15
:设置帧率为15帧每秒。这会影响视频流的流畅度,较低的帧率可以减小数据量。-c:v libx264
:设置视频编码器为libx264
,用于H.264编码。H.264是一种高效的视频压缩格式,常用于网络流。-preset ultrafast
:指定编码速度的预设,ultrafast
表示使用最快的编码方式,适合实时流媒体。使用更快的预设会减少CPU负担,但会牺牲压缩效率。-f rtsp
:设置输出格式为RTSP(实时流传输协议)。这使得FFmpeg能够将视频流通过RTSP协议输出。
- 打开 VLC `点击媒体->打开网络串流->输入网路ur: rtsp://localhost: 8554/live.sdp
使用 OpenCV- python 直接调取笔记本摄像头并推流
- 创建 python 文件,并设置对应的RTSP流的URL
- 在解压后的 MediaMTX 文件夹中双击
exe
文件,点击启动 RTSP 视频流服务器。 - 执行 python 脚本
- 打开 VLC `点击媒体->打开网络串流->输入网路ur: rtsp://localhost: 8554/live.sdp
评论