【发布时间】:2016-02-22 23:49:03
【问题描述】:
我的目标是在以低延迟录制设备的麦克风输入的同时播放本地文件。 我来到 Superpowered 库,因为从文档中它提供了低延迟特性。 我已经使用 SuperpoweredAdvancedAudioPlayer 和 SuperpoweredAndroidAudioIO 创建了播放器,它可以正常播放。
SuperpoweredAndroidAudioIO 具有带参数的构造函数 boolean enableInput, boolean enableOutput。目前我正在使用 enableInput == false 和 enableOutput == true。当我将这些参数设置为 true 时 - 无效。
我想知道是否可以同时录制文件和播放其他文件?
库中还有 SuperpoweredRecorder 类,但它说不能直接写入磁盘。并且需要用到createWAV、fwrite、closeWAV方法。 我试过单独实现 Recorder,但质量不好(它比真实录音快两三倍 + 声音失真)。 这是我使用的最简单的一段记录代码:
void SuperpoweredFileRecorder::start(const char *destinationPath) {
file = createWAV(destinationPath, sampleRate, 2);
audioIO = new SuperpoweredAndroidAudioIO(sampleRate, bufferSize, true, false, audioProcessing, NULL, bufferSize); // Start audio input/output.
}
void SuperpoweredFileRecorder::stop() {
closeWAV(file);
audioIO->stop();
}
static bool audioProcessing(void *clientdata, short int *audioInputOutput, int numberOfSamples, int samplerate) {
fwrite(audioInputOutput, sizeof(short int), numberOfSamples, file);
return false;
}
可能我不能为此目的使用 Superpowered,只需要直接使用 OpenSL ES 进行录制。
提前致谢!
【问题讨论】:
标签: android audio android-ndk playback recording