利用DirectShow开发C#版的音频文件播放器(三)
前面曾經講到了利用利用DirectShow開發C#版的MP3播放器,這篇文章是對前面兩篇文章的補充與升華。
首先,大家不難發現,這篇文章的標題已經修改為音頻文件播放器,而不僅僅是針對MP3一種格式,支持多種音頻格式,如*.wav; *.mpa; *.mp2; *.mp3; *.au; *.aif; *.aiff; *.snd; *.wma。其次是原有的MP3播放器都是使用了Quazt.dll文件,現在則是去掉了該DLL文件,而引用Microsoft.DirectX.AudioVideoPlayback。最后,在界面的展現上做了修改,使其更美觀、更人性化,同時對播放列表支持右鍵菜單功能。
??? 在具體介紹該版本的音頻文件播放器之前,先看看運行效果圖:
???
整個項目工程以FrmPlayer.CS作為主類,里面包含了各類事件和方法,其中比較重要的方法有如下幾個:
(1)?? 播放方法:private void Play(),包括了對一次全新播放和暫停后繼續播放的處理;
(2)?? 暫停方法:private void Pause(),對當前正在播放的媒體文件進行暫停;
(3)?? 停止方法:private void Stop(),停止當前正在播放的媒體文件;
(4)?? 已經播放到結尾事件:private void ClipEnded(object sender, System.EventArgs e),該事件主要是當一個媒體文件播放完成時,可以自動切換到下一曲,事件的添加在play()方法中;
(5)?? 播放上一曲方法:private void Previous(),其中包含了對不同播放模式的處理;
(6)?? 播放下一曲方法:private void Next(),其中包含了對不同播放模式的處理;
(7)?? 初始化媒體文件信息并開始播放方法:private void InitFileInfoAndPlay(string[] fileNames),該方法主要是獲取文件信息并添加到播放列表,然后開始播放;
(8)?? 更新播放時間及播放進度方法:private void UpdatePlayTime(),主要用于處理播放進度條和已播放時間的顯示;
(9)?? 根據播放列表狀態更新相應按鈕狀態方法:private void UpdatePlayList();
(10) 更新播放按鈕狀態方法:private void UpdatePlayStatus(),播放按鈕狀態的控制主要通過當前媒體文件的播放狀態(Paused、Running和Stopped)來確定;
(11) 更新播放模式的菜單選中狀態方法:private void UpdatePlayModeMenuStatus(),該方法中使用到了枚舉類型PlayMode,包括單曲播放、單曲循環、順序播放、循環播放和隨機播放共五種播放模式。
?
此外還有兩個類,一個是AudioFileInfo.cs,該類主要用于存儲音頻文件的相關信息,如文件標題、播放時長、文件大小、文件絕對路徑等;一個是Utils.cs,該類主要包含了一些靜態方法。
經過一定的修改調整,目前的音頻文件播放器已基本可以滿足應用要求。關于整個項目工程的源代碼,筆者已經打包成*.rar文件并上傳,有需要的朋友可以從以下路徑下載:http://download.csdn.net/source/2153161
另外,關于刪除若干媒體文件后,重排播放序號的問題,筆者尚未作任何處理,關于這一點,在后面如果有閑暇時間,將會作進一步的改進。
?
總結
以上是生活随笔為你收集整理的利用DirectShow开发C#版的音频文件播放器(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Modelica教程》by Fritz
- 下一篇: 基于Springboot + Vue2.