Java OpenIMAJ .ogg декодер - первый буфер декодировал все нули
Goodmornig всем.
Я кодирую простой класс-оболочку для библиотеки OpenIMAJ, которая может загружать аудио-файл.ogg и возвращать данные.
Вот код, который я реализовал, чтобы получить двойной массив в качестве вывода:
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;
}
Кажется, код работает отлично, но после сеанса отладки я обнаружил, что самый первый декодированный буфер имеет только нули внутри, например:
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, но я не уверен в этом обходном пути.
Заранее спасибо за ответ.
1 ответ
Не уверен, почему это происходит - я могу скопировать его с моими собственными файлами ogg. Это не случается с файлами WAV все же. Основная причина, кажется, где-то глубоко внутри Xuggler, а не внутри базы кода OpenIMAJ.