0

私の C# アプリケーションでは、AviFile API との相互運用を行っています。サイレント AVI ファイルにオーディオ トラックとして WAV ファイルを追加したいと考えています。

以下のコードは問題なく動作します。ただし、WAV ファイル全体を RAM にロードします。それほど多くのメモリを必要とせずに、どうすれば同じことを達成できますか?

AviFile API を使用してそれが不可能な場合、同じことを達成する C# ライブラリはありますか?

Avi.AVISTREAMINFO streamInfo = new Avi.AVISTREAMINFO();
Avi.PCMWAVEFORMAT streamFormat = new Avi.PCMWAVEFORMAT();
int streamLength = 0;

IntPtr rawData = newStream.GetStreamData(ref streamInfo, ref streamFormat, ref streamLength);
IntPtr waveData = rawData;
IntPtr aviStream;
int result = Avi.AVIFileCreateStream(aviFile, out aviStream, ref streamInfo);


result = Avi.AVIStreamSetFormat(aviStream, 0, ref streamFormat, Marshal.SizeOf(streamFormat));

Avi.AVIStreamWrite(aviStream, 0, streamLength, waveData, streamLength, Avi.AVIIF_KEYFRAME, 0, 0);

Avi.AVIStreamRelease(aviStream);

Marshal.FreeHGlobal(waveData);
4

1 に答える 1

0

wav ファイルを手動で開き、データを読み取ることができます。その場合、手動で A/V データをインターリーブし、自分で avi を作成する必要があります。JUNK チャンク、インデックス、およびその他の必要なものを追加するのは難しい場合があります。しかし、avi/RIFF アーキテクチャを知っていれば、100% 実行可能です。

于 2013-08-29T13:24:04.423 に答える