gpt4 book ai didi

java - Java OpenIMAJ .ogg解码器-第一个缓冲区将全零解码

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

大家好。

我正在围绕OpenIMAJ库编写一个简单的包装器类,该类能够加载.ogg文件音频并返回采样数据。

这是我为获取 double 数组作为输出而实现的代码:

public List<double[]> getDoubleSample() throws AudioSamplerException {
if (audioSampler.getFormat().getJavaAudioFormat().getChannels() != 1)
throw new AudioSamplerException("Cannot decode multichannel track as array");
List<double[]> bufferedSamples = new LinkedList<>();
SampleChunk sc;
SampleBuffer sb;
while ((sc = audioSampler.nextSampleChunk()) != null) {
sb = sc.getSampleBuffer();
double[] data = sb.asDoubleArray();
bufferedSamples.add(data);
}
return bufferedSamples;
}

该代码似乎运行良好,但是在调试 session 后,我发现解码的第一个缓冲区内部只有零,例如:
bufferedSamples = {LinkedList@1213}  size = 218 
0 = {double[96000]@1215}
0 = 0.0
1 = 0.0
2 = 0.0
3 = 0.0
4 = 0.0
5 = 0.0
6 = 0.0
7 = 0.0
and so on...

那是零吗?或者我在解码文件时做错了什么?或者我需要一个额外的步骤才能返回数组?

根据使用Audacity提取的数据,我尝试删除了第一个缓冲区,之后的数据是正确的,但是我不确定这种解决方法。

预先感谢您的回答。

最佳答案

不知道为什么会这样-我可以用自己的ogg文件复制它。但是,wav文件不会发生这种情况。根本原因似乎是Xuggler内部的某个地方,而不是OpenIMAJ代码库内部的任何地方。

关于java - Java OpenIMAJ .ogg解码器-第一个缓冲区将全零解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40221917/

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