it-swarm.com.de

Wie kann ich die Ausgabe von ffmpeg an ffplay leiten?

Wie kann ich die Ausgabe von ffmpeg an ffplay leiten?

Im Moment verwende ich eine Problemumgehung in Bash:

mkfifo spam
(ffplay spam 2> /dev/null &) ; capture /dev/stdout | ffmpeg -i - spam
21
wim

Ich weiß nicht, ob es ffmpeg ist, die ihre Daten nicht an stdout ausgeben kann, oder ffplay, die ihre Eingabe nicht von stdin nehmen kann.

Wenn ffmpeg seine Daten nicht an stdout ausgeben kann:

capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)

(Sie müssen ffplay ein --Argument hinzufügen, damit die Eingabe von stdin erfolgt.)

Wenn es ffplay ist, das seine Eingabe nicht von stdin erhalten kann:

ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null

Weitere Informationen zum Konstrukt <(command) und >(command) finden Sie im Abschnitt Process Substitution des bash-Handbuchs.

17
jfg956
ffmpeg -i input.avi <options> -f matroska - | ffplay -

wird funktionieren; Sie müssen ein Containerformat für die Ausgabe festlegen. Dies wird normalerweise eingestellt, indem ffmpeg die Erweiterung betrachtet, die Sie der Ausgabe geben, aber hier müssen Sie sie manuell mit -f einstellen. Ich empfehle matroska (MKV), da es fast jedes Video enthalten kann, also sollte alles, in das Sie es umcodieren, perfekt funktionieren.

Beachten Sie, dass wenn Sie Ubuntu 12.04 verwenden, ffmpeg durch die libav-Verzweigung ersetzt wurde und Sie stattdessen avconv und avplay verwenden sollten. Die Syntax ist ansonsten identisch. Es gibt eine Art ffmpeg dort, aber es ist von Natur aus verkrüppelt.

14
evilsoup

ffmpeg unterstützt Piping-Operationen. Siehe diesen Abschnitt der Dokumentation hier .

Ich weiß nicht, wie ffplay funktioniert, aber um die Ausgabe von ffmpeg an die Standardausgabe weiterzuleiten, können Sie den Befehl pipe am Ende des Befehls ffmpeg hinzufügen. Beispiel:

ffmpeg -i input.flv pipe:1 | ffplay -i -
11
matzahboy

sieht aus wie normale Rohre funktionieren (zumindest in Fenstern):

ffmpeg -i sintel.mpg -pix_fmt yuv420p -f rawvideo - | ffplay -f rawvideo -pix_fmt yuv420p -s 720x480 -

ich habe es noch nicht mit komplizierteren Ein-/Ausgängen ausprobiert ...

ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -

ist etwas schneller Start

8
rogerdpack