Синхронизация аудио сигнала с аудио с использованием JavaFX - PullRequest
0 голосов
/ 23 апреля 2020

Я много работал над этой программой, и я застрял в этой части и не знаю, что еще делать. Я использую API javax.sound для генерации звукового сигнала в режиме реального времени, который соответствует ритму музыки c. Я сделал это без проблем, когда я использовал sourceDataLine и передавал аудио. Тем не менее, мое приложение должно иметь 2 варианта: для потоковой передачи песни из линейного входа или для выбора песни из библиотеки musi c. У меня возникли проблемы с синхронизацией, когда я попытался сгенерировать сигнал из клипа, сохраненного в указанном каталоге c. Он генерирует сигнал хорошо, но он не совпадает с аудио точно. Мой мыслительный процесс выглядит следующим образом: я бы конвертировал все в файл .wav (поскольку звуковой API не работает с файлами MP3 и облегчает его) и записывал все необработанные данные амплитуды в ArrayList. Затем я бы сжал диапазон значений амплитуды в диапазон, который фактически соответствует моему монитору. Затем я использовал бы таймер анимации, чтобы нарисовать форму волны, используя линии, соединяющие каждую точку выборки. Поскольку таймер анимации работает со скоростью около 60 кадров в секунду, я бы разделил частоту дискретизации на 60, чтобы получить количество линий, которые я должен нарисовать в каждом кадре. Например, если частота дискретизации составляет 44100 Гц, я бы нарисовал 735 строк в каждом кадре. Поскольку в кадре 60 кадров в секунду, это будет рисовать 44100 строк в секунду, что соответствует частоте дискретизации песни. Этот метод работал хорошо для потоковой передачи, но у меня сейчас проблемы с синхронизацией, когда я просто воспроизводю клип в то же время, когда рисую форму волны. Может кто-нибудь сказать мне лучший способ go о синхронизации аудио сигнала с аудио файла .wav? Спасибо

...