Некоторые вопросы об API Java Sound

Я относительно новичок здесь и в использовании Java Sound API и аудио программирования в целом. Мне было интересно, можно ли сделать следующие вещи с помощью Java API Sound:

  • извлечь значения отдельных частот, из которых состоит аудиофайл. (например: амплитуда для диапазона частот 20 Гц-20 кГц)
  • на основе этих значений выполните манипуляции, а затем запишите новый измененный аудиофайл.

Если вам интересно, почему я спрашиваю об этом, я планирую создать собственный формат сжатия звука с использованием алгоритма оптимизации на основе роя. Так что для тех, кто может дать более простой ответ: возможно ли создание программы сжатия звука с использованием Java Sound API?

Благодарю.

2 ответа

Я планирую создать собственный формат сжатия звука. Будет ли возможно создание программы сжатия звука с использованием Java Sound API?

Цитата из информации о JavaSound. страница здесь на SO.

Интерфейс поставщика услуг

Java Sound API использует интерфейс Service Provider Interface для определения кодеров и декодеров для звуковых форматов и типов последовательностей. Таким образом, добавить поддержку нового формата или типа так же просто, как предоставить для него декодер и / или кодировщик, добавить файл SPI в манифест Jar, в котором он находится, а затем добавить Jar в класс времени выполнения. путь приложения.


Так что, если вы можете предоставить кодировщик / декодер, то да.

Вы, конечно, можете прочитать формы волны. То есть, для файла с частотой 44,1 кГц вы можете прочитать 44 100 различных значений выборки в секунду. Я не знаю, что Java Sound API рассчитает звуковые частоты для вас, но если вы уже собираетесь выполнять манипуляции, вы, вероятно, можете рассчитать все, что вам нужно.

Несколько лет назад я использовал нечто подобное для декодирования подозрительного сигнала временного кода SMPTE, распечатывая различные биты и поля. (По сути, мне просто нужно было отслеживать, когда значение пересекает 0 и как долго.)

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

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