我成功地通过TCP将音频从运行在raspberry pi上的python流式传输到Android应用程序,我正在尝试使用压缩,但它只使用字符串而不处理来自音频流的数据(只听到噪音) 这是我的python代码:
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 :(得分: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
希望这可以提供帮助,祝你好运:)