Use v4l2loopback con mplayer .
- Descargalo,
- compilarlo (
make
y su -c 'make install'
),
- cargar el módulo con
su -c 'modprobe v4l2loopback'
,
luego cambie una línea en el archivo examples/yuv4mpeg_to_v4l2.c
de la carpeta de origen v4l2loopback de
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
a
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
y hacer make
en esta carpeta.
Luego ejecútelo desde el examples
directorio así:
mkfifo /tmp/pipe # only needed once, as long as you do not delete the file /tmp/pipe
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
donde reemplazas movie.mp4
con el nombre de tu archivo de video. Y reemplace /dev/video0
con su dispositivo de bucle invertido.
MPlayer puede reproducir cualquier transmisión web, todo tipo de archivos de video, ¡incluso desde stdin! Lo acabo de probar con un archivo de http://www.tagesschau.de que es un sitio de noticias alemán.
TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
En lugar de $ TS, podría poner un -
(que significa stdin). Y frente a mplayer, su comando ffmpeg redirige su salida a stdout. Entonces algo como:
./yuv4mpeg_to_v4l2 < /tmp/pipe &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
No probé el último, porque no dijiste cómo se ve tu comando ffmpeg.