Redirecione a webcam real para uma webcam virtual via terminal

15

Existe uma maneira de redirecionar uma webcam real para uma webcam virtual a partir da linha de comando, por exemplo, usando o v4l2loopbackmódulo ffmpeg?

Detalhes

Eu tenho uma webcam antiga que funciona com a maioria dos softwares (vlc, queijo, etc.), mas não com outras (Skype).

Uma solução possível para fazê-lo funcionar com esse software é redirecioná-lo para uma webcam virtual usando o v4l2loopbackmódulo, como feito pelo Webcamoid , mas preciso fazê-lo na linha de comando, por exemplo, via ffmpeg.

Tenho certeza de que isso também é possível ffmpeg, mas como as webcams reais raramente são redirecionadas para as virtuais, não encontrei exemplos online (os únicos exemplos que encontrei, como este , redirecionam capturas de tela ou vídeos existentes para a webcam virtual) .

Kubuntuer82
fonte
11
@LordNeckbeard As respostas têm algo em comum, mas as perguntas são muito diferentes. Esse OP está pedindo para enviar um vídeo pré-gravado ( input.mp4) para um dispositivo físico existente , e o atendedor sugere usar o v4l2loopback. Aqui estamos falando sobre o envio de uma webcam real ao vivo para uma webcam virtual, pois isso pode torná-la indiretamente mais compatível com alguns aplicativos (por exemplo, Skype), que não a reconheceriam de outra forma. De fato, a resposta a essa pergunta sugere usar algo como o ffmpeg -i input.mp4que não é o que eu estava procurando aqui.
Kubuntuer82
11
O @LordNeckbeard e essa resposta também mostram como pegar a área de trabalho, que não era apenas o que eu estava procurando aqui, mas também é muito semelhante a este post que eu já mencionei na minha pergunta. Eu estava procurando algo diferente, ou seja, redirecionando outra webcam em vez da área de trabalho ou de um arquivo (como também digo na pergunta). Entendo que as soluções são baseadas no mesmo software, mas como as perguntas são muito diferentes, ainda acho que é bom compartilhar isso para pessoas que lutam com esse problema em particular .
Kubuntuer82

Respostas:

19

Com base nesta resposta (já mencionada na pergunta), acho que encontrei uma solução sozinha e funciona com o Skype!

Suponha o webcam real está em /dev/video0. Quando você corre

modprobe v4l2loopback

o módulo cria uma segunda webcam (virtual), por exemplo, em /dev/video1. Neste ponto, é suficiente executar:

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

e a nova webcam virtual está pronta para ser usada e selecionada também com o Skype.

Kubuntuer82
fonte