欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用Qt制作的簡易音樂播放器

[項(xiàng)目地址] (https://github.com/Remaker01/TinyPlayer)

創(chuàng)新互聯(lián)主打移動(dòng)網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、空間域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

項(xiàng)目簡介:

自己做的一個(gè)小項(xiàng)目,GUI界面使用的是Qt5.12,播放模塊一開始使用Qt自帶的multimedia模塊,后改為VLC-qt以支持更多格式。
主要有主窗口(Playerwindow),播放器核心(PlayerCore),播放列表(PlayList),播放器控件(PlayButton),音樂文件信息(Music)等模塊。
可以支持打開文件夾并自動(dòng)搜索合法音頻文件,還可以拖拽文件到界面上??梢员4娌シ帕斜怼?br> 目前界面比較丑,后期可能會(huì)美化界面,還可能加入網(wǎng)絡(luò)音樂播放功能之類的。

分模塊介紹:

音樂信息模塊:存放音頻文件信息,包括時(shí)長、標(biāo)題、專輯等。
類定義:

class Music{
private:
    QString formattedTime;
    const QUrl url;
    int length;
    QString title,description,album;

    static bool isMP3(QFile *media,QDataStream &reader);
    static bool isWav(QFile *media,QDataStream &reader);
    static bool isWma(QFile *media,QDataStream &reader);
    static bool isAiff(QFile *media,QDataStream &reader);
    static bool isFlac(QFile *media,QDataStream &reader);
    static bool isAAC(QFile *media,QDataStream &reader);
public:
    /**
     * 根據(jù)指定的URL建立音樂對(duì)象
     * @param uri 給定的URL
     * @note 本構(gòu)造函數(shù)**不會(huì)**判斷URL是否合法
     */
    Music(const QUrl &uri = QUrl());
    ///獲取包含標(biāo)題、時(shí)間、唱片集、描述的音樂信息
    QString toString();
    /**
     * 比較兩個(gè)Music是否相等
     * @param a 另一個(gè)Music
     * @return 當(dāng)且僅當(dāng)滿足以下條件之一時(shí)返回true:
     * 1.url相同
     * 2.文件名,長度,標(biāo)題均相同
     */
    bool equals(const Music &a) const;
    friend bool operator==(const Music &a,const Music &b) {
        return a.equals(b);
    }
    friend bool operator!=(const Music &a,const Music &b) {
        return !a.equals(b);
    }
    friend uint qHash(const Music &key,uint seed = 0) {
        return qHash(key.title,seed) ^ qHash(key.length,seed) ^ qHash(key.url.fileName(),seed);
    }
    ///獲取Url
    const QUrl &getUrl() const;
    ///獲取經(jīng)格式化后的時(shí)間
    QString formatTime();
    static Music getMediaDetail(const QString &fileName);
    static bool isLegal(QString media);
};

播放器核心模塊:其實(shí)就是對(duì)VlcMediaPlayer的一些封裝與擴(kuò)展
類定義:

class PlayerCore : public VlcMediaPlayer{
    Q_OBJECT
private:
    static VlcInstance *ins;
    VlcMedia *curMedia;
    QSet<Music> medias;  //去重用
    QList<QUrl> list;
    int current = -1;
    int startLoc = 0;
    void connectSlots();
    void setMedia(const QString &media,bool start = true);
public:
    static constexpr int MODE_COUNT = 4,FORMAT_COUNT = 6;
    static const QString Formats[FORMAT_COUNT];
    static const QString MODE_TIPS[MODE_COUNT];
    enum PlayMode{SIGNLE = 0,SEQUENTIAL,SIGNLE_LOOP,LIST_LOOP};
    PlayMode mode = SIGNLE;
    explicit PlayerCore(QObject *parent = nullptr);
    ///獲取當(dāng)前媒體
    QString getMedia();
    ///獲取指定編號(hào)的媒體目錄
    QString getMedia(int i);
    ///獲取媒體詳細(xì)信息
    Music getMediaDetail(int i);
    ///獲取以秒為單位的時(shí)間
    int getPosInSecond();
    int getCurrentMediaIndex();
    ///設(shè)置時(shí)間,以秒為單位
    void setPos(int pos);
    void setCurrentMediaIndex(int i);
    ///添加到播放列表
    bool addToList(const QString &media);
    ///從播放列表中移除
    bool removeFromList(int loc);
    ///清空播放列表
    void clear();
    void play();
    ~PlayerCore();
signals:
    void finished();
    //void mediaSourceChanged(qint64 newTime);
};

主窗口模塊(PlayerWindow):顧名思義,就是整個(gè)播放器的主窗口。負(fù)責(zé)用戶與播放器的交互。繼承于QMainWindow。
播放列表模塊(PlayListView):主窗口上的播放列表,繼承于QListView。
滑動(dòng)條模塊(PlayerSlider):主窗口上的播放進(jìn)度條與音量進(jìn)度條,繼承于QSlider。
播放按鈕模塊(PlayerButton):主窗口上的各種播放器控件,如開始、停止按鈕等。繼承于QLabel。

實(shí)現(xiàn)效果:

網(wǎng)站欄目:使用Qt制作的簡易音樂播放器
文章分享:http://chinadenli.net/article28/dsoipcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)網(wǎng)站收錄、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)