通过软件捕获USB C型视频

Bre*_*nan 5 usb video-capture

所以,我只是在想一件事:理论上是否可以将诸如带有 USB-C 的 Switch 之类的东西连接到 PC 并执行类似于通过软件模拟捕获卡的操作。我对 C 型的规范做了一些阅读,但我不确定这样的事情是否可行。我认为这样的事情也必须是相当低级的。

ral*_*htp 6

USB 协议按设备类进行组织,即大容量存储设备类、通信设备类 (CDC) 和USB 视频设备类 (UVC)几乎所有现代相机设备都实现了此 UVC 类,您可以使用类似软件捕获 UVC 设备流vlc

https://en.wikipedia.org/wiki/USB_video_device_class

https://ubuntuforums.org/showthread.php?t=143732 - 如何:使用 VLC 将网络摄像头中的视频捕获到文件中

USB-C 标准是连接器的物理布局,它并没有改变 USB 标准的基本组织结构,如其设备类别的差异,因此有带有 USB-C 连接器的 UVC 设备,请在互联网上搜索 ie 'webcam USB-C '然而,USB-C通过交替模式扩展了端口的功能,因此还使用具有不同固件和内核模块的不同端口控制器

Alt Mode 是 USB-C 的功能扩展,使 USB 连接能够承载非 USB 信号

来源:https : //blog.startech.com/post/tech-talk-using-usb-c-and-displayport-over-alt-mode/

https://en.wikipedia.org/wiki/USB-C

我不完全理解的是,如果您想通过USB-C HDMI 备用模式https://en.wikipedia.org/wiki/HDMI#HDMI_Alternate_Mode_for_USB_Type-C)通过USB-C捕获 HDMI 流。这种情况下没有USB Video Device协议(HDMI是不同的协议),情况比较复杂,见https://superuser.com/questions/1218848/hdmi-input-through-usb-chttps:/ /superuser.com/questions/1192638/whats-up-with-hdmi-and-displayport-over-usb-c

有一些有源 HDMI 转 USB 视频采集卡,可将 HDMI 流转换为视频格式,然后通过 USB 视频类协议传输或直接转换为原始像素数据。此原始像素数据也封装在 USB 视频类协议 ( https://devtalk.nvidia.com/default/topic/970330/how-to-handle-raw-from-usb-cameras/?offset=2 ) 中:

其他视频捕获解决方案将您的视频压缩到 H.264 或 Motion JPG 之类的容器中,因此它足够小以适应 USB 2.0 总线(最大数据传输速率为 60 MB/s 的介质)。当它到达您的计算机时,CPU 和/或 GPU 需要解压缩该图像,然后使用您的编码设置对其进行重新编码。使用这种类型的预压缩视频,永远不可能恢复在压缩中丢失的全部细节。

相比之下,我们的 AV.io 系列 HDMI 采集卡通过 USB 3.0(最大传输速度为 640 MB/s)将原始像素数据发送到您的计算机。 当您的软件接收到此流时,它不需要对其进行解码,因此繁重的工作会减少。

来源:https : //www.epiphan.com/blog/easiest-hdmi-to-usb-converter/

原始像素数据可在HDMI备用模式被转移了USB-C应能直接从USB-C捕获HDMI流,但是有一个很大的缺点:

有问题的是,在USB(-C)协议的机器可以是一个 主机设备双重角色

设备可以是主机(DFP:面向下游的端口)或外围设备(UFP:面向上游的端口)。有些,例如移动电话,可以根据在另一端检测到的类型来扮演任一角色。这些类型的端口称为双重角色数据 (DRD) 端口,在之前的规范中称为 USB On-The-Go。 [12]

在 USB 树中只能有一个主机,并且在大多数情况下,一台计算机充当主机的角色。USB-C 输入或外围设备(如显示器)处于设备或外围模式。如果您无法将计算机设置为设备或外围设备模式,则由于 USB 协议,您将无法通过 USB-C 捕获 HDMI 信号

关键是USB-C 端口控制器固件和内核模块/驱动程序

linux USB-C 内核模块位于https://github.com/torvalds/linux/blob/master/drivers/usb/host/xhci.chttps://cateee.net/lkddb/web-lkddb/TYPEC_TCPM .html并且它被定义为 USB-C主机仅面向下游的端口,因此无法将其用作 HDMI 接收器或面向上游的端口,因此无法将其用作输入并从中捕获...

无法将 USB-C 端口设置为设备模式或面向上游的端口模式是必须使用外部适配器的原因

作为 USB 外围设备或面向上游端口模式的 USB-C 设备的示例是 https://9to5mac.com/2016/06/04/lg-27ud88-w-usb-c-4k-monitor-macbook -review/所以在这个设备中运行的固件通过 USB-C 连接器处理 HDMI 流,但是在 USB 协议中它实现了一个面向上游的端口,这是计算机或笔记本电脑由于实现 USB 主机的硬件限制而无法实现的或面向下游的端口..