Utilisez v4l2loopback avec mplayer .
-
Téléchargez-le,
-
le compiler ( make
y su -c 'make install'
),
-
charger le module avec su -c 'modprobe v4l2loopback'
,
-
puis changez une ligne dans le fichier examples/yuv4mpeg_to_v4l2.c
du dossier source de v4l2loopback de
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
à
v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
-
et faire make
dans ce dossier.
-
Ensuite, exécutez-la à partir du examples
un répertoire comme celui-ci :
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
où vous remplacez movie.mp4
avec le nom de votre fichier vidéo. Et remplacez /dev/video0
avec votre dispositif de bouclage.
MPlayer est capable de lire n'importe quel flux web, tous les types de fichiers vidéo, même à partir de stdin ! Je viens de le tester avec un fichier provenant de http://www.tagesschau.de qui est un site d'information allemand.
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
Au lieu du $TS, vous pourriez mettre un -
(qui signifie stdin). Et devant mplayer votre commande ffmpeg redirigeant sa sortie vers stdout. Donc quelque chose comme :
./yuv4mpeg_to_v4l2 < /tmp/pipe &
ffmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
Je n'ai pas testé la dernière, car vous n'avez pas dit à quoi ressemble votre commande ffmpeg.