日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

利用DirectShow开发C#版的音频文件播放器(三)

發布時間:2024/3/13 C# 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用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(),播放按鈕狀態的控制主要通過當前媒體文件的播放狀態(PausedRunningStopped)來確定;

(11) 更新播放模式的菜單選中狀態方法:private void UpdatePlayModeMenuStatus(),該方法中使用到了枚舉類型PlayMode包括單曲播放、單曲循環、順序播放、循環播放和隨機播放共五種播放模式。

?

此外還有兩個類,一個是AudioFileInfo.cs,該類主要用于存儲音頻文件的相關信息,如文件標題、播放時長、文件大小、文件絕對路徑等;一個是Utils.cs,該類主要包含了一些靜態方法。

經過一定的修改調整,目前的音頻文件播放器已基本可以滿足應用要求。關于整個項目工程的源代碼,筆者已經打包成*.rar文件并上傳,有需要的朋友可以從以下路徑下載:http://download.csdn.net/source/2153161

另外,關于刪除若干媒體文件后,重排播放序號的問題,筆者尚未作任何處理,關于這一點,在后面如果有閑暇時間,將會作進一步的改進。

?

總結

以上是生活随笔為你收集整理的利用DirectShow开发C#版的音频文件播放器(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。