5

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

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

4

3 に答える 3

6

すべてのフレームをロスレスで抽出するには、

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

別の出力形式が必要な場合は、.png;を変更するだけです。デフォルトでffmpegは、拡張子からファイルタイプを推測します。

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

1秒あたりnフレームのみを抽出する場合は、の後にオプションを追加します。( nは浮動小数点になる可能性があると思います。)-r n"$input_file"

ビデオがMotionJPEG(mjpeg)の場合は、代わりに次を使用します。

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

これにより、ビデオストリームから直接フレームが解凍されます。これにより、より高速で、明らかに使用するディスク容量が少なくなります。

詳細/その他のオプションについては、マニュアルページまたはドキュメントを参照してください(を検索してくださいimage2)。

于 2011-09-19T04:04:36.183 に答える
3

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

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

必要なフレームレートと解像度を指定する必要がある場合もあります。実行ffmpeg -codecsして、使用可能なすべての形式を表示できます。

于 2011-09-19T03:53:28.857 に答える
0

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

または、より優れたフレームワークであるGstreamerを使用することもできます。

Java の場合は、 Java Media Frameworkを使用してみてください。

于 2011-12-05T19:20:03.390 に答える