UnsupportedAudioFileException из стерео, но не двухканальный звук - PullRequest
0 голосов
/ 30 мая 2019

Я работаю над базовой обработкой звука в Java, используя AudioInputStream.Моя программа может корректно загружать 16-битное целочисленное аудио PCM, которое кодируется двумя дорожками, но не стерео.Когда представлен файл, который (согласно ffprobe) имеет значение

Input #0, wav, from XXX:
  Duration: 00:00:02.80, bitrate: 1411 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s

Все хорошо.Однако при представлении с

  Duration: 01:19:15.58, bitrate: 1536 kb/s
    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, stereo, s16, 1536 kb/s

(это файл, который я на самом деле хочу редактировать), происходит сбой с

Exception in thread "main" javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
    at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)

Кодировка такая же, и пример маловероятенразница в скорости может привести к проблеме.Похоже, что это стерео против двух каналов вызывает это исключение, но стерео должно быть двухканальным, не так ли?

Я могу повторить эту проблему с

AudioSystem.getAudioInputStream(new File("file under test"));

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете создать соответствующий AudioFormat вручную и проверить его с помощью isFormatSupported (AudioFormat)

Поддержка 44100 является стандартной в Java, но 48000 более популярна изависит от операционной системы компьютера, на котором выполняется код.См. 6.3 Аудио форматы

Audacity хорошо работает как инструмент для преобразования аудио ресурсов, если вы не хотите беспокоиться о сложностях кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...