【问题标题】:QMediaPlayer doesn't produce audioQMediaPlayer 不产生音频
【发布时间】:2019-03-16 16:26:04
【问题描述】:

我从 C++ 开始,我正在尝试使用 Qt 播放 mp3 文件。我写了这段代码,但由于某种原因它不起作用。我已经搜索了互联网,但找不到有用的东西。

这是我的代码:

#include <iostream>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QFileInfo>
#include <QUrl>

int main()
{
    QMediaPlaylist *list = new QMediaPlaylist;
    list->addMedia(QUrl::fromLocalFile(QFileInfo("Filename.mp3").absoluteFilePath()));
    QMediaPlayer *music;
    music = new QMediaPlayer();
    music->setPlaylist(list);
    music->play();
    return 0;
}

没有音乐播放,这个程序的输出是:

QObject::startTimer:定时器只能用于以 QThread 启动的线程
QObject::startTimer:定时器只能用于以 QThread 启动的线程

这是我的.pro 文件:

TEMPLATE = app
TARGET = MediaPlayer
QT += core multimedia
SOURCES += main.cpp

环境

Fedora 29
Qt 5.11.3-1

我试图在 Qt creator 和终端上运行这个程序。

【问题讨论】:

  • 使用:int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QMediaPlaylist *list = new QMediaPlaylist; list-&gt;addMedia(QUrl::fromLocalFile(QFileInfo("Filename.mp3").absoluteFilePath())); QMediaPlayer *music; music = new QMediaPlayer(); music-&gt;setPlaylist(list); music-&gt;play(); return app.exec(); }
  • @eyllanesc 谢谢,成功了!

标签: c++ qt qmediaplayer


【解决方案1】:

您的应用程序缺少一个

  • QCoreApplication 如果它应该是无头的
  • QGuiApplication 用于 QtQuick,或
  • QApplication 如果它具有小部件

Q*Application 是大多数 Qt 应用程序的必备组件,因为这是在主线程上处理所有事件和信号的部分。这就是您遇到 QTimer 相关错误的原因,因为 Qt 无法事先用 QThread “包装”主线程。

只需添加它以及app.exec(); 即可启动它,你应该没问题。 app.exec() 将阻塞直到您的应用程序完成。

此外,您在应用程序的整个生命周期中需要的实例通常应该创建在堆栈上,而不是堆上。

int main(int argc, char *argv[]) {
    QCoreApplication app(argc, argv);

    QMediaPlaylist list;
    auto media = QUrl::fromLocalFile(QFileInfo("Filename.mp3").absoluteFilePath());
    list.addMedia(media);

    QMediaPlayer music;
    music.setPlaylist(list);
    music.play();

    return app.exec();
}

【讨论】:

  • 在堆栈上创建要在整个生命周期中使用的对象是什么疯狂的事情?我们实际上注意到这在某些情况下不适用于堆。为什么要疯狂?一方面,该对象不能通过多个客户端访问。
猜你喜欢
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 2012-12-14
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
相关资源
最近更新 更多