ffmpegの出力をffplayにパイプするにはどうすればよいですか?


22

ffmpegの出力をffplayにパイプするにはどうすればよいですか?

現時点では、bashで回避策を使用しています。

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

回答:


18

ffmpegデータをstdoutに出力ffplayできないのか、それともstdinから入力を取得できないのかはわかりません。

ffmpegデータが標準出力に出力できない場合:

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

(migthに-引数を追加して、ffplaystdinから入力を取得する必要があります。)

それがffplay標準入力から入力を取得できない場合:

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

詳細情報について<(command)及び>(command)構築物参照プロセス置換 bashのマニュアルのセクションを。


4
私にとっては、これは「-f」で出力形式を明示的に指定しないと機能しませんでした。ffmpeg.org/ffmpeg.htmlで指定されているように、「フォーマットは通常、入力ファイルでは自動検出され、出力ファイルのファイル拡張子から推測されます」。与えられた答えでは、ffmpegは出力形式を推測できません。ffmpegには「-f fmt」を追加する必要があると思います。
パベルK.

1
ffmpeg 2.8.6は、他の回答に記載されているstdin入力をサポートします。あなたがそのサポートのためにチェックすることができます。stackoverflow.com/questions/12999674/...
チロSantilli新疆改造中心法轮功六四事件

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

働くでしょう; 出力用のコンテナ形式を設定する必要があります。これは通常、出力する拡張子を見てffmpegで設定しますが、ここでは手動で設定する必要があり-fます。matroska(MKV)はほぼすべてのビデオを含むことができるのでお勧めします。そのため、変換するものは何でも完璧に機能するはずです。

Ubuntu 12.04を使用している場合、ffmpegはlibavフォークに置き換えられているためavconvavplay代わりにandを使用する必要があります。それ以外の構文は同じです。そこにはある種のffmpegがありますが、設計によって機能が損なわれています。


Win10:pipe:: Invalid data found when processing inputKPower Shellのようにエラーが発生しますが、コマンドプロンプトでは正常に機能します
John

11

ffmpegはパイピング操作をサポートしています。こちらのドキュメントのセクションをご覧ください。

ffplayの仕組みはわかりませんが、ffmpegの出力を標準出力にパイプするには、ffmpegコマンドの最後にpipeコマンドを追加します。例:

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

1
おかげで、私はどういうわけかマニュアルページのそのセクションを見逃しました。しかし、このコンストラクトを動作させることができませんでした。出力ファイル名をffmpegから削除し、入力パイプをffplay引数に追加する必要があります。私はそれに応じてあなたの投稿を編集します
。–

ありがとう。私が言ったように、ffplayを使用したことはありませんが、ffmpegは知っています。
matzahboy

私にはman ffplay、私が見ることができないffplayサポートする-iスイッチを-それは多分あるffmpegだけ?
sdaau

1
pipe:1--ffmpeg 2.8.6で動作します。
Ciro Santilli新疆改造中心法轮功六四事件

9

通常のパイプが機能するように見えます(少なくともWindowsでは):

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

しかし、より複雑な入力/出力で試していない...

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

わずかに速い起動です


5
取得していたUnable to find a suitable output format for 'pipe:'-コーデックを指定する必要がありました-f
i336_

動作するが、非常に低い画質
John

低画質の場合は、最初にキャプチャするものが高画質であることを確認します(最初にファイルに保存するなど)。通常の品質である必要があります...
rogerdpack
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.