在python中压缩音频流数据并在java中解压缩

时间:2014-04-26 22:43:53

标签: java android python audio compression

我成功地通过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);}

有人知道为什么这不起作用吗?还有,有没有其他方法来实现我想要的目标?

1 个答案:

答案 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

希望这可以提供帮助,祝你好运:)