Antworten:
Ich weiß nicht, ob es das ist ffmpeg
, das seine Daten nicht an stdout ausgeben ffplay
kann oder das seine Eingabe nicht von stdin nehmen kann.
Wenn dies ffmpeg
der Fall ist , können die Daten nicht an stdout ausgegeben werden:
capture /dev/stdout | ffmpeg -i - >(ffplay 2> /dev/null)
(Sie müssen ein -
Argument hinzufügen , ffplay
damit es die Eingabe von stdin erhält .)
Wenn dies der ffplay
Fall ist , kann die Eingabe nicht von stdin übernommen werden:
ffplay <(capture /dev/stdout | ffmpeg -i -) 2> /dev/null
Weitere Informationen zu <(command)
und zum >(command)
Konstrukt finden Sie im Abschnitt Prozessersetzung im bash-Handbuch.
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 auf die Erweiterung schaut, die Sie der Ausgabe geben, aber hier müssen Sie sie manuell einstellen -f
. 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.
pipe:: Invalid data found when processing inputK
in Power Shell auf, funktioniert aber gut in der Eingabeaufforderung
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 einfügen. Beispiel:
ffmpeg -i input.flv pipe:1 | ffplay -i -
man ffplay
kann ich ffplay
den -i
Schalter nicht sehen - ist es vielleicht ffmpeg
nur?
pipe:1
vs -
? -
funktioniert auf ffmpeg 2.8.6.
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 versucht ...
ffmpeg -f dshow -i video=screen-capture-recorder -pix_fmt yuv420p -f mpegts - | ffplay -analyzeduration 10 -f mpegts -
ist etwas schneller Start
Unable to find a suitable output format for 'pipe:'
- ich musste einen Codec mit angeben -f
.