0

VFW (avifil32.dll) でパーツを開くことができるように、大きな AVI 2.0 (OpenDML 形式) ファイルを小さなパーツ (私の場合は 1GB 未満) に分割しようとしています。

この分割を実現する最良の方法は何ですか (できれば C# で)?

オプションの 1 つは、フレームごとにコピーすることです。ネットで同じことをする例をいくつか見つけました。しかし、これらのほとんどは、最大 RIFF 部分サイズが 1GB であるため、一般に 2GB を超えるファイルと 1GB を超える AVI 2.0 ファイルを読み取ることができない VFW を使用します。

VFW の代わりに DirectShow が必要です。フレームを手動でコピーしようとすると、オーディオ同期も台無しになると確信しています。

現在の圧縮に影響を与えず、ファイルを分割して適切な AVI インデックスを作成するだけの「ダイレクト ストリーム コピー」で VirtualDub が行うことと同様のものを探しています。

4

2 に答える 2

2

Avi ファイルは、使用するコーデックに応じて、さまざまな方法でエンコードできます。Avi はエンコーディング方式ではなく、ラッパー ファイルです。これは、C# を使用して avi ファイルを分割するための簡単で一般的な方法がないことを意味します。

ゼロからコードでそれを行うことは、大きな仕事です。とは言っても、mencoder を使用して c# から呼び出すことでごまかすことができます。理想的ではありませんが、車輪の再発明を試みるよりもはるかに簡単で信頼性があります。あるいは、ffmpeg ツールにアクセスできるようにする ffmpeg c# ラッパーがいくつかあります (ただし、地獄のようにバグのないラッパーは見つかりませんでした)。

正確に何をしようとしているのですか?avifil32.dll が必要な理由と、それをどのように使用していますか? 非常に大きな avi ファイルを再生しようとしているだけの場合は、別の方法があります。たとえば、aforge.net を試してみてください。

于 2011-10-29T21:49:32.657 に答える
1

mencoderファイルを分割できます。別のオプションはffmpegです

于 2009-11-25T18:12:37.613 に答える