【问题标题】:Select more than one channel in V4L2在 V4L2 中选择多个通道
【发布时间】:2018-05-21 21:46:26
【问题描述】:

我正在使用使用 Buildroot 为 SoC Allwinner A20 构建的定制 Linux。这个 SoC 有 4 个我需要使用的模拟视频输入。问题是这个视频输入没有合适的驱动程序,所以我正在修复我能够通过互联网找到的单个驱动程序。这是此设备的 V4L2 驱动程序。

此设备可以同时从多个视频输入中捕获视频,并将它们组合成一个图像,将图像分成 2 或 4 个部分,在不同的部分显示来自每个摄像头的视频。

但是,驱动程序非常基础,还没有准备好配置它。它仅从视频输入#1 捕获。我想要做的是修改这个驱动程序,以便它允许配置您不能启用多少输入(1、2 或 4 个输入)以及哪些输入(例如:启用输入 #2 和 #4 并将它们组合成一个视频分成两部分)。

我认为的第一件事是使用 VIDIOC_S_INPUT ioctl 执行此操作,因为这是它应该做的:从具有多个输入的设备中选择要使用的输入。但是,如果我只需要选择 4 个输入中的一个,这会很好用,但我不知道如何使用它来启用 2 个或 4 个输入,更不用说在这种情况下必须启用哪些输入,以及以什么顺序启用.

如何以符合 4vl2 的方式实现这一点?我想将它与 ffmpeg 和 gstreamer 等标准软件一起使用。

【问题讨论】:

    标签: driver v4l2


    【解决方案1】:

    我猜想符合v4l2 的方法是创建4 个设备/dev/video0../dev/video3,每个设备都暴露一个捕获源,然后在用户空间进行覆盖。

    如果这是不可能的,并且您确实只能通过单个设备 (/dev/video0) 呈现单个组合视频流,因为该设备会将流合并到硬件中,那么我不认为使用 VIDIOC_S_INPUT不碍事。只要想出一个好的编号方案...

    但是(重新迭代),如果流合并不是在硬件中而是在软件中完成,那么您应该永远不要在内核空间中并且始终在用户空间中这样做(所以你应该通过 4 个设备文件公开 4 个流)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2021-09-24
      • 1970-01-01
      • 2018-05-18
      • 2021-09-13
      • 2021-01-06
      • 1970-01-01
      相关资源
      最近更新 更多