Я пытаюсь разработать небольшое приложение, в котором вы можете загрузить mp3-файл и воспроизводить его с переменной скоростью! (Я знаю, что это уже существует :-))
Я использую Qt и C ++. У меня уже есть базовый проигрыватель, но я застрял на скорости, потому что я хочу плавно менять скорость (как в Mixxx), не останавливая воспроизведение! QMediaPlayer всегда останавливается, если я изменяю значение, и создает разрыв в звуке. Также я не хочу, чтобы поле изменилось!
Я уже нашел что-то под названием «SoundTouch», но теперь я совершенно не знаю, что с ним делать, как обрабатывать мои mp3-данные и как передать их в плеер! Библиотека «SoundTouch» способна делать то, что я хочу, я понял это из примеров на домашняя страница.
Любая помощь приветствуется! Я также открыт для любого другого решения тогда «SoundTouch», пока я могу оставаться с Qt / C ++!
(Второе: я хочу просмотреть обзор формы волны, а также ее движущуюся часть (вокруг фактического положения песни), поэтому я мог бы также использовать подсказки о том, как получить данные формы сигнала)
Заранее спасибо!
На данный момент (Qt 5.5) это невозможно сделать только с QMediaPlayer. Вам нужно сделать следующее:
Декодируйте аудио, используя GStreamer, FFMpeg или (новый) QAudioDecoder: http://doc.qt.io/qt-5/qaudiodecoder.html — это даст вам сырой поток PCM;
Примените SoundTouch или другую библиотеку к этим необработанным данным, чтобы изменить высоту звука. Если GPL в порядке, посмотрите на http://nsound.sourceforge.net/examples/index.html, если вы разрабатываете проприетарные вещи, STK может быть лучшим выбором: https://ccrma.stanford.edu/software/stk/
Выведите измененные данные на аудиоустройство с помощью QAudioOutput.
Эта стратегия максимально использует Qt и дает вам лучшее покрытие платформы (вы все равно потеряете Android, поскольку он не поддерживает QAudioOutput)
Других решений пока нет …