Comment puis-je diriger la sortie de ffmpeg vers ffplay?
Pour le moment, j'utilise une solution de contournement dans bash:
mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam
Je ne sais pas si c'est ffmpeg
qui ne peut pas sortir ses données sur stdout, ou ffplay
qui ne peut pas prendre ses données depuis stdin.
Si c'est ffmpeg
qui ne peut pas sortir ses données sur stdout:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(Vous devez absolument ajouter un argument -
à ffplay
pour qu'il prenne son entrée dans stdin.)
Si c'est ffplay
qui ne peut pas prendre son entrée de stdin:
ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null
Pour plus d'informations sur les constructions <(command)
et >(command)
, voir la section Process Substitution du manuel bash.
ffmpeg -i input.avi <options> -f matroska - | ffplay -
marchera; vous devez définir un format de conteneur pour la sortie. Ceci est normalement défini lorsque ffmpeg examine l'extension que vous donnez la sortie, mais ici, vous devez la définir manuellement avec -f
. Je recommande matroska (MKV) car il peut contenir presque toutes les vidéos. Par conséquent, tout ce que vous convertissez en transcodage devrait fonctionner parfaitement.
Notez que si vous utilisez Ubuntu 12.04, ffmpeg a été remplacé par le fork de libav et vous devriez plutôt utiliser avconv
et avplay
; la syntaxe est par ailleurs identique. Il existe une sorte de ffmpeg, mais il est paralysé par la conception.
ffmpeg prend en charge les opérations de tuyauterie. Voir cette section de la documentation ici .
Je ne sais pas comment fonctionne ffplay, mais pour diriger la sortie de ffmpeg vers une sortie standard, vous pouvez ajouter la commande pipe à la fin de la commande ffmpeg. Exemple:
ffmpeg -i input.flv pipe:1 | ffplay -i -
ressemble à des tuyaux normaux (au moins dans les fenêtres):
ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -
je ne l'ai pas essayé avec des entrées/sorties plus compliquées cependant ...
ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -
est un démarrage légèrement plus rapide