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.

Другие вопросы по тегам