2011-09-19 10 views
5

ビデオファイル(mpegなど)を画像のコレクションに変換するにはどうすればよいですか?ビデオファイル(mpegなど)を画像のコレクションに変換するにはどうすればよいですか?

理想的な答えは、使用可能なライブラリを使用しているC++とJavaの両方をカバーします。また、いくつかの一般的なビデオ形式のビデオファイルから個々のフレームを手動で取り除く方法もあります。

+0

Don Rebaの現在の回答は良いです。誰かがより完全なものを提供しない限り、私はそれを受け入れます。明らかに、詳細を見るためにffmpegのソースコードを見ることはできますが、参考になるのは原始ソースコードよりも読みやすいということです。また、Javaでこれを行うライブラリがありますか? –

答えて

6

あなたが別の出力形式を好む場合は、単に.pngを変更

ffmpeg -i "$input_file" -f image2 "outdir/%05d.png" 

を使用し、可逆すべてのフレームを抽出するために、既定ではffmpegは拡張子からファイルの種類を推測します。

オプション-f image2は、一連の画像に書き込むようにffmpegに指示します。 "outdir/%05d.png"はファイル名パターンを与えます。この場合は "5-digit frame number.png"です。

n秒フレームを抽出する場合は、"$input_file"の後にオプション-r nを追加します。 (私はNが浮動小数点ことができると思います。)あなたのビデオは、モーションJPEG(MJPEG)である場合には

、代わりに使用します。これは、ビデオストリームから直接フレームをアンパック

ffmpeg -i "$input_file" -vcodec copy -f image2 "outdir/%05d.jpg" 

、それはより速く、明らかにより少ないディスクスペースを使用する。

詳細については、マニュアルページまたはthe documentationimage2を検索)を参照してください。

+0

これは良い答えです。 –

3

ffmpeg-vcodec pngを使用してこれを行うことができます。例えば、これは、5桁の数字とフレームにmy_video.aviを変換します:

のffmpeg -i my_video.avi -vcodec PNGフレーム%の05d.png

あなたはまた、所望の指定する必要がありますすることができますフレームレートと解像度。 ffmpeg -codecsを実行すると、使用可能なすべての形式が表示されます。

+0

ありがとう!私はそれがとても簡単だとうれしいです。 –

+0

これを試したことがありますか? jpg、gif、bmpをサポートしていますか? –

+0

私はそれを試しました。 'ffmpeg -codecs'を実行すると、サポートされているものを見ることができます。 Gifとbmpはそこにあるようです。 jpgについてはわからない –

0

ffmpegのlibavcodecライブラリの中におそらくapiexample.cを使用すると、フレームバッファを使ってmpegストリームで簡単にエンコードする方法を確認できます。

また、Gstreamerを使用することもできます。このフレームワークは、ほんのちょっとしたフレームワークです。

Javaの場合、Java Media Frameworkを試してください。

関連する問題