QMediaPlayer 不产生音频
QMediaPlayer doesn't produce audio
我刚开始使用 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: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
这是我的 .pro
文件:
TEMPLATE = app
TARGET = MediaPlayer
QT += core multimedia
SOURCES += main.cpp
环境:
Fedora 29
Qt 5.11.3-1
我尝试在 Qt Creator 和终端上 运行 这个程序。
您的申请缺少
QCoreApplication
如果它应该是无头的
QGuiApplication
对于 QtQuick,或
QApplication
如果它具有小部件
Q*Application
是大多数 Qt 应用程序的必需组件,因为这是在主线程上处理所有事件和信号的部分。这就是为什么您遇到 QTimer
相关错误的原因,因为 Qt 无法事先使用 QThread
"wrap" 主线程。
只需添加它,以及 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();
}
我刚开始使用 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: Timers can only be used with threads started with QThread
QObject::startTimer: Timers can only be used with threads started with QThread
这是我的 .pro
文件:
TEMPLATE = app
TARGET = MediaPlayer
QT += core multimedia
SOURCES += main.cpp
环境:
Fedora 29
Qt 5.11.3-1
我尝试在 Qt Creator 和终端上 运行 这个程序。
您的申请缺少
QCoreApplication
如果它应该是无头的QGuiApplication
对于 QtQuick,或QApplication
如果它具有小部件
Q*Application
是大多数 Qt 应用程序的必需组件,因为这是在主线程上处理所有事件和信号的部分。这就是为什么您遇到 QTimer
相关错误的原因,因为 Qt 无法事先使用 QThread
"wrap" 主线程。
只需添加它,以及 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();
}