12

.avi ファイルの各フレームを抽出し、提供されたディレクトリに保存する ac# コードを記述しようとしています。そのような目的に使用する適切なライブラリを知っていますか?

注: 最終リリースは、インストールされているコーデックやシステム アーキテクチャに関係なく、すべてのシステムで動作する必要があります。マシン上に別のプログラム (MATLAB など) が存在する必要はありません。

前もって感謝します。トゥンク

4

2 に答える 2

15

入力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 に含まれていますが、ほとんどは含まれていません)。

于 2013-07-24T06:10:23.417 に答える