声音在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毫秒的计时器检查视频状态,如果结束则播放
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();
}
}
关于c++ - Qt声子音频播放器中的循环问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6937231/