Use v4l2loopback con mplayer .
- Descargalo,
- compilarlo (
makey 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.cde 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 makeen esta carpeta.
Luego ejecútelo desde el examplesdirectorio 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.mp4con el nombre de tu archivo de video. Y reemplace /dev/video0con 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.