次のコマンドを使用して、ffmpegを使用してビデオから画像を抽出し、ファイルシステムに保存できます。
... | ffmpeg -i - -f image2 'img-%03d.png'
これらの画像をファイルシステムに保存するのではなく、別のアプリケーションにパイプしたいと思います。パイプ内で画像をどのように分離するかは、自分で制御するNodeJSスクリプトになるため、ほとんど重要ではありません。
以下は機能しません。
... | ffmpeg -i - -f image2 pipe: | ...
エラーが発生します
[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument
ファイルシステムを使用せずに、ffmpegを使用してビデオから抽出された画像をパイプアウトする方法はありますか?
はいあります!
引数を追加します-f image2pipe
、出力ファイル名を単一のハイフン(-
、このコンテキストではstdout
)を意味し、入力ファイル名も単一のハイフン(-i -
、このコンテキストではstdin
を意味し、出力形式を明示的に指定します(たとえば、pngの場合:-c:v png
)、ここに完全な例があります:
ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -