gpt4 book ai didi

java - 无法读取解码后的mp3流

转载 作者:行者123 更新时间:2023-12-01 15:14:07 24 4
gpt4 key购买 nike

我正在开发一个使用 mp3 编码/解码的应用程序。虽然原则上它对大多数文件的行为都是正确的,但也有一些异常(exception)。我检测到这些文件缺少 header 。尝试解码时出现数组越界异常。我使用了两种方法,但都失败了。

第一个:

    DecodedMpegAudioInputStream dais = (DecodedMpegAudioInputStream) AudioSystem.getAudioInputStream(daisf, ais);
byte[] audioData = IOUtils.toByteArray(dais);//exception here

第二个:

    ByteOutputStream bos = new ByteOutputStream();
// Get the decoded stream.
byte[] byteData = new byte[1];
int nBytesRead = 0;
int offset = 0;
int cnt=1;

while (nBytesRead != -1) {
System.out.println("cnt="+cnt);
nBytesRead = dais.read(byteData, offset, byteData.length);//exception here at first loop
if (nBytesRead != -1) {
int numShorts = nBytesRead >> 1;
for (int j = 0; j < numShorts; j++) {
bos.write(byteData[j]);
}
}
cnt+=1;
}
byte[] audioData = bos.getBytes();

header 或其结构似乎存在问题,因为 dais 流具有内容/字节。然而它可以用 audacity 和 ffplay 打开,所以我相信应该有一个解决方法。有什么想法可以应对吗?

最佳答案

您可以使用代码冗余来提高可靠性。研究替代库,例如 Xuggler 或 JLayer。

关于java - 无法读取解码后的mp3流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11880907/

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