この例に従って、AudioRecord からの生のオーディオ データを mp3 に変換しましたが、このデータを mp3 ファイルに保存して音楽プレーヤーで再生すると、正常に再生されました。
ここで私の質問は、mp3 データをファイルに保存する代わりに、AudioTrack で再生する必要があることです。データは Red5 メディア サーバーからライブ ストリームとして送信されますが、問題は、AudioTrack が PCM データしか再生できないため、ノイズしか聞こえないことです。私のデータから。
現在、必要なタスクにJLayerを使用しています。
私のコードは次のとおりです。
int readresult = recorder.read(audioData, 0, recorderBufSize);
int encResult = SimpleLame.encode(audioData,audioData, readresult, mp3buffer);
この mp3buffer データは、Red5 ストリームによって他のユーザーに送信されます。
他のユーザーが受信したデータはストリーム形式であるため、それを再生するためのコードは
Bitstream bitstream = new Bitstream(data.read());
Decoder decoder = new Decoder();
Header frameHeader = bitstream.readFrame();
SampleBuffer output = (SampleBuffer) decoder.decodeFrame(frameHeader, bitstream);
short[] pcm = output.getBuffer();
player.write(pcm, 0, pcm.length);
しかし、私のコードは 2 ~ 3 秒後に bitstream.readFrame でフリーズし、その前にサウンドも生成されません。
何が問題になると思いますか?どんな提案でも大歓迎です。
注:mp3データを保存する必要はないため、ファイルまたはファイル記述子が必要なため、MediaPlayerを使用できません。