gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:34:09 25 4
gpt4 key购买 nike

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

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

最佳答案

问题可能根本不在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

希望这可以有所帮助,祝您好运:)

关于java - 在python中压缩音频流数据并在java中解压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23317291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com