如何检查 Phonon 声音是不是已经在播放?

Posted

技术标签:

【中文标题】如何检查 Phonon 声音是不是已经在播放?【英文标题】:How to check if Phonon sound is already playing?如何检查 Phonon 声音是否已经在播放? 【发布时间】:2013-01-26 20:02:57 【问题描述】:

我对 Qt 比较陌生,所以我会尽可能清楚地解释这个问题以及我希望达到的目标。

目前我有一些按钮,当点击这些按钮时,会播放位于应用程序目录中的声音文件。 我做了一些研究,发现很多用户说使用 Phonon 比 QSound 更好。此应用程序仅适用于 Windows 平台,因此无需特殊操作。

这是我在 mainwindow.cpp 中的代码:

void MainWindow::on_obj_button_gandalf_clicked()

        Phonon::MediaObject *music =
        Phonon::createPlayer(Phonon::MusicCategory,Phonon::MediaSource("sound_file.mp3"));
        music->play();

声音播放完美。但是,如果用户必须在第一次单击时仍在播放声音时再次单击该按钮,则它会依次播放。

是否有某种 isplaying() 函数或其他东西来确定是否确实已经在播放相同的声音?如果是,则不应再次播放,如果不是,则应按要求播放歌曲。

我使用的是 Qt 4.7.0 32 位

【问题讨论】:

见qt-project.org/forums/viewthread/19097 不要为每个播放的文件创建 MediaObject。改为使用一个“玩家”,以便查询其状态 【参考方案1】:

读取documentation,看起来就像调用music->state() 和...检查状态一样简单。

if (music->state() == Phonon::PlayingState) 
    ...

您还会注意到有许多信号可以让您在应用程序中管理它,特别是stateChanged 信号。

【讨论】:

以上是关于如何检查 Phonon 声音是不是已经在播放?的主要内容,如果未能解决你的问题,请参考以下文章

在 PyQt 中播放声音文件

准确的跨平台声音处理

Qt:如何在不阻塞主线程的情况下播放声音?

检查 Windows 上的任何设备是不是正在播放声音 python

需要时通过默认通知声音播放我的声音

如何在 UILocalNotification 中播放录制的声音