﻿{"id":1247,"date":"2021-04-24T10:30:48","date_gmt":"2021-04-24T02:30:48","guid":{"rendered":"http:\/\/www.tansoo.cn\/?p=1247"},"modified":"2021-04-24T10:36:44","modified_gmt":"2021-04-24T02:36:44","slug":"qmediaplayer%e6%92%ad%e6%94%bemp3%e6%97%a0%e5%a3%b0%e9%9f%b3%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95","status":"publish","type":"post","link":"http:\/\/www.tansoo.cn\/?p=1247","title":{"rendered":"QMediaPlayer\u64ad\u653eMP3\u65e0\u58f0\u97f3\u89e3\u51b3\u529e\u6cd5"},"content":{"rendered":"\r\n<p class=\"wp-block-paragraph\">QT\u4e2d\u5229\u7528QMediaPlayer\u64ad\u653eMP3\u65e0\u58f0\u97f3\uff0c\u7a0b\u5e8f\u8fd0\u884c\u65f6\u63d0\u793a\uff1a<br \/>\u201cQtMultimedia : defaultServiceProvider::requestService(): no service found for &#8211; \u201corg.qt-project.qt.mediaplayer\u201d<br \/>\u8c03\u8bd5\u8ddf\u8e2a\u9519\u8bef\u4fe1\u606f\uff0c\u63d0\u793a\uff1a<br \/>\u201cA valid playback service was not found, playback cannot proceed.\u201d<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u539f\u56e0\u662f\u7cfb\u7edf\u4e2d\u5728Linux\u4e2d\u7f3a\u5c11libqt5multimedia5-plugins \u5e93\u6587\u4ef6\uff0c\u5b89\u88c5\u540e\u89e3\u51b3\uff1a<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>sudo apt install  libqt5multimedia5-plugins<\/code><\/pre>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\u5b8c\u6210\u4f8b\u5b50\u6e90\u4ee3\u7801\uff1a<!--more--><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">mainwindows.h<\/p>\r\n\r\n\r\n\r\n<pre class=\"lang:c++ decode:true wp-block-code\" title=\"mainwindows.h\">&lt;code&gt;#ifndef MAINWINDOW_H\r\n#define MAINWINDOW_H\r\n\r\n#include &lt;QMainWindow&gt;\r\n#include &lt;QtMultimedia\/QMediaPlayer&gt;\r\n#include &lt;QtMultimedia\/QMediaPlaylist&gt;\r\n#include &lt;QDir&gt;\r\n#include &lt;QRandomGenerator&gt;\r\n\r\nQT_BEGIN_NAMESPACE\r\nnamespace Ui {\r\nclass MainWindow;\r\n}\r\nQT_END_NAMESPACE\r\n\r\nclass MainWindow : public QMainWindow\r\n{\r\n    Q_OBJECT\r\n\r\npublic:\r\n    MainWindow(QWidget *parent = nullptr);\r\n    ~MainWindow();\r\n    QMediaPlayer *player;\r\n    QMediaPlaylist *playlist;\r\n    QList&lt;QFileInfo&gt; *fileInfo;\r\n    QDir *dir;\r\n    int mp3count;\r\n\r\nprivate slots:\r\n    void on_pushButton_clicked();\r\n    void on_pushButton_2_clicked();\r\n\r\nprivate:\r\n    Ui::MainWindow *ui;\r\n};\r\n#endif \/\/ MAINWINDOW_H\r\n&lt;\/code&gt;<\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">mainwindows.cpp<\/h3>\r\n\r\n\r\n\r\n<pre class=\"lang:c++ decode:true wp-block-code\" title=\"mainwindows.cpp\">#include \"ui_mainwindow.h\"\r\n\r\nMainWindow::MainWindow(QWidget *parent)\r\n    : QMainWindow(parent)\r\n    , ui(new Ui::MainWindow)\r\n{\r\n    ui-&gt;setupUi(this);\r\n\r\n    \/\/ \u64ad\u653e\u5668\r\n    player = new QMediaPlayer;\r\n    \/\/ \u64ad\u653e\u9519\u8bef\u4fe1\u606f\r\n    connect(player, QOverload&lt;QMediaPlayer::Error&gt;::of(&amp;QMediaPlayer::error),\r\n    [=](QMediaPlayer::Error error) {\r\n        qDebug()&lt;&lt;error;\r\n    });\r\n\r\n    \/\/ \u751f\u6210\u64ad\u653e\u5217\u8868\r\n    playlist = new QMediaPlaylist(player);\r\n    dir=new QDir(\"\/home\/pi\/Music\");  \/\/ mp3\u5b58\u653e\u76ee\u5f55\r\n    QStringList filter;\r\n    filter&lt;&lt;QString(\"*.mp3\");\r\n    fileInfo=new QList&lt;QFileInfo&gt;(dir-&gt;entryInfoList(filter));\r\n    for(int i = 0; i&lt;fileInfo-&gt;count(); i++)\r\n    {\r\n        qDebug()&lt;&lt;fileInfo-&gt;at(i).filePath();\r\n        playlist-&gt;addMedia(QUrl::fromLocalFile(fileInfo-&gt;at(i).filePath()));\r\n        ui-&gt;textEdit-&gt;append(fileInfo-&gt;at(i).filePath());\r\n    }\r\n\r\n    player-&gt;setPlaylist(playlist);\r\n    mp3count = fileInfo-&gt;count();\r\n    qDebug()&lt;&lt; \"Mp3 count : \"&lt;&lt; mp3count &lt;&lt; endl;\r\n}\r\n\r\nMainWindow::~MainWindow()\r\n{\r\n    delete ui;\r\n}\r\n\r\n\r\nvoid MainWindow::on_pushButton_clicked()\r\n{\r\n    \/\/ \u968f\u673a\u64ad\u653emp3\r\n    player-&gt;stop();\r\n    player-&gt;setPlaylist(playlist);\r\n    int i = QRandomGenerator::global()-&gt;bounded(fileInfo-&gt;count());\r\n    playlist-&gt;setCurrentIndex(i);\r\n\r\n    qDebug()&lt;&lt; \"Mp3 index : \"&lt;&lt; i &lt;&lt; \", name:\"&lt;&lt; player-&gt;currentMedia().canonicalUrl();;\r\n    player-&gt;setVolume(50);\r\n    player-&gt;play();\r\n}\r\n\r\nvoid MainWindow::on_pushButton_2_clicked()\r\n{\r\n    \/\/ \u64ad\u653e\u6307\u5b9amp3\r\n    player-&gt;setMedia(QUrl::fromLocalFile(\"\/home\/pi\/Music\/\u7ea2\u65e5.mp3\"));\r\n    qDebug()&lt;&lt; player-&gt;currentMedia().canonicalUrl();\r\n    player-&gt;setVolume(50);\r\n    player-&gt;play();\r\n\r\n}\r\n<\/pre>\r\n","protected":false},"excerpt":{"rendered":"<p>QT\u4e2d\u5229\u7528QMediaPlayer\u64ad\u653eMP3\u65e0\u58f0\u97f3\uff0c\u7a0b\u5e8f\u8fd0\u884c\u65f6\u63d0\u793a\uff1a\u201cQtMultimedia : defau [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1247","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts\/1247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1247"}],"version-history":[{"count":3,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts\/1247\/revisions"}],"predecessor-version":[{"id":1250,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=\/wp\/v2\/posts\/1247\/revisions\/1250"}],"wp:attachment":[{"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1247"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tansoo.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}