我的目标是在录制设备的麦克风输入时以低延迟播放本地文件.我来到Superpowered库,因为从文档中它提供了低延迟功能.我使用SuperpoweredAdvancedAudioPlayer和SuperpoweredAndroidAudioIO创建了播放器,它播放得很好.
SuperpoweredAndroidAudioIO具有带有参数boolean enableInput,boolean enableOutput的construcor.目前我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
可能我不能将Superpowered用于此目的,只需要直接使用OpenSL ES进行录制.
提前致谢!