2016-04-20 10 views
0

Ich erhalte einen Strom von Audiodaten (ein Kanal, 16000Hz, 170ms Puffer) in meiner Android App und ich möchte dieses Audio abspielen. Ich entdeckte AudioTrack, aber wenn ich den Sound spiele, bekomme ich nur lauten und peinlichen Sound.Wie wird der rohe Audio-Stream wiedergegeben?

Mein Code so sieht weit wie folgt aus:

AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 16000, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, 128000, AudioTrack.MODE_STREAM); 
audioTrack.play(); 

while (true) { 
    byte[] buf = new byte[32000]; 

    inputStream.readFully(buf); 
    audioTrack.write(buf, 0, buf.length); 
} 

Wie dieses Problem beheben?

Antwort

0

beziehen sich auf dieses Beispiel: buf Größe muss berechnet werden vorsichtig auf der Grundlage Ihrer Daten, die nicht unbedingt zufällig 32000.

int bufsize = AudioTrack.getMinBufferSize(
    8000, 
    AudioFormat.CHANNEL_CONFIGURATION_STEREO, 
    AudioFormat.ENCODING_PCM_16BIT 
); 
AudioTrack trackplayer = new AudioTrack(
    AudioManager.STREAM_MUSIC, 8000, 
    AudioFormat.CHANNEL_CONFIGURATION_ STEREO, 
    AudioFormat.ENCODING_PCM_16BIT, 
    bufsize, 
    AudioTrack.MODE_STREAM 
); 
trackplayer.play(); 
trackplayer.write(bytes_pkg, 0, bytes_pkg.length); 
trackplayer.stop(); 
trackplayer.release(); 
+0

Danke. Nun werden die Dinge, die ich sage (zB "Hallo") abgespielt, aber es gibt auch einen extrem hohen Brummton. Meine gesprochenen Worte sind im Vergleich zum Summen sehr ruhig. Was könnte da falsch sein? – user32323

+0

Vergewissern Sie sich, dass Sie die Samplerate und die Anzahl der Kanäle (Mono, Stereo?) Des von Ihnen abgespielten Sounds übereinstimmen. –