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摄像头:
VLC 复制代码
dshow://
  1. **其他配置:
    • dshow:// 协议后,你可以指定特定的设备名称或设备ID,以及配置参数,如分辨率、帧率等。例如:
VLC 复制代码
// 通过这种方式,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作为服务器进行转流(方法一)



    不要勾选激活转码

    打开一个cmd查看本机ip:使用命令 ipconfig,我这里是使用的WiFi

运行如下命令:

复制代码
// 不激活编码,这里的网络地址需要替换为本地机的IP地址,可以在cmd中使用ipconfig查看
:sout=#rtp{sdp=rtsp://123.45.6.78:8554/test} :no-sout-all :sout-keep

不要勾选串流所有基本流

  1. 使用FFmpeg查看设备状态:(方法二)
FFmpeg 复制代码
// 执行如下命令
ffmpeg -list_devices true -f dshow -i dummy
  1. 使用FFmpeg作为RTSP流媒体服务器,进行转流:先打开mediamtx.exe(方法二)

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

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

// 命令二 缓冲区溢出(实时缓冲区的大小可能不足以处理从摄像头捕获的视频流)执行本命令指定缓冲区为10MB

ffmpeg -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. 可能会出现如下情况缓冲区溢出问题:
相关推荐
REDcker12 天前
WebCodecs VideoDecoder 的 hardwareAcceleration 使用
前端·音视频·实时音视频·直播·webcodecs·videodecoder
gihigo199812 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
youcans_12 天前
【AI辅助编程】ROP 图像预处理
图像处理·人工智能·ai编程·辅助编程
山河君12 天前
四麦克风声源定位实战:基于 GCC-PHAT + 最小二乘法实现 DOA
算法·音视频·语音识别·信号处理·最小二乘法·tdoa
sali-tec12 天前
C# 基于OpenCv的视觉工作流-章27-图像分割
图像处理·人工智能·opencv·算法·计算机视觉
NGBQ1213812 天前
Imgflip社交媒体表情包数据集-202208条多模板meme数据-包含完整图片URL和文本说明-适用于NLP模型训练和社交媒体分析
人工智能·自然语言处理·媒体
音视频牛哥12 天前
Android平台RTMP/RTSP超低延迟直播播放器开发详解——基于SmartMediaKit深度实践
android·人工智能·计算机视觉·音视频·rtmp播放器·安卓rtmp播放器·rtmp直播播放器
qq_4162764212 天前
通用音频表征的对比学习
学习·音视频
美狐美颜sdk12 天前
Android全局美颜sdk实现方案详解
人工智能·音视频·美颜sdk·视频美颜sdk·美狐美颜sdk
EasyDSS12 天前
私有化部署EasyDSS视频点播能力:全链路视频技术赋能,打造企业级视听新体验
音视频·hls·m3u8·点播技术·智能转码