私の目標は、デバイスのマイク入力を低遅延で録音しながらローカルファイルを再生することです。 私はSuperpoweredライブラリにアクセスしました。なぜなら、ドキュメントからは低レイテンシの機能が提供されるからです。 私はSuperpoweredAdvancedAudioPlayerとSuperpoweredAndroidAudioIOを使ってプレイヤーを作成しました。Android Superpowered SDKの録音と再生を同時に行う
SuperpoweredAndroidAudioIOには、パラメータが設定されたコンストラクタがあります。 boolean enableInput、boolean enableOutput。現在、私はenableInput == falseとenableOutput == trueを使用しています。これらのパラメータをtrueにすると効果はありません。
ファイルを録音して他のファイルを同時に再生することは可能でしょうか?
また、ライブラリにはSuperpoweredRecorderクラスがありますが、ディスクに直接書き込むことはできません。また、createWAV、fwrite、closeWAVメソッドを使用する必要があります。 私はレコーダーを個別に実装しようとしましたが、品質は良くありません(実際の録音+音よりも2〜3倍高速です)。ここ は、私が使用される記録用のコードの最も簡単な部分です:
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で記録する必要はありませできます。
ありがとうございます!私は解決策を見つけた実験の後numberOfSamples
fwrite(audioInputOutput, sizeof(short int), numberOfSamples * 2, file);
これは明確なステレオ出力
SuperpoweredAndroidAudioIOがこれを処理します。複数のインスタンスを持つことは、不要なコード量です。 –
エフェクトをファイルに適用した後のオーディオ出力の書き方について説明してください。 –
@kasurdあなたは適切な実装と同じGitHubリンクを共有してください。それは非常に役に立つでしょう.. –