Use v4l2loopback com mplayer .
- Baixe,
- compile (
make
e su -c 'make install'
),
- carregue o módulo com
su -c 'modprobe v4l2loopback'
,
altere uma linha no arquivo examples/yuv4mpeg_to_v4l2.c
da pasta de origem v4l2loopback de
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
para
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
e faça make
nesta pasta.
Em seguida, execute-o no examples
diretório assim:
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
onde você substitui movie.mp4
pelo nome do seu arquivo de vídeo. E substitua /dev/video0
pelo seu dispositivo de loopback.
O MPlayer é capaz de reproduzir qualquer fluxo da web, todos os tipos de arquivos de vídeo, mesmo do stdin! Acabei de testar com um arquivo de http://www.tagesschau.de, que é um site de notícias alemão.
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
Em vez do $ TS, você pode colocar um -
(que significa stdin). E na frente do mplayer, seu comando ffmpeg redireciona sua saída para stdout. Então, algo como:
./yuv4mpeg_to_v4l2 < /tmp/pipe &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Não testou o último, porque você não contou como o seu comando ffmpeg se parece.