1
我想遍历一个wave文件,并在每次迭代时发送20ms。 假设我使用8kHz的,1个信道,16位音频文件,我使用n音讯下面的代码:Wave文件 - 处理特定的音频数据块
WaveFileReader wHeader = new WaveFileReader(fullFileName);
byte[] data = new byte[wHeader.Length];
int read = wHeader.Read(data, 0, data.Length);
short[] sampleBuffer = new short[read/2];
short[] InpBuf;
for (int i = 0; i < read; i += 2)
{
InpBuf = new short[159]; //20ms?
Buffer.BlockCopy(data, 0, sampleBuffer, 0, read);
InpBuf = sampleBuffer;
Process20(InpBuf); //Send 20ms of audio data which inside InpBuf
}
我可以看到完整的音频数据是内部sampleBuffer现在(产生波正弦),但我不能将这些20ms分成InpBuf,我看到InpBuf包含整个音频数据。
一旦我明白了这个问题,我就能够转向立体声和不同的音频格式。
任何帮助表示赞赏,谢谢。
感谢。在这里做什么是最好的事情? 它应该是这样的东西还是有其他有效的方式吗? 'code int offst = 0; (int i = 0; i
这对第一种方法很有用...大概一旦你确定它按预期工作,它可以被调整一点点 – cristallo
不幸的是,这带来了一个非常混乱的结果... 我的原始音频数据在'byte [] data = new byte [wHeader.Length]'内' (int i = 0; i