我一直在尝试使用Superpowered audio SDK从缓冲区(简称int)播放音频文件。目前,在每次调用进程函数时,我都会传入输出缓冲区,并编写如下代码:
getBufferData(short int *output, unsigned int samples) {
memcpy(output, buffer + bufferPtr, samples * sizeOf(short int));
bufferPtr += samples;
}由此产生的音频可以识别为我试图播放的歌曲,但严重失真。
我已经检查了缓冲区中的数据是我所期望的,通过将其写入wav文件并以这种方式测试回放。
我的预感是memcpy例程可能太密集,不能如此频繁地调用,但我一直无法找到替代方法。
我也知道这种回放方法不是使用superpowered回放音频文件的合适方式,但对于我的用例来说是必需的。
任何指导都将不胜感激!
发布于 2017-03-21 04:53:03
也许您有立体声/单声道问题。你描述的例子非常适合单声道。
https://stackoverflow.com/questions/42889815
复制相似问题