我在我的應用程序中設置了AudioTrack,它被設置爲Stream模式。我想寫我通過無線連接收到的音頻。該AudioTrack聲明如下:AudioTrack:通過WiFi播放聲音
mPlayer = new AudioTrack(STREAM_TYPE,
FREQUENCY,
CHANNEL_CONFIG_OUT,
AUDIO_ENCODING,
PLAYER_CAPACITY,
PLAY_MODE);
其中的參數等被定義:
private static final int FREQUENCY = 8000,
CHANNEL_CONFIG_OUT = AudioFormat.CHANNEL_OUT_MONO,
AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT,
PLAYER_CAPACITY = 2048,
STREAM_TYPE = AudioManager.STREAM_MUSIC,
PLAY_MODE = AudioTrack.MODE_STREAM;
然而,當我寫數據與寫()的AudioTrack,它將發揮波濤洶涌的...請致電
byte[] audio = packet.getData();
mPlayer.write(audio, 0, audio.length);
只要通過網絡連接接收到數據包,有人有一個想法,爲什麼它聽起來波濤洶涌?也許這與WiFi連接本身有關係?我不這麼認爲,因爲當我通過UDP將數據從Android手機發送到另一個來源時,聲音聽起來不太可怕。聲音聽起來很完整,而且沒有波濤洶涌......所以有人會有這樣的想法嗎?
你有沒有試過玩PLAYER_CAPACITY?我相信你應該使用'getMinBufferSize()'來獲得正確的值,如下所示:http://developer.android.com/reference/android/media/AudioTrack.html – gary 2011-03-14 12:41:54
我試過了......但是我從網絡獲得的數據通常比從getMinBufferSize獲得此設備的4096(當前)少。將其設置爲緩衝區大小
ThaMe90
2011-03-14 12:46:55
我再看看這個,在我的情況下,波濤起伏是由於大量的數據包丟失/重傳。在某些資源有限的系統(如Android)中,程序必須足夠快地處理每個單獨的UDP數據包,以防止數據包丟失。 – yorkw 2013-04-16 02:43:44