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

标签 c++ qt desktop phonon

一首歌在 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/

相关文章:

c++ - 使用 gcc 插件插入全局变量声明

c++ - 作为对象存储在内存中是什么意思?

qt - 未调用 QObject 析构函数

android - qt-creator android部署错误

c++ - 为什么这里模板 Vector3<int> 不能转换为 Vector3<int>?

c++ - 为什么这在 C++ 构造函数中不起作用

c++ - 打印数据 QTextDocument 和 QPainter

c++ - 使用 Qt 4 创建桌面小部件(如 Yahoo Widgets 或 Google Gadgets)

java - NullPointerException 与 libgdx 使用 gdx render() 方法

linux - Linux 如何在内核级屏幕上显示其桌面