当前位置: 首页 > news >正文

USB摄像头视频流转RTSP流

一、VLC查看USB摄像头视频流原理:
USB摄像头的工作原理与VLC播放其他视频文件类似,主要区别在于视频流的来源是实时捕获的,而不是预先录制的文件。如果使用VLC将USB摄像头的视频流作为RTSP服务器广播,需要进一步配置

二、VLC查看USB摄像头视频流过程:

  1. 识别设备
    • 当USB摄像头连接到计算机时,操作系统会识别这个新设备,并尝试加载适当的驱动程序。
  2. 设备枚举
    • VLC会枚举所有可用的视频捕捉设备,这通常是通过DirectShow(Windows)Video4Linux(Linux)AVFoundation(macOS)等框架来完成的。
    • 用户可以在VLC中选择“媒体”(Media)菜单中的“打开捕获设备”(Open Capture Device)选项,然后在弹出的对话框中看到所有识别到的视频捕捉设备。
  3. 配置捕获参数
    • 用户可以在VLC中配置捕获参数,如视频分辨率、帧率、压缩格式等。
  4. 打开设备
    • 用户选择好摄像头和配置后,VLC将尝试打开这个设备。
  5. 视频流捕获
    • 一旦设备被成功打开,摄像头开始捕捉视频并将其发送到计算机。
  6. 解码和显示
    • VLC接收到原始的视频数据后,会使用相应的解码器(通常是H.264、MJPEG或其他格式,取决于摄像头支持的编码)对视频流进行解码,然后送显。
  7. 实时播放
    • VLC会以实时方式播放视频流,这意味着它会尽可能快地处理和显示每一帧,从而使用户能够观看到实时的视频画面。

三、VLC查看USB摄像头视频流播放方法:
在VLC媒体播放器中,dshow:// 是一个特殊的协议,用于访问DirectShow设备。DirectShow是微软提供的一套在Windows操作系统中用于处理多媒体流的框架。以下是关于 dshow:// 协议的一些详细信息:
在这里插入图片描述

  1. DirectShow
    • DirectShow是Windows平台上用于捕获和播放音频及视频的一种技术。
    • 它可以处理来自各种源的数据,包括USB摄像头、DV摄像机、电视调谐器等。
  2. dshow:// 协议
    • VLC使用 dshow:// 协议来与DirectShow框架交互,从而能够访问连接到计算机上的DirectShow兼容设备。
    • 当在VLC中使用 dshow:// 协议时,VLC会列出所有可用的DirectShow设备,包括USB摄像头。
  3. 使用方法
    • 在VLC中,你可以通过输入以下格式的URL来访问USB摄像头:
dshow://
  1. **其他配置:
    • dshow:// 协议后,你可以指定特定的设备名称或设备ID,以及配置参数,如分辨率、帧率等。例如:

// 通过这种方式,VLC能够直接利用DirectShow的功能,提供实时的视频捕获和播放功能,这对于使用USB摄像头进行视频会议、监控或直播等活动非常有用。dshow:// :dshow-vdev="USB Video Device" :dshow-adev="麦克风阵列 (Realtek High Definition Audio)" :dshow-size="640x480" :dshow-fps=30

四、USB摄像头的视频流转为RTSP流: 使用VLC,或者使用FFmpeg

  1. 使用VLC作为服务器进行转流(方法一)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 使用FFmpeg查看设备状态:(方法二)

// 执行如下命令
ffmpeg -list_devices true -f dshow -i dummy

在这里插入图片描述

  1. 使用FFmpeg作为RTSP流媒体服务器,进行转流:先打开mediamtx.exe(方法二)
    在这里插入图片描述

  2. 运行FFmpeg命令如下,选一个命令即可:(方法二)


// 以下命令直接在放置ffmpeg.exe的文件夹的空白处,右键打开cmd执行。或者在文件夹头部的路径栏中输入cmd+回车,也可以唤起cmd。一句话就是cmd的路径要正确// 命令一
ffmpeg -f dshow -i video="WN USB CAMERA" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test// 命令二 缓冲区溢出(实时缓冲区的大小可能不足以处理从摄像头捕获的视频流)执行本命令指定缓冲区为10MBffmpeg -f dshow -i video="WN USB CAMERA" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -rtbufsize 10485760 -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test// 命令三
ffmpeg -f dshow -i video="WN USB CAMERA" -vcodec libx264 -preset ultrafast -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test
  1. 然后再VLC中使用:rtsp://127.0.0.1/test 查看视频即可
    在这里插入图片描述


其他补充:

  1. 可能会出现如下情况缓冲区溢出问题:
    在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python | Leetcode Python题解之第401题二进制手表
  • Python世界:基于PESQ的自动化语音打分脚本实践
  • 2024全球数字电影摄像机、相机、广播摄像机市场报告
  • 两个网站访问统计系统的访客页面访问轨迹停留对比
  • 揭开OpenAI草莓模型神秘面纱——重塑大语言模型的逻辑能力
  • 专注LabVIEW 做好一件事
  • 数据填充-随机森林填充
  • 算法学习路线总结:算法工程师的修炼手册
  • “左侧文字横向”的QTabWidget
  • MyBatis-Plus分页查询、分组查询
  • 区块链Dapp开发:质押挖矿的各模式开发详解
  • 自选择问题和处理效应模型
  • 【Linux修行路】信号的产生
  • 性能测试的复习3-jmeter的断言、参数化、提取器
  • Apache Pulsar 与 Kafka Streams
  • C语言笔记(第一章:C语言编程)
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript 一些 DOM 的知识点
  • Mithril.js 入门介绍
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Vue 重置组件到初始状态
  • 彻底搞懂浏览器Event-loop
  • 记一次和乔布斯合作最难忘的经历
  • 蓝海存储开关机注意事项总结
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 一些关于Rust在2019年的思考
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​学习一下,什么是预包装食品?​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (20050108)又读《平凡的世界》
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (算法)硬币问题
  • (转)ORM
  • (转)程序员技术练级攻略
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .net FrameWork简介,数组,枚举
  • .NET Micro Framework初体验
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET与 java通用的3DES加密解密方法
  • /3GB和/USERVA开关
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • :not(:first-child)和:not(:last-child)的用法