在我的 C# 应用程序中,我正在对 AviFile API 进行互操作。我想将 WAV 文件作为音轨添加到无声 AVI 文件中。
下面的代码可以正常工作。但是,它将整个 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);