2010-02-15 188 views
2

我想播放來自在線mp3鏈接的音樂。從Android音軌播放音頻

我正在將音樂數據讀入流中,並嘗試使用音軌播放它。

但它只給出噪音。我聽不到任何音樂

這是我的代碼。

int intSize = android.media.AudioTrack.getMinBufferSize(8000, 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        AudioFormat.ENCODING_PCM_16BIT); 

AudioTrack oTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, 
        AudioFormat.CHANNEL_CONFIGURATION_MONO, 
        AudioFormat.ENCODING_PCM_16BIT, intSize, 
        AudioTrack.MODE_STREAM); 

oTrack.play(); 
oTrack.write(buffer, 0, buffer.length); 

這裏buffer是我正在讀入的音頻數據。

我可以在MediaPlayer中播放相同的緩衝區,但我無法在audiotrack中播放。

我會做什麼錯?

+1

我把4位在含有每行代碼的乞。 – 2010-02-15 14:06:28

回答

1

MP3只是流容器。 底層音頻編解碼器可能是AAC,OGG或Vorbis,但不可能是PCM,這是未壓縮的原始音頻數據。

但是,AudioTrack將只播放PCM音頻緩衝區。

雖然轉換所述音頻流提防AudioTrack僅支持8位16位和(根據API文檔)

+0

澄清,8位和16位是樣本容量 – Yanuxx 2012-06-19 23:26:18

+2

容器格式和音頻編解碼器不同,但MP3容器格式只能容納MP3音頻。 WAV,OGG和MP4是更通用的容器。 – 2012-06-19 23:26:36