【发布时间】:2017-10-19 21:42:15
【问题描述】:
问题: 以下调用不会使 QMediaPlayer 播放任何声音。
player->setMedia(QUrl("qrc:/snd/coin-refund.mp3"));
player->play();
其中player 的类型为QMediaPlayer*。
URL 是使用 QtCreator Copy URL 选项生成的。所以文件肯定在 .qrc 文件中。
详情:
我有一个从QObject 派生的类,如下所示:
class MyClass : public QObject
{
Q_OBJECT
// some stuff
private:
QMediaPlayer* player;
}
像这样在 MyClass 构造函数中调用 QMediaPlayer 标准构造函数...
MyClass::MyClass() :
player(new QMediaPlayer)
{
}
...在运行时导致以下错误消息(应用程序编译时没有任何警告)
QObject::startTimer: 定时器只能用于启动的线程 线程
删除播放器会删除此消息(我没有明确创建任何 QThreads 或 QTimers)。
在我的 .pro 文件中:
QT += core gui webkitwidgets multimedia multimediawidgets widgets
其他信息: 我在 Arch Linux 上,使用 QtCreator 4.2.2 和 Qt 5.8.0
编辑:
【问题讨论】:
-
您是否安装了 mp3 的编解码器?我正在使用 Archlinux,Qt 5.8,我没有任何问题......如果您可以通过 github、dropbox 或类似方式共享您的项目,您可以提供更好的帮助。
-
你可以运行:
ldd your_executable并展示你得到了什么。 -
@eyllanesc 按要求添加了 github 链接。
-
@eyllanesc 添加了 ldd 输出
标签: c++ qt qt5 qmediaplayer