Redireccionar la cámara web real a una cámara virtual mediante terminal

15

¿Hay alguna manera de redirigir una cámara web real a una cámara web virtual desde la línea de comandos, por ejemplo, usando el v4l2loopbackmódulo con ffmpeg?

Detalles

Tengo una cámara web antigua que funciona con la mayoría del software (vlc, cheese, etc.), pero no con otros (Skype).

Una posible solución para que funcione con dicho software es redirigirlo a una cámara web virtual usando el v4l2loopbackmódulo, como lo hizo Webcamoid , pero necesito hacerlo desde la línea de comandos, por ejemplo a través de ffmpeg.

Estoy seguro de que esto también es posible ffmpeg, pero como las cámaras web reales rara vez se redirigen a las virtuales, no encontré ejemplos en línea (los únicos ejemplos que he encontrado, como este , redirigen capturas de pantalla o videos existentes a la cámara web virtual) .

Kubuntuer82
fuente
1
@LordNeckbeard Las respuestas tienen algo en común, pero las preguntas son muy diferentes. Ese OP está pidiendo enviar un video pregrabado ( input.mp4) a un dispositivo físico existente , y el respondedor sugiere utilizar en su lugar v4l2loopback. Aquí estamos hablando de enviar una cámara web real en vivo a una cámara virtual, ya que esto puede hacer que la cámara web sea indirectamente más compatible con algunas aplicaciones (por ejemplo, Skype), que de otro modo no la reconocería. De hecho, la respuesta a esa pregunta sugiere usar algo como lo ffmpeg -i input.mp4que no es lo que estaba buscando aquí.
Kubuntuer82
1
@LordNeckbeard y esa respuesta también muestra cómo tomar el escritorio, que no solo no era lo que estaba buscando aquí, sino que también es muy similar a esta publicación que ya mencioné en mi pregunta. Estaba buscando algo diferente, es decir, redirigir otra cámara web en lugar del escritorio o un archivo (como también digo en la pregunta). Aprecio que las soluciones se basen en el mismo software, pero dado que las preguntas son muy diferentes, creo que aún es bueno compartir esto con las personas que luchan con este problema en particular .
Kubuntuer82

Respuestas:

19

Según esta respuesta (ya mencionada en la pregunta), creo que he encontrado una solución por mí mismo, ¡y funciona con Skype!

Supongamos que la cámara web real está adentro /dev/video0. Cuando corres

modprobe v4l2loopback

el módulo crea una segunda cámara web (virtual), por ejemplo en /dev/video1. En este punto, es suficiente ejecutar:

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

y la nueva cámara web virtual también está lista para ser utilizada y seleccionada con Skype.

Kubuntuer82
fuente