.avi ファイルの各フレームを抽出し、提供されたディレクトリに保存する ac# コードを記述しようとしています。そのような目的に使用する適切なライブラリを知っていますか?
注: 最終リリースは、インストールされているコーデックやシステム アーキテクチャに関係なく、すべてのシステムで動作する必要があります。マシン上に別のプログラム (MATLAB など) が存在する必要はありません。
前もって感謝します。トゥンク
.avi ファイルの各フレームを抽出し、提供されたディレクトリに保存する ac# コードを記述しようとしています。そのような目的に使用する適切なライブラリを知っていますか?
注: 最終リリースは、インストールされているコーデックやシステム アーキテクチャに関係なく、すべてのシステムで動作する必要があります。マシン上に別のプログラム (MATLAB など) が存在する必要はありません。
前もって感謝します。トゥンク
入力aviファイルに何らかの制限を追加するか、それらの作成に使用されるエンコーダーを制御しない限り、これは不可能です。画像を取得するには、まず画像をデコードする必要があります。そのためには、適切なコーデックをアプリにインストールまたはデプロイする必要があります。そして、そこにあるすべてのコーデックを説明したり、それらすべてをインストール/展開したりすることは不可能だと思います. いいえ、 aviファイルを開くことはできません。ただし、最も一般的な (またはコンテキストで一般的な) コーデックをサポートできます。
これを行う最も簡単な方法は、FFMPEG を使用することです。これには、最も一般的なコーデックがいくつか含まれているためです (アプリに 30+Mb を追加してもかまわない場合)。ラッパーに関しては、私は過去にAForgeラッパーを使用していましたが、とても簡単に操作できるのでとても気に入りました。ドキュメントの例を次に示します。
// create instance of video reader
VideoFileReader reader = new VideoFileReader( );
// open video file
reader.Open( "test.avi" );
// read 100 video frames out of it
for ( int i = 0; i < 100; i++ )
{
Bitmap videoFrame = reader.ReadVideoFrame( );
videoFrame.Save(i + ".bmp")
// dispose the frame when it is no longer required
videoFrame.Dispose( );
}
reader.Close( );
外部ライブラリを使用せずにシンプルに保ちたい場合は、AForge に VfW (デフォルトで Windows に含まれています) ラッパーもあります。VfW と互換性のあるコーデックをインストールする必要があります (一部はデフォルトで Windows に含まれていますが、ほとんどは含まれていません)。