2014-04-26 67 views
0

我成功地通過TCP從運行在樹莓派上的python流音頻到android應用程序,我試圖使用壓縮,但它只處理字符串,而不處理來自音頻流的數據(只聽到噪音) 這裏是我的Python代碼:在python中壓縮音頻流數據和在java中解壓縮

while True: 
     data = stream.read(CHUNKS) 
     outData = StringIO() 
     d = GzipFile(mode="w", fileobj = outData) 
     d.write(data) 
     d.close() 
     conn.send((outData.getvalue())) 

和我的Android代碼:

speaker = newAudioTrack(AudioManager.STREAM_VOICE_CALL,sampleRate,channelConfig,audioFormat,minBufSize,AudioTrack.MODE_STREAM); 
    speaker.play(); 
    DataInputStream ds = new DataInputStream(connectionSocket.getInputStream()); 
    GZIPInputStream gzip = new GZIPInputStream(ds); 
    while (true) { 
    gzip.read(buffer, 0, buffer.length); 
    speaker.write(buffer, 0, buffer.length);} 

沒有任何人有一個想法,爲什麼這是不工作?另外,還有其他方法可以實現我想要的嗎?

回答

0

的問題可能不會在GZIP都:

AudioTrack這裏提到僅用於未壓縮的音頻:

It allows streaming of PCM audio buffers to the audio sink

您可能會給MediaPlayer一個嘗試,作爲一個例子:

MediaPlayer player = new MediaPlayer(); 
player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
player.setDataSource("http://..."); 
player.prepare(); 
player.start(); 

然而,這可能不是你所需要的,你要使用Socket

在這種情況下,如本post

提到您可以使用臨時文件或使用Local HTTP server to stream an InputStream to MediaPlayer on Android

希望這可以幫助,好運:)

+0

的。如果這個答案幫你解決你的問題請[Accept](http://meta.stackexchange.com/a/5235/259711)@ user3461604 – Aboalnaga