Сохранение измененного клипа в файл - PullRequest
0 голосов
/ 25 мая 2019

Как сохранить открытый аудиофайл с измененной громкостью?

Я пытаюсь это сделать:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("some_file.wav"));

Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);

gainControl.setValue(-30.0f); // Reduce volume by 10 decibels.
File file = new File("new.wav");
AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, file); 

Но это сохранение пустого файла.

1 Ответ

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

Я думаю, что вам лучше всего взять байты из AudioInputStream и преобразовать их в значения PCM, а затем умножить значения PCM на коэффициент, который соответствует -10 дБ. Я не знаю, что это будет за фактор. Затем преобразуйте обратно в байты и запишите это.

Первый пример кода в руководстве Использование файлов и преобразователей формата показывает цикл while, в котором должны выполняться преобразования, в комментарии: "// Здесь сделайте что-нибудь полезное с аудио ... «

Предыдущее руководство по Audio Trail: «Обработка аудио с элементами управления» также может быть полезным, но встроенные элементы управления ограничены и зависят от хост-компьютера и ОС. Например, если вы хотите изменить громкость (поместить в постепенное или постепенное исчезновение), линии управления, вероятно, не будут работать очень хорошо из-за гранулярности, привязанной к размеру аудиобуфера. Поэтому я рекомендую совет в заключительных параграфах учебника «Обработка аудио с элементами управления», раздел «Непосредственное управление аудиоданными».

...