Estou criando um feed de webcam da seguinte maneira:
- usando esta biblioteca Python3: https://github.com/Flashs/virtualvideo
- além de ter
v4l2loopback-utils
instalado (não tenho 100% de certeza de que é necessário) - habilitando o dispositivo de vídeo com
sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
Isso fornece um feed fictício /dev/video2
.
Isso funciona bem algumas vezes (posso selecionar este feed de webcam nas ferramentas de video conf), mas em algum momento não consigo /dev/video2
mais inicializar. O erro é:
Couldn't write image to ffmpeg, error output of ffmpeg:
ffmpeg version 6.0-6ubuntu1 Copyright (c) 2000-2023 the FFmpeg developers
...
Input #0, rawvideo, from 'pipe:0':
Duration: N/A, start: 0.000000, bitrate: 221184 kb/s
Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> rawvideo (native))
[video4linux2,v4l2 @ 0x55fea92ea8c0] ioctl(VIDIOC_G_FMT): Invalid argument
[out#0/video4linux2,v4l2 @ 0x55fea92ea780] Could not write header (incorrect codec parameters ?): Invalid argument
[vost#0:0/rawvideo @ 0x55fea92eaf40] Error initializing output stream:
Conversion failed!
Isso pode ser corrigido com uma reinicialização, mas gostaria de saber se existe uma maneira de consertar o dispositivo de vídeo sem reinicializar.
(Advertência: não sei o que estou fazendo.)
É fácil consertar um
v4l2loopback
dispositivo de vídeo sem reinicializar:sudo rmmod v4l2loopback
sudo modprobe v4l2loopback video_nr=2 exclusive_caps=1
No entanto, eu recomendaria consertar o Python para que ele não quebre ou reconfigure o dispositivo de vídeo para um estado de funcionamento sem redefini-lo.