web-dev-qa-db-fra.com

Comment puis-je diriger la sortie de ffmpeg vers ffplay?

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
21
wim

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.

17
jfg956
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.

14
evilsoup

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 -
11
matzahboy

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

8
rogerdpack