Qt中声子音频播放器中的循环问题

时间:2011-08-04 06:44:51

标签: qt desktop

在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();

1 个答案:

答案 0 :(得分:0)

我认为最好的选择是通过使用1 ms的定时器检查视频状态,如果结束则播放

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();
    }

}
相关问题