我v4l2loopback
在 Ubuntu 18.04 机器上运行v4l2-ctl
并virtualbox
安装。
我使用下面的命令来初始化环回相机:
sudo modprobe v4l2loopback video_nr=2 card_label="Hello world" exclusive_caps=1 devices=1
v4l2-ctl --device=/dev/video2 --all
上面第二个命令的输出是:
Driver Info (not using libv4l2):
Driver name : v4l2 loopback
Card type : Hello world
Bus info : platform:v4l2loopback-000
Driver version: 5.3.18
Capabilities : 0x85208000
Video Memory-to-Memory
Read/Write
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x05208000
Video Memory-to-Memory
Read/Write
Streaming
Extended Pix Format
Priority: 0
Format Video Output:
Width/Height : 416/720
Pixel Format : 'YU12'
Field : None
Bytes per Line : 416
Size Image : 449280
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags :
Streaming Parameters Video Capture:
Frames per second: 30.000 (30/1)
Read buffers : 2
Streaming Parameters Video Output:
Frames per second: 30.000 (30/1)
Write buffers : 2
User Controls
keep_format 0x0098f900 (bool) : default=0 value=0
sustain_framerate 0x0098f901 (bool) : default=0 value=0
timeout 0x0098f902 (int) : min=0 max=100000 step=1 default=0 value=0
timeout_image_io 0x0098f903 (bool) : default=0 value=0
现在我可以从我的桌面输入输入
sudo ffmpeg -f x11grab -r 25 -s 416x768 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video2
或者我的流 OBS:
ffmpeg -f flv -listen 1 -i rtmp://localhost:1935/live/app -f v4l2 /dev/video2
两者都完美无缺;因为我可以使用WebRTC
、Chrome
、Firefox
和来查看输出ffplay
:
ffplay /dev/video2
我的机器还运行了一个网络摄像头,/dev/video0
它与genymotion
.
但是当我选择我的“Hello world”时,会genymotion
输出噪声(SMPTE 彩条)作为结果。
我的 Genymotion 出了什么问题?我发现UVC输出和v4l2loopback是有区别的。