利用本地FFMPEG+Mediamtx 搭建本地RTSP测试推流电脑摄像头
起因
本来要用qt的qml的Video做摄像头测试。
😔但是,不在现场,本地测试,又要测试rtsp流,又因为搜了一圈找不到一个比较好的在线测试rtsp推流网址😫,只能自己本地推流了。
几年前玩yolo做多源信息融合搞过一次,没记录,最近也不忙,就记录一下吧,估计很多找不到rtsp测试流的人也很需要这样一个教程。
废话不多说,开始吧!
注意:我的场景是推流笔记本自带的摄像头
工具提前说
媒体开源处理神器F神(还有一个是O神,哈哈opencv)
- FFMPEG: https://github.com/BtbN/FFmpeg-Builds/releases
推流服务器
- Mediamtx: https://github.com/bluenviron/mediamtx/releases/
上述两个下载解压就好了,ffmepg你可以在工作目录使用,也可以按需要把他放在系统环境变量的path里面,好处就是导出都可以使用。
开始测试
因为我要推送的是本地摄像头,那么就需要查询一下我的设备有哪些了:
- 查询当前设备
ffmpeg -list_devices true -f dshow -i dummy
可以看到我的自带摄像头是 Integrated Camera
- 播放测试
video参数换成上边你查询到的摄像头标签
ffplay -f dshow video="Integrated Camera"
这样就可以了
- 开始推流测试
(1)打开mediamtx
(2) ffmjeg推流
ffmpeg -f dshow -i video="Integrated Camera" -vf scale=1280:720 -framerate 10 -c:v libx264 -c:a aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/test
命令说明:
- -f dshow -framerate 10 -i video=“Integrated Camera” 指定使用dshow输入设备来捕获本地摄像头,名称为"Integrated Camera",并设置输出帧率为10。
- -c:v libx264 指定视频编码器为libx264,您也可以选择其他视频编码器。
- -c:a aac 指定音频编码器为AAC,您也可以选择其他音频编码器。
- -rtsp_transport tcp 应用层传输协议为tcp
- -f rtsp 指定输出格式为RTSP。 rtsp://127.0.0.1:8554/test是流地址,这个可以自定义,一般要用二级地址
- 拉流测试
这时候一共打开两个控制台
我这里用vlc 播放器进行拉流测试。
打开vlc–媒体–打开网络串流–输入rtsp://127.0.0.1:8554/test–播放
附加
如果你是用云服务器来跑mediamtx,那么拉流还可以用下面这个测试网站测试:
RTSP在线测试
结语
还可以支持其他协议层,还有本地视频,还有很多很多,以后有机会慢慢更新,希望对您有帮助。
参考博客:https://blog.csdn.net/q771410116/article/details/137009009