Я пытаюсь понять, как я могу генерировать сигнал из аудио (или видео) файла для отображения пользователю.Создание формы сигнала из аудио (или видео) файла?
Я уже давно занимаюсь поиском в Интернете и не могу определить, возможно ли это в Qt, не используя что-то вроде FFmpeg. Я видел все эти классы: QMediaPlayer, QMediaContent, QMediaResource, QAudioProbe и экспериментировал с Qt Media Player Example, но просто не вижу, где я могу получить доступ к фактическому звуковому буферу.
Так что у меня 2 вопроса:
- Это то, что я хочу сделать, возможно даже без библиотек 3 участника?
- Если это возможно, может какой-то душа обрисовать то, что мне нужно прочитать и понять, для того, чтобы получить доступ к аудиоданным
Я попытался предложения от этого вопроса (Audio visualization with QMediaPlayer), но результат audioProbe->setSource(player)
является всегда false, и метод processBuffer
никогда не вызывается.
audioProbe = new QAudioProbe(this);
bool success = audioProbe->setSource(player);
qDebug() << success;
connect(audioProbe, SIGNAL(audioBufferProbed(QAudioBuffer)), this, SLOT(processBuffer(QAudioBuffer)));
Update: Добавление некоторые дополнительные детали в надежде на разъяснении вещи.
Для тестирования/обучения я использую Media Player Example, который поставляется с Qt, поэтому он правильно установлен
Q_OBJECT
и т.д.Для аудио, я тестировал как с .mp3 и .wav файлов. FWIW, то
player
пример не будет воспроизводить видео по какой-то причине (.mp4, .avi были протестированы)player
в коде QMediaPlayer - который наследует отQMediaObject
. Код примера для классаPlayer
: here. Я добавил код (в исходном комментарии выше) сразу после создания экземпляра игрока. Я также попытался добавить его после загрузки носителя.Я пробовал объявить свой слот первым как закрытый, а затем публично - так или иначе, он никогда не называется.
Разочарование, что такая простая вещь настолько сложна.
, какая платформа вы? – phyatt