gpt4 book ai didi

java - 从AudioInputStream重写为ByteArrayOutputStream的优化

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

关于stackoverflow的类似主题很少,但对我来说似乎都不够好。问题是我有这么一段代码:

        // AudioInputStream in;
final int BUFFER_SIZE = 8192;
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
byte[] byteBuffer = new byte[BUFFER_SIZE];
int bytesRead = 0;

while ((bytesRead = in.read(byteBuffer, 0, BUFFER_SIZE)) != -1) {
byteStream.write(byteBuffer, 0, bytesRead);
}
byte[] audioData = byteStream.toByteArray();

此代码读取mp3文件的数据并将其保存到字节数组,但大约需要10秒钟。是否有可能在更短的时间内将整个mp3数据存储到缓冲区中?
我试图避免传递缓冲区的大小或扩展缓冲区的大小,但这会引起其他问题(例如,文件未正确读取)。

提前致谢

最佳答案

您将数据复制3次,可以通过首先检查文件大小,分配足够大的字节数组并直接读取该字节来避免这种情况。
它还有助于在ByteArrayOutputStream中预分配空间,因此不必多次增加大小。

如果无法提前确定文件大小,则可以为每个块分配一个新的byte [],并将它们放在列表中,直到全部获得。然后分配最后一个数组,并将它们全部复制到最后一个数组中。如果最后需要一个byte []。如果您不这样做,可能会有更有效的方法进行。

关于java - 从AudioInputStream重写为ByteArrayOutputStream的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121954/

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