QMediaPlayer — изменение звука на лету

Я изучаю варианты создания простого видеоплеера. Что я хотел бы сделать, так это применить некоторую обработку звука (например, фильтр нижних частот для простоты) при воспроизведении видео. Я просмотрел мультимедийный API Qt, поэтому вот мой главный вопрос:

  • Как я могу отредактировать аудиовыход QMediaPlayer? Нужны ли мне API более низкого уровня?

Кроме того, если некоторые другие технологии лучше подходят для этой цели или предоставляют лучшие библиотеки с открытым исходным кодом, не стесняйтесь предлагать. У меня тоже есть опыт работы с C#.


person eko    schedule 30.08.2017    source источник


Ответы (1)


QMediaPlayer не разрешает низкоуровневый доступ к аудиоданным. Я предлагаю вам использовать QAudioOutput и QAudioDecoder для ваших целей. QAudioDecoder создает объекты QAudioBuffer. Вы можете получить доступ к данным() этих объектов, обработать их (изменить) и передать QIODevice, который возвращается методом start() объекта QAudioOutput. Это будет путь воспроизведения звука вашего плеера. Для видео вы по-прежнему будете использовать приглушенный QMediaPlayer для декодирования видеокадров из того же файла и вывода их на QAbstractVideoSurface. Затем вам понадобится алгоритм для синхронизации видео- и аудиокадров, созданных двумя вышеуказанными методами.

person VuVirt    schedule 30.08.2017