2

このに従って、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を使用できません。

4

2 に答える 2