Antworten:
Ich weiß nicht, ob es das ist ffmpeg, das seine Daten nicht an stdout ausgeben ffplaykann oder das seine Eingabe nicht von stdin nehmen kann.
Wenn dies ffmpegder 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 , ffplaydamit es die Eingabe von stdin erhält .)
Wenn dies der ffplayFall 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 avconvund avplayverwenden 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 inputKin 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 ffplaykann ich ffplayden -iSchalter nicht sehen - ist es vielleicht ffmpegnur?
pipe:1vs -? -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.