1

我正在使用安装了 Linux 的电路板。最终它将被用作 USB 网络摄像头。我构建了内核并添加了一个 UVC 驱动程序。

我正在按照这些说明进行测试。不幸的是,当我连接主机并运行应用程序时,出现以下错误:

v4l2_core: (jpeg decoder) error while decoding frame

我想测试在主机上使用的应用程序。有几个问题。

在我使用的 linux 板上,当我执行时modrobe g_webcam,我得到一个新的视频设备出现在/dev,中/dev/video0。当我在主机上执行它时Linux ubuntu 4.10.0-32-generic #36~16.04.1-Ubuntu SMP Wed Aug 9 09:19:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux,没有任何反应。我四处搜索,但我无法找到为什么会发生这种情况的答案。

  1. 那么如何在 linux 上创建视频设备并将其绑定到 UVC 小工具g_webcam
  2. 假设我们找到了第 1 步。在我执行之后uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>,我将如何从小工具中读取数据?

任何帮助表示赞赏。

4

1 回答 1

1

modprobe g_webcam当我在我的主机上执行它 [ ] 时Linux ubuntu 4.10.0-32-generic #36~16.04.1-Ubuntu SMP Wed Aug 9 09:19:02 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux,没有任何反应

这是预期的。您的 x86_64 主机可能没有 OTG UDC,因此无法在其中启用小工具。您可以检查dmesg主机以确认这一点,但无论如何您都不应该modprobe g_webcam在主机上运行。

那么如何在 linux 上创建视频设备并将其绑定到 UVC 小工具g_webcam

您的modprobe g_webcam命令创建了输出视频设备。当您运行uvc-gadget它时,它知道要绑定到/dev/video0,您可以从源代码中看出这一点。

执行后uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>,我将如何从小工具中读取数据?

在主机上,首先确认/dev/videoX枚举正确(运行dmesg)。接下来,使用 guvcview 等 UVC 相机查看器:sudo apt install guvcview

不幸的是,当我连接主机并运行应用程序时,出现以下错误:v4l2_core: (jpeg decoder) error while decoding frame

您是否在设备而不是主机上收到该错误?我自己没有使用过vivid,但不幸的是,两端的UVC可能会出现很多问题。我建议您首先使用合成数据(./uvc-gadget -d)而不是生动的,以及未压缩的 YUYV 而不是 JPEG(-f 0)来隔离问题。您可以提前进行许多调试步骤,但这至少可以将您带到主机可以看到图像流的起点。

于 2017-10-19T18:45:35.407 回答