在Python中压缩音频流数据,Java中解压缩
我成功地通过TCP从运行在树莓派上的Python程序向一个安卓应用传输音频,现在我想使用压缩功能,但它只对字符串有效,对音频流的数据却不行(只能听到噪音)。以下是我的Python代码:
while True:
data = stream.read(CHUNKS)
outData = StringIO()
d = GzipFile( mode="w", fileobj = outData)
d.write(data)
d.close()
conn.send((outData.getvalue()))
这是我的安卓代码:
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);}
有没有人知道为什么这样不行?另外,还有没有其他方法可以实现我想要的效果?
1 个回答
0
这个问题可能和GZIP没有关系:
AudioTrack
只适用于未压缩的音频,具体可以参考这里:
你可以试试 MediaPlayer
,比如:
MediaPlayer player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setDataSource("http://...");
player.prepare();
player.start();
不过这可能不是你需要的,因为你是想使用Socket
在这种情况下,你可以使用临时文件,具体可以参考这个帖子
或者使用本地HTTP服务器将InputStream
流式传输到Android上的MediaPlayer
希望这些能帮到你,祝你好运 :)