簡體   English   中英

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;
}

沒有音樂播放,這個程序的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如果應該沒有頭
  • QtQuick的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM