通过终端将真实网络摄像头重定向到虚拟网络摄像头


15

有没有一种方法可以从命令行将真实的网络摄像头重定向到虚拟的网络摄像头,例如使用v4l2loopback带有的模块ffmpeg

细节

我有一个旧的网络摄像头,可以与大多数软件(vlc,cheese等)一起使用,但不能与其他软件(Skype)一起使用。

使其与此类软件一起使用的一种可能的解决方法是,使用该v4l2loopback模块将其重定向到虚拟网络摄像头(如Webcamoid所做的那样),但我需要从命令行(例如通过)进行操作ffmpeg

我确信这也是可以做到的ffmpeg,但是由于真正的网络摄像头很少重定向到虚拟网络摄像头,因此我在网上没有找到示例(我发现的唯一示例,例如示例,将屏幕截图或现有视频重定向到虚拟网络摄像头) 。



1
@LordNeckbeard答案有一些共同点,但问题却大不相同。该OP要求将预先录制的视频(input.mp4)发送到现有的物理设备,而应答者建议改用v4l2loopback。在这里,我们讨论的是将实时真实的网络摄像头发送到虚拟网络摄像头,因为这可能使该网络摄像头与某些应用程序(例如Skype)间接兼容,否则无法识别它。实际上,对该问题的答案建议使用类似ffmpeg -i input.mp4我在此处所寻找的东西。
Kubuntuer82 '18

1
@LordNeckbeard和该答案还显示了如何获取桌面,这不仅不是我在这里想要的东西,而且还与我在问题中已经提到的这篇帖子非常相似。我正在寻找不同的东西,即重定向另一个网络摄像头而不是桌面或文件(正如我在问题中也提到的那样)。我很欣赏这些解决方案基于相同的软件,但是由于问题截然不同,因此我认为将其分享给那些遇到特定问题的人们还是不错的。
Kubuntuer82 '18

Answers:


19

基于这个答案(已经在问题中提到),我想我自己找到了一个解决方案,它可以与Skype一起使用!

假设真正的网络摄像头在中/dev/video0。当你跑步

modprobe v4l2loopback

该模块会创建第二个(虚拟)网络摄像头,例如在中/dev/video1。至此,执行以下命令就足够了:

ffmpeg -i /dev/video0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video1

并且新的虚拟网络摄像头也可以与Skype一起使用和选择。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.