[英]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;
}
沒有音樂播放,這個程序的output是:
QObject::startTimer:定時器只能用於以 QThread 啟動的線程
QObject::startTimer:定時器只能用於以 QThread 啟動的線程
這是我的.pro
文件:
TEMPLATE = app
TARGET = MediaPlayer
QT += core multimedia
SOURCES += main.cpp
環境:
軟呢帽 29
Qt 5.11.3-1
我試圖在 Qt 創建者和終端上運行這個程序。
您的應用程序缺少
QCoreApplication
如果應該沒有頭 QGuiApplication
,或 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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.