проблема с зацикливанием в фононном аудиоплеере в Qt

Песня установлена ​​как статическая в аудиоплеере Phonon. Цикл работает с использованием aboutToFinish(). Проблема в том, что в конце песни есть задержка в 1 секунду, затем песня повторяется. Как нам избежать задержки? Я также сохранил во временном буфере (используя QBuffer) для воспроизведения. Но это не дает решения проблемы зацикливания.

musicpath="sound/sample.mp3";
Phonon::AudioOutput *audioOutput;
Phonon::VolumeSlider *volumeSlider;

Phonon::MediaObject *mediaObject;
mediaObject = new Phonon::MediaObject(this);
mediaObject->setCurrentSource(Phonon::MediaSource( musicpath));
connect(mediaObject, SIGNAL(aboutToFinish()),mediaObject,SLOT(stop()));
connect(mediaObject, SIGNAL(aboutToFinish()),mediaObject,SLOT(play()));
Phonon::createPath(mediaObject, audioOutput);
volumeSlider->setAudioOutput(audioOutput);
mediaObject->play();

person kishore    schedule 04.08.2011    source источник
comment
У меня та же проблема (задержка немного короче, ~ 0,5 с). Я пытался использовать MediaObject::enqueue() на aboutToFinish(), но безуспешно.   -  person sschober    schedule 21.05.2012
comment
Вы нашли какое-либо решение..? И если да, то не могли бы вы опубликовать это?   -  person Adorn    schedule 04.04.2013


Ответы (1)


Я думаю, что лучший выбор - проверить состояние видео с помощью таймера с 1 мс и воспроизвести его, если он закончится.

timer = new QTimer;
QObject::connect(timer, SIGNAL(timeout()), this, SLOT(timer_overflow()));
timer->start(1);

void MainWindow::timer_overflow()
{

   if(ui->videoPlayer->isPaused())
    {
     video=Phonon::createPlayer(Phonon::VideoCategory,Phonon::MediaSource("video/back);
     ui->videoPlayer->load(Phonon::MediaSource("video/background_video.wmv"));
     ui->videoPlayer->play();
    }

}
person ivnn    schedule 29.06.2016