当前位置: 首页> 文旅> 美景 > 【FFMPEG+Mediamtx】 本地RTSP测试推流记录

【FFMPEG+Mediamtx】 本地RTSP测试推流记录

时间:2025/7/29 16:42:06来源:https://blog.csdn.net/u012961177/article/details/139939533 浏览次数:0次

利用本地FFMPEG+Mediamtx 搭建本地RTSP测试推流电脑摄像头

起因

本来要用qt的qml的Video做摄像头测试。

😔但是,不在现场,本地测试,又要测试rtsp流,又因为搜了一圈找不到一个比较好的在线测试rtsp推流网址😫,只能自己本地推流了。

几年前玩yolo做多源信息融合搞过一次,没记录,最近也不忙,就记录一下吧,估计很多找不到rtsp测试流的人也很需要这样一个教程。

废话不多说,开始吧!

注意:我的场景是推流笔记本自带的摄像头

有更简单的办法可以参考: 👉 导航中 【附加】 标题 找到【2024-06-25 补充】 2

工具提前说

在这里插入图片描述

媒体开源处理神器F神(还有一个是O神,哈哈opencv)

  • FFMPEG: https://github.com/BtbN/FFmpeg-Builds/releases

推流服务器

  • Mediamtx: https://github.com/bluenviron/mediamtx/releases/

上述两个下载解压就好了,ffmepg你可以在工作目录使用,也可以按需要把他放在系统环境变量的path里面,好处就是导出都可以使用。

在这里插入图片描述

开始测试

因为我要推送的是本地摄像头,那么就需要查询一下我的设备有哪些了:

  1. 查询当前设备
ffmpeg -list_devices true -f dshow -i dummy

在这里插入图片描述

可以看到我的自带摄像头是 Integrated Camera

  1. 播放测试
    video参数换成上边你查询到的摄像头标签
ffplay -f dshow video="Integrated Camera"

这样就可以了

在这里插入图片描述

  1. 开始推流测试

(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是流地址,这个可以自定义,一般要用二级地址

在这里插入图片描述

  1. 拉流测试

这时候一共打开两个控制台
在这里插入图片描述

我这里用vlc 播放器进行拉流测试。

打开vlc–媒体–打开网络串流–输入rtsp://127.0.0.1:8554/test–播放
在这里插入图片描述

附加

如果你是用云服务器来跑mediamtx,那么拉流还可以用下面这个测试网站测试:

RTSP在线测试

在这里插入图片描述

【2024-06-25 补充】
  1. 测试一体化

我比较喜欢写点小脚本,完成一些测试,贴一下代码,主要作用就是上述复杂流畅的简化

import subprocess
import re
import timedef select_video_device(devices):"""让用户选择视频设备Args:devices (list): 设备列表Returns:str: 用户选择的设备名称"""print("可用的视频设备:")for i, device in enumerate(devices):print(f"{i+1}. {device}")choice = int(input("请选择视频设备的编号:")) - 1return devices[choice]def run_ffplay(selected_device):"""运行ffplay命令进行播放测试Args:selected_device (str): 用户选择的视频设备"""ffplay_command = f'ffplay -f dshow video="{selected_device}"'subprocess.run(ffplay_command, shell=True)def run_rtsp_push(selected_device):"""执行RTSP推流命令Args:selected_device (str): 用户选择的视频设备"""rtsp_command = f'ffmpeg -f dshow -i video="{selected_device}" -vf scale=1280:720 -framerate 10 -c:v libx264 -c:a aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/test'subprocess.run(rtsp_command, shell=True)def main():"""主函数,执行视频设备选择、播放测试和RTSP推流"""# 运行ffmpeg命令获取设备列表command = 'ffmpeg -list_devices true -f dshow -i dummy'result = subprocess.run(command, shell=True, capture_output=True, text=True, encoding='utf-8')# 提取设备列表devices = []lines = result.stderr.splitlines()for line in lines:match = re.search(r'"(.+)" \(video\)', line)if match:devices.append(match.group(1))# 让用户选择视频设备selected_device = select_video_device(devices)# 运行ffplay命令进行播放测试run_ffplay(selected_device)time.sleep(5)# 执行RTSP推流命令run_rtsp_push(selected_device)if __name__ == '__main__':main()
  1. 在安装完ffmpeg后,添加系统环境变量,直接修改yml

mediamtx.exe 自带的配置yml文件,简单又方便!!!

在这里插入图片描述

拉到最后找到Path setting:
贴上你的配置:
注意: yaml文件也是有缩进要求的,最好用带可视化缩进的编辑器编辑,这点很重要

paths:cam:runOnInit: ffmpeg -f dshow -i video="Integrated Camera" -pix_fmt yuv420p -c:v libx264 -preset ultrafast -b:v 600k -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/testrunOnInitRestart: yes

在这里插入图片描述

准备好了,双击mediamtx.exe就ok拉。

结语

还可以支持其他协议层,还有本地视频,还有很多很多,以后有机会慢慢更新,希望对您有帮助。

参考博客:https://blog.csdn.net/q771410116/article/details/137009009

关键字:【FFMPEG+Mediamtx】 本地RTSP测试推流记录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: