Russian Qt Forum
Ноябрь 25, 2024, 23:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMediaPlayer peak meter , Запись  (Прочитано 5052 раз)
megido
Гость
« : Январь 25, 2014, 14:15 »

Нашел как измерять peak значения  в примере QT креатора
но вот проблема, измеряемые  данные находятся  в буфере. Ну или как то так
поиск по докам и тероризирование гугла на тему Qmediaplayer buffer ничего не дали
вобщем как достать буфер из созданого qmaediaplayer или как подсунуть ему уже созданый


еще бы неплохо было если бы данные из буфера можно было еще записывать, иногда


Записан
megido
Гость
« Ответ #1 : Январь 27, 2014, 07:31 »

частично решил проблему использовав QAudioProbe , подсунув ему плеер
частично потому что "peak meter" при таком подходе обновляется  как только probe скинет сигнал "audioBufferProbed"
 а это примерно раз в секунду, чуть меньше может.
 в итоге у меня не ву метер получился а какая то слоупочная фигня


слева красная  это оно, справа то что должно быть



« Последнее редактирование: Январь 27, 2014, 07:39 от megido » Записан
carrygun
Гость
« Ответ #2 : Январь 27, 2014, 10:19 »

Вы не пробовали у медиаплеера устанавливать setNotifyInterval()? А то он как раз по умолчанию равен одной секунде.
Записан
megido
Гость
« Ответ #3 : Январь 27, 2014, 12:13 »

Вы не пробовали у медиаплеера устанавливать setNotifyInterval()? А то он как раз по умолчанию равен одной секунде.

это тут не поможет
плеер у меня только играет музыку
график строится на основе буффера какой сигналом отдает QAudioProbe

Код:
    player =new QMediaPlayer(0, QMediaPlayer::StreamPlayback);
 //   QMediaContent track=QUrl("http://stream2.kissfm.ua:8000/kiss");
    QMediaContent track=QUrl("http://pub2.sky.fm:80/sky_world");

    player =new QMediaPlayer(0, QMediaPlayer::StreamPlayback);
    player->setVolume(20);
    player->setMedia(track);
    probe = new QAudioProbe;
    connect(probe, SIGNAL(audioBufferProbed(QAudioBuffer)),
            this, SLOT(processBuffer(QAudioBuffer)));     // вот тут вот  





я пока не понял как, да и возможно ли вытащить буфер из probe без сигнала
пробовал эмитировать этот сигнал да ничего не вышло тоже

« Последнее редактирование: Январь 27, 2014, 12:18 от megido » Записан
megido
Гость
« Ответ #4 : Январь 27, 2014, 12:32 »

вот допустим

   QMediaAudioProbeControl::audioBufferProbed();

ошибка: C2660: 'QMediaAudioProbeControl::audioBufferProbed' : function does not take 0 arguments

ему нужно подсунуть буффер, глупо как то. Так как я выполняю это чтоб достать этот буффер


пошел ковырять исходник
Записан
megido
Гость
« Ответ #5 : Январь 27, 2014, 12:55 »

глянул пример, ужаснулся. Во первых не использует там никто QMediaPLayer
а QAudio как я понял понимает только вав, перекодировать в вав я не хочу, зачем мне это делать.

Записан
megido
Гость
« Ответ #6 : Январь 27, 2014, 13:10 »

этот плеер похоже ничем не лучше фонона
Записан
megido
Гость
« Ответ #7 : Январь 30, 2014, 00:09 »

ап
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.105 секунд. Запросов: 21.