使 Linux 设备 (Raspberry Pi) 的行为类似于另一台计算机的 UVC 设备需要什么?本质上,我想使用 ffmpeg 的输出来表现得像另一台计算机的网络摄像头输入。
2 回答
使 Linux 设备 (Raspberry Pi) 的行为类似于另一台计算机的 UVC 设备需要什么?
这实际上可以在没有自定义内核的 Pi Zero 上完成。在dtoverlay=dwc2
config.txt 中设置 OTG 支持后,重新启动并运行:
sudo modprobe g_webcam
./uvc-gadget -d
这些是通过流式传输合成数据使您的 Pi 充当网络摄像头的第一步,您可以在 Skype、FaceTime 或其他网络摄像头查看器中进行测试。这是 uvc-gadget 用户空间程序的源代码及其常用的推荐补丁。
本质上,我想使用 ffmpeg 的输出来表现得像另一台计算机的网络摄像头输入。
这部分可能涉及更多。现有的 uvc-gadget 程序据说可以播放通过 GStreamer 捕获的网络摄像头记录,本文对此进行了更多讨论。对于 FFmpeg 的任意输入,您可能必须将您自己的输出插件代码与 uvc-gadget 集成。
如果您使用压缩:请注意 FFmpeg 已经可以以各种容器格式输出 mjpeg,但该数据仍必须转换为 UVC 有效负载 mjpeg 格式。
您将大致需要一个支持 USB OTG 的 RPi,而 RPi 3 则不具备此能力。然后您将需要一个自定义内核驱动程序来模拟真实设备的 UVC 驱动程序,我不知道有任何项目直接执行此操作。
我能想到的最简单的方法是通过 RTMP 流式传输录制的图像,而不是尝试模拟 UVC,因为这不是一个小壮举。