模拟输出

模拟输出

我可以在 gstreamer 中将摄像机用作 V4L2src 吗?简单地说,我可以在 Linux 中将摄像机用作网络摄像头吗?如果可以,有哪些型号?提前致谢。

答案1

目前有几种不同的视频采集 API,值得注意的是

  • v4l2(这是 Linux 上的通用视频 API;它几乎涵盖了除以下两个之外的所有内容)
  • iidc(这是工业“IEEE1394 视频”协议,通常在消费级硬件中找不到)
  • dv(即通常在消费级“火线摄像机”中发现的“通过 ieee1394 的 A/V 信号”;很可能这就是你所说的“摄像机”

根据您对“摄像机”的喜好,您可以使用其中的一个(或一些,或不使用)。

模拟输出

自古以来,任何像样的摄像机都带有模拟输出(例如“复合”)。为了在任何计算机上使用它,您必须先将信号数字化,这通常通过计算机中的帧抓取卡完成。bttv(bt878)和基于 connexant 的抓取器 PCI(e)卡在 linux 上得到了很好的支持(其他卡可能也很好,但我从未使用过它们),根据我的经验,如果您需要低延迟,这仍然是可行的方法,但不幸的是这些卡越来越稀少。这些卡通常由 v4l2-API 覆盖,因此v4l2src可以正常工作。

v4l2src ! ...

外部 analog2usb 和 analog2dv 抓取器已上市,见下文。

数字输出(USB)

这就是所有网络摄像头发挥作用的地方,可能是一些外部模拟 2usb 设备,也可能是一些“摄像机”。您的设备是否受支持取决于所使用的芯片组。如果它支持,这些通常会使用 v4l2-API,因此再次类似这样的操作将会起作用:

v4l2src ! ...

数字输出 (DV/HDV)

v4l2 未涵盖这些设备,而是有一个单独的 API。DV 流包含音频和视频,因此为了获取图像,您必须首先获取 DV 流,然后将两个(音频和视频)流分开(也称为“解复用/解复用它们”),然后解码生成的视频流。应该执行以下操作:

dv1394src ! dvdemux ! dvdec ! ...

如果您获取的是 HDV 流(实际上是通过 ieee1394 传输的 MPEG-TS 流),则有一个单独的hdv1394src对象:

 hdv1394src ! decodebin ! ...

数字输出 (IIDC)

工业火线摄像机(主要用于图像识别等;市场上没有使用此协议的“摄像机”,因此我仅为了完整性而添加它)使用一种称为“IIDC”的协议。

为了与 gstreamer 一起使用它,只需执行以下操作:

dc1394src ! ...

其他的

你会发现大多数其他协议(例如GigE)都是专有的工业级协议(并且不提供“摄像机”硬件)

相关内容