我正在使用安装了Linux的主板。最终它将用作USB网络摄像头。我构建了内核并为其添加了一个UVC驱动程序。
我正在关注these instructions来测试它。不幸的是,当我连接主机并运行应用程序时,我收到以下错误:
v4l2_core: (jpeg decoder) error while decoding frame
我想在我的主机上测试application that I'm using。这有几个问题。
在我使用的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
上执行它时,没有任何反应。我谷歌周围,但我无法找到为什么会发生这种情况的答案。
g_webcam
的UVC小工具?uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>
后,如何从小工具中读取数据?感谢任何帮助。
答案 0 :(得分: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上创建视频设备并将其绑定到
g_webcam
的UVC小工具?
您的modprobe g_webcam
命令创建了输出视频设备。当您运行uvc-gadget
时,它知道要绑定到/dev/video0
,您可以从源代码中知道。
执行
uvc-gadget -u /dev/video<uvc video node #> -v /dev/video<vivid video node #>
后,如何从小工具中读取数据?
在主机上,首先确认/dev/videoX
正确枚举(运行dmesg
)。接下来,使用UVC相机查看器,例如guvcview:sudo apt install guvcview
不幸的是,当我连接主机并运行应用程序时,出现以下错误:
v4l2_core: (jpeg decoder) error while decoding frame
您是否在设备上而不是主机上收到了该错误?我自己并没有使用过生动,但不幸的是,两端的UVC都有很多问题。我建议您首先运行合成数据(./uvc-gadget -d
)而不是生动,以及未压缩的YUYV而不是JPEG(-f 0
)来隔离问题。您可以提前进行许多调试步骤,但这至少可以让您到达主机可以看到图像流的起点。