Russian Qt Forum

Qt => Мультимедиа => Тема начата: megido от Январь 25, 2014, 14:15



Название: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 25, 2014, 14:15
Нашел как измерять peak значения  в примере QT креатора
но вот проблема, измеряемые  данные находятся  в буфере. Ну или как то так
поиск по докам и тероризирование гугла на тему Qmediaplayer buffer ничего не дали
вобщем как достать буфер из созданого qmaediaplayer или как подсунуть ему уже созданый


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




Название: Re: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 27, 2014, 07:31
частично решил проблему использовав QAudioProbe , подсунув ему плеер
частично потому что "peak meter" при таком подходе обновляется  как только probe скинет сигнал "audioBufferProbed"
 а это примерно раз в секунду, чуть меньше может.
 в итоге у меня не ву метер получился а какая то слоупочная фигня


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

(http://gyazo.com/a45cb3f5dd5a072094d41463ad0b56c3.gif)



Название: Re: QMediaPlayer peak meter , Запись
Отправлено: carrygun от Январь 27, 2014, 10:19
Вы не пробовали у медиаплеера устанавливать setNotifyInterval()? А то он как раз по умолчанию равен одной секунде.


Название: Re: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 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 без сигнала
пробовал эмитировать этот сигнал да ничего не вышло тоже



Название: Re: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 27, 2014, 12:32
вот допустим

   QMediaAudioProbeControl::audioBufferProbed();

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

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


пошел ковырять исходник


Название: Re: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 27, 2014, 12:55
глянул пример, ужаснулся. Во первых не использует там никто QMediaPLayer
а QAudio как я понял понимает только вав, перекодировать в вав я не хочу, зачем мне это делать.



Название: Re: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 27, 2014, 13:10
этот плеер похоже ничем не лучше фонона


Название: Re: QMediaPlayer peak meter , Запись
Отправлено: megido от Январь 30, 2014, 00:09
ап