基於QT實現Mp3播放器(理論論述部分)

前言

    最近有一個課程實驗,利用window上的API接口實現MP3播放器。 突發奇想,在linux下用相關接口做一個MP3播放器。最先的打算是完全使用純C寫的,但後來感覺編寫調試實在費勁。於是就使用了QT這個IDE工具,還可以編寫個圖形界面的。這篇博客主要說些理論設計部分,具體的代碼,請參見我的另一篇博客(基於QT實現Mp3播放器(代碼部分))
    來,小二,上個圖(注重邏輯,界面並沒有認真規劃,⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄)。
簡易Mp3播放器

技術綜述

   本次的小項目從技術上比較簡單,基本上一個UI的過程。主進程接收用戶的操作,然後新建一個進程,在這個進程中通過調用Mplayer這個工具提供的接口實現播放、暫停等動作。
(所以如果想運行本程序,必須在linux安裝mplayer這個多媒體播放工具,關於Mplayer的安裝、使用在此就不在贅述了)。 可以參照下面這篇博客:Qt5下QProcess + MPlayer實現QT音樂播放類

功能實現

(1)、添加歌曲(可以從文件夾中成批添加)
(2)、刪除歌曲(只能刪除當前歌曲)
(3)、播放
(4)、暫停、開始
(5)、上一曲、下一曲
(6)、加音量、減音量
(7)、自動連續播放

沒貼圖時的UI設計如下
未貼圖的UI設計

代碼架構

本次的項目代碼主要分爲三個部分,分別類屬三個類:
(1)、playerprocess:主要實現最底層對mplayer接口調用
(2)、player:用來處理用戶觸發的動作,並做基本的邏輯處理,最後把具體的操作下發給playerprocess層。從某種程度上來說算是一種中間件。
(3)、widget:這是視圖層。用於顯示歌曲列表,並接收用戶的動作,下發給player層。
具體的架構如下圖所示:
代碼架構

總結

   這個項目雖然很小,但確實多多少少花了我將近一個星期,功能上倒是很快就實現了。但一開始總感覺在代碼設計上顯得不夠好,冗餘太多,耦合也比較多,模塊之間的界限也不是很清晰。花了好長時間進行代碼架構設計,力求各層任務清晰,每層的函數功能也比較清晰。前前後後總共改了三四個版本,(最終是在是改不動了,想的我腦殼疼),雖然可能還有些 不太完善的地方,但目前的版本總體還算滿意吧。
   雖然花了很多時間,但確實也學到了不少東西,技術上的還是其次,更多的是設計思想上的,對面向對對象中的封裝、對策略和機制、對分層有了更深的理解。也算是時間花的有所值吧。

後言

具體的工程代碼已經打包了,有需要的請到對應的資源頁進行下載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章