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

发布于 2024-11-27 17:43:38 字数 686 浏览 0 评论 0原文

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

A song is set as static in Phonon audio player. The loop works using aboutToFinish(). The problem is that there is a 1 sec delay at the end of the song, then the song repeats.
How can we avoid the delay? I have also stored in a temporary buffer (using QBuffer), for playing it. But it is not giving solution for looping issue.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

落日海湾 2024-12-04 17:43:38

我认为最好的选择是检查视频状态是使用 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();
    }

}

I think best choice is checking for state of video is by using timer with 1 ms and play it if end

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

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文