为什么 wav 文件大小超过 4gb?
Why is the wav file size exceeding 4gb?
我正在使用 C# 中的 Naudio 库。
我有两个pcm数据(字节数组),我想混合
对于pcm数据,采样率为16000hz,
通道是单声道,
bitpersample 为 8.
字节数组的大小并没有那么大。
它们每个的大小约为 100 到 200 kb。
在下面的代码中,mainAudioData 和 RepeaterAudioData 是字节数组。
var imawaveFormat = WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, 16000, 1, 16000, 256, 8);
var mainbwp = new BufferedWaveProvider(imawaveFormat);
mainbwp.BufferLength = mainAudioData.Length;
mainbwp.AddSamples(mainAudioData, 0, mainAudioData.Length);
var repeaterbwp = new BufferedWaveProvider(imawaveFormat);
repeaterbwp.BufferLength = RepeaterAudioData.Length;
repeaterbwp.AddSamples(RepeaterAudioData, 0, RepeaterAudioData.Length);
var mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(16000,1));
mixer.AddMixerInput(mainbwp.ToSampleProvider());
mixer.AddMixerInput(repeaterbwp.ToSampleProvider());
WaveFileWriter.CreateWaveFile16("D:\mixed.wav", mixer);
但是,在'WaveFileWriter.CreateWaveFile16("D:\mixed.wav", mixer);'中创建文件时,文件大小超过4gb,出现'wav file too long'的异常。
为什么会创建超过 4 GB 的文件?
这是因为 BufferedWaveProvider
会产生一个永无止境的音频流(这就是它的设计目的)。 RawSourceWaveStream
更适合您在 byte[]
中有原始音频数据并想直接播放的场景
我正在使用 C# 中的 Naudio 库。
我有两个pcm数据(字节数组),我想混合
对于pcm数据,采样率为16000hz, 通道是单声道, bitpersample 为 8.
字节数组的大小并没有那么大。
它们每个的大小约为 100 到 200 kb。
在下面的代码中,mainAudioData 和 RepeaterAudioData 是字节数组。
var imawaveFormat = WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, 16000, 1, 16000, 256, 8);
var mainbwp = new BufferedWaveProvider(imawaveFormat);
mainbwp.BufferLength = mainAudioData.Length;
mainbwp.AddSamples(mainAudioData, 0, mainAudioData.Length);
var repeaterbwp = new BufferedWaveProvider(imawaveFormat);
repeaterbwp.BufferLength = RepeaterAudioData.Length;
repeaterbwp.AddSamples(RepeaterAudioData, 0, RepeaterAudioData.Length);
var mixer = new MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(16000,1));
mixer.AddMixerInput(mainbwp.ToSampleProvider());
mixer.AddMixerInput(repeaterbwp.ToSampleProvider());
WaveFileWriter.CreateWaveFile16("D:\mixed.wav", mixer);
但是,在'WaveFileWriter.CreateWaveFile16("D:\mixed.wav", mixer);'中创建文件时,文件大小超过4gb,出现'wav file too long'的异常。
为什么会创建超过 4 GB 的文件?
这是因为 BufferedWaveProvider
会产生一个永无止境的音频流(这就是它的设计目的)。 RawSourceWaveStream
更适合您在 byte[]
中有原始音频数据并想直接播放的场景