版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)設計說明書</b></p><p> 摘要: 隨著生活水平的提高,娛樂已成為非常主流的話題,人們不僅需要通過音樂陶冶情操,而且越來越多的人傾向于使用音樂、視頻等娛樂和放松自己,這大大促進了媒體軟件的發(fā)展.本文旨在介紹研究常用數(shù)字音頻編碼和解碼的相關知識,并結合VS2008編寫多功能音樂播放器,了解音樂播放器功能的實現(xiàn),掌握開發(fā)音樂播放器所需的相關知識,采
2、用了面向對象軟件工程方法,其開發(fā)主要包括應用程序界面設計和后臺代碼運行兩個方面,實現(xiàn)了多功能音樂播放器在計算機上的應用,可以在很大程度上滿足用戶的需求.該系統(tǒng)主要具備:音樂播放控制、音樂文件控制、音量控制、下載控制、歌詞控制、進度控制、音樂剪輯等功能模塊。</p><p> 關鍵字:音樂播放器,音頻編碼格式,TechSmith Screen Capture Codec,F(xiàn)Fmpeg ,C#,Visual Stu
3、dio 2008</p><p> Abstract:With the improvement of standards of living, entertainment has become very mainstream topics, it is required not only by music, edifying, and as more and more people tend to use mu
4、sic, video and other entertainment and relax, which greatly promoted the development of media software. This article aims to introduce the research knowledge of common digital audio encoding and decoding, and in conjunct
5、ion with VS2008 prepared multifunctional music player, understand the functions of the musi</p><p> Keywords: music player, audio coding format, techsmith screen capture codec, c#, visual studio 2008</p&
6、gt;<p><b> 目 錄</b></p><p> 1 前言- 4 -</p><p> 1.1 選題的背景及意義- 4 -</p><p> 1.2 網(wǎng)絡流行音樂播放器簡介- 4 -</p><p> 2 系統(tǒng)相關技術及開發(fā)平臺介紹- 5 -</p><p&g
7、t; 2.1 開發(fā)應用技術介紹- 5 -</p><p> 2.2 開發(fā)及運行壞境- 7 -</p><p> 3 系統(tǒng)的分析- 8 -</p><p> 3.1 可行性分析- 8 -</p><p> 3.2 常見的幾種音頻格式及其特點- 9 -</p><p> 3.3 需求分析- 10 -
8、</p><p> 4系統(tǒng)設計- 12 -</p><p> 4.1 系統(tǒng)概要設計- 12 -</p><p> 4.2 系統(tǒng)功能設計及描述- 12 -</p><p> 5 系統(tǒng)功能實現(xiàn)- 14 -</p><p> 5.1 歌曲添加模塊- 15 -</p><p>
9、5.2 歌曲列表模塊- 19 -</p><p> 5.3 播放控制模塊- 20 -</p><p> 5.4 音量控制模塊- 23 -</p><p> 5.5 進度控制模塊- 24 -</p><p> 5.6 滾動字幕模塊- 24 -</p><p> 5.7 歌曲下載模塊- 29 -<
10、;/p><p> 5.8 歌曲剪輯模塊- 31 -</p><p> 結 論- 35 -</p><p> 參 考 文 獻- 36 -</p><p> 致 謝- 37 -</p><p><b> 1 前言 </b></p><p> 1.1 選題的背景
11、及意義</p><p> 音樂是情感的藝術,美妙動聽的音樂來源于情感,又潛移默化地影響情感,讓我們進入瑰麗多彩的虛化與現(xiàn)實的意境之中。向上追溯百年或千年,直至最原始的音樂誕生之初,我相信音樂是為了傾訴而不是表現(xiàn),是自然的流露而不是技巧的夸張,是自我的沉醉而不是別人的掌聲。因為愛與感動,因為生命的圓滿與缺憾,因為思想的靈動與創(chuàng)造。所以音樂不單在樂譜上,更在我們的心中。</p><p>
12、眾所周知任何格式的音樂都要通過音樂播放軟件播放,那么音樂播放軟件是通過什么樣的原理實現(xiàn)音樂的播放的呢?音樂播放器就是音頻解碼器的可視化操作界面,其實質是針對各種音頻編碼格式的解碼器。例如APE格式調用的是Monkey's Audio解碼器,F(xiàn)LAC格式調用的是FLAC解碼器,MP3調用的是lame解碼器。大部分音樂播放器都支持多種音樂格式的文件,這是因為這些播放器將不同的音頻解碼器打包起來,并制作統(tǒng)一的播放界面,從而讓使用者能夠
13、方便地播放和聆聽各種音樂。</p><p> 伴隨著改革開放人們的生活水平普遍提高如今音樂已成為越來越多人的心靈寄托。隨著因特網(wǎng)在我國的普及隨之而來的是各式各樣的播放器軟件。</p><p> 盡管未來的音樂播放器將具備各種豐富多彩的功能,但作為一款多媒體軟件,音頻應用才是最基本的,也是最能決定獲取用戶數(shù)量的因素。</p><p> 基于上述分析音質高,外形美
14、觀,小巧且功能強大是未來播放器發(fā)展的主流趨勢。作為一個音樂愛好者兼軟件工程專業(yè)的一員若能編寫一款小巧功能強大的音樂播放器無疑是一件很有成就感的事情。</p><p> 1.2 網(wǎng)絡流行音樂播放器簡介</p><p> 本小節(jié)舉例介紹目前網(wǎng)絡上流行的幾款音樂播放器,比如國產(chǎn)千千靜聽,酷狗音樂等。比較分析了它們各自特有的功能,此外還集中介紹了常見的幾種編碼格式以及它們各自的特點。</
15、p><p> 1.2.1 千千靜聽</p><p> 千千靜聽是一款專為用戶定制的全新一代的免費聽歌下載音樂播放器軟件。提供百萬首歌曲免費試聽下載,擁有最新、最流行的歌曲,提供第一時間音樂資訊;超高品質(320kbps)的音樂歌曲下載,給耳朵更優(yōu)質的享受;超炫的智能語音搜歌功能讓聽歌更加快捷;免費的手機鈴聲歌曲下載;輕松拖拽歌詞,保持歌詞同步,支持邊聽邊唱;支持在線播放下載;流量限額提醒功
16、能。 </p><p> 軟件特色:1、高精度音質,完美還原聽覺 ;2、在線自動下載歌詞,卡拉OK式同步顯示 ;3、軟件小、運行快、支持眾多插件,自由編輯歌詞,由你做主;4、自由轉換MP3、WMA,APE,WAV等多種音頻格式 ,批量修改歌曲標簽信息;5、個性化皮膚,多種視覺效果享受永遠免費。</p><p> 1.2.2 酷狗音樂</p><p> 酷狗音樂
17、是中國領先的數(shù)字音樂交互服務提供商,互聯(lián)網(wǎng)技術創(chuàng)新的領軍企業(yè),致力于為互聯(lián)網(wǎng)用戶和數(shù)字音樂產(chǎn)業(yè)發(fā)展提供最佳的解決方案,公司的使命是成為亞太地區(qū)最大的數(shù)字音樂銷售推廣企業(yè)。自公司創(chuàng)建以來,一直在數(shù)字音樂發(fā)展上大膽嘗試,先后與幾十家唱片公司、版權管理機構合作探索發(fā)展,積累了數(shù)萬首數(shù)字音樂版權,并在推動廣范圍的跨行業(yè)、跨平臺合作上做出努力,在艱巨的全球音樂數(shù)字化進程中做出自身的貢獻。全球最受歡迎的免費中文播放軟件,流行音樂搜索平臺。</
18、p><p> 軟件特色: 1、迷你界面、界面更酷、絢麗流行;保持了Windows Vista和XP下的完美表現(xiàn),讓人耳目一新;2、卡拉OK酷狗獨創(chuàng)“卡拉OK”歌詞顯示,多種模式,邊聽邊唱,讓你聽歌更好玩;3、支持本地音樂播放完美音質,支持所有的音頻文件,本地文件拖放,同時支持網(wǎng)絡高速下載和本地播放;4、超強搜索和下載優(yōu)化歌曲搜索引擎,提高搜索準確度;智能化節(jié)約帶寬,可關閉網(wǎng)絡功能;5、流行音樂資訊酷狗榜單家族、狗友
19、推薦、酷吧、狗窩,最新流行音樂一網(wǎng)打盡,好聽的音樂來“找”你;6、個性化手機炫鈴DIY,讓擁有張揚個性的鈴聲7、音頻格式我選擇我的歌曲我制作,音質音效我決定8、收音機動感音樂識別體驗精選多家電臺,收聽全球風云變化,更能識別電臺中的音樂。</p><p> 2系統(tǒng)相關技術及開發(fā)平臺介紹</p><p> 本系統(tǒng)是采用面向對象的軟件開發(fā)方法,基于微軟的Visual Studio .Net
20、 開發(fā)平臺,以C#作為本系統(tǒng)的開發(fā)語言實現(xiàn)音樂播放器預定的需求功能。</p><p> 2.1 開發(fā)應用技術介紹</p><p> 2.1.1 TechSmith Screen Capture Codec簡介</p><p> TechSmith Screen Capture Codec是TechSmith公司開發(fā)的Camtasia Studio的一個組件,用
21、于壓縮Camtasia Recorder中的視頻文件,最大的優(yōu)點是可以保證圖像的質量,截取的屏幕經(jīng)過多次壓縮,還能保證高質量。 比傳統(tǒng)的壓縮方式相比,優(yōu)勢十分明顯。 </p><p> Camtasia Studio是TechSmith旗下一款專門錄制屏幕動作的工具,無論在何種顏色模式下它都能輕松地對屏幕動作進行記錄,包括聲音、圖像、鼠標的移動軌跡等。此外,它還能夠對音頻片段進行編輯、壓縮、剪接從而實現(xiàn)多種音效
22、的播放。它還能輸出包括Flash(SWF/FLV)、AVI、WMV、M4V、CAMV、MOV、RM、GIF動畫等多種常見格式,是制作視頻演示的絕佳工具。其實Camtasia Studio已不僅僅是一個錄屏工具了,它包括了5個組件:Camtasia錄像器、菜單制作器、音頻編輯器、劇場及播放器。</p><p> 本播放器在運行之前需要安裝TechSmith Screen Capture Codec組件,此組件會和
23、系統(tǒng)一起打包發(fā)行,用戶也可以自己從網(wǎng)上下載更高版本的組件,只有安裝此組件才能實現(xiàn)播放器中的歌詞剪切功能。</p><p> 2.1.2 FFmpeg簡介</p><p> FFmpeg在Linux平臺下開發(fā),但它同樣也可以在其它操作系統(tǒng)環(huán)境中編譯運行,包括Windows、Mac OS X等。這個項目最早由Fabrice Bellard發(fā)起,現(xiàn)在由Michael Niedermayer維
24、護。許多FFmpeg的開發(fā)人員都來自MPlayer項目,而且當前FFmpeg也是放在MPlayer項目組的服務器上。項目的名稱來自MPEG視頻編碼標準,前面的"FF"代表"Fast Forward"。使用本播放器如果要對flv格式的文件進行播放則要安裝FFmpeg。</p><p> 2.1.3 Visual Studio .Net集成開發(fā)環(huán)境簡介</p>
25、<p> .NET平臺為創(chuàng)建新一代分布式Web應用提供了所有工具和技術(表示技術、構件技術和數(shù)據(jù)庫技術)。.NET平臺支持標準的Internet協(xié)議,包括HTTP(超文本傳輸協(xié)議)、XML(可擴展標記語言)和SOAP(簡單對象訪問協(xié)議)等,從而實現(xiàn)了異構系統(tǒng)間應用程序的集成和通信,即用戶和供應商可將在此平臺上開發(fā)的產(chǎn)品和服務無縫地嵌入自身的業(yè)務進程和日?;顒拥男畔⒓軜嬛?。</p><p> .NET
26、平臺建立在開放系統(tǒng)結構基礎之上,集Microsoft在軟件領域的主要技術成就于一身。.NET平臺包括一下4種核心技術:.NET Framework、.NET企業(yè)服務器、構件模塊服務和Visual Studio .NET。</p><p> .NET Framework是.NET平臺核心中的核心,它為.NET平臺下應用程序的運行提供基本框架,如果把Windows操作系統(tǒng)比作一幢摩天大廈的地基,那么.NET Fr
27、amework就是摩天大廈中由鋼筋和混凝土搭成的框架。</p><p> .NET企業(yè)服務器是Microsoft為企事業(yè)單位提供的技術服務中的一部分,它包括Microsoft BizTalk Server、Microsoft Commerce Server、Host Integration Server、Exchange Server、SQL Server等技術的開發(fā)工具包。</p><p
28、> 構建模塊服務主要是Microsoft提供的COM+組件服務和XML Web服務技術,利用構建模塊服務開發(fā)應用程序模塊,可以迅速地組裝一個功能完備的軟件。</p><p> Visual Studio .NET是.NET平臺的主要開發(fā)工具,由于.NET平臺是建立在開放系統(tǒng)結構基礎之上的,因此應用程序開發(fā)人員也可以使用其它開發(fā)工具。 </p><p> 2.1.4 C#語言簡介
29、</p><p> C#(#原為音樂標記,讀Sharp)是一種面向對象的編程語言,主要用于開發(fā)可以運行在.NET平臺上的應用程序。C#語言是微軟公司開發(fā)的基于.NET Framework的一種編程語言,它繼承了C/C++優(yōu)良傳統(tǒng),又借鑒了Java的很多特點。微軟對C#的定義是:“C#是從C和C++派生出來的一種簡單、現(xiàn)代、面向對象和類型安全的編程語言。C#主要是從C/C++編程語言家族移植過來的,C和C++的程
30、序員能夠很快熟悉它。C#試圖結合Visual Basic的快速開發(fā)能力和C++的強大靈活的能力?!盵2]</p><p> C#是2000年6月微軟公司發(fā)布的一種全新編程語言,是由Anders Hejlsberg和他的微軟開發(fā)團隊所設計,具體如下特點:</p><p> 通用,支持跨平臺。C#程序的客戶端可以運行在不同類型的客戶端上,如PDA、手機等PC裝置。</p>&
31、lt;p> 簡單,主要體現(xiàn)在垃圾收集、指代等特性上。垃圾收集機制將減輕開發(fā)人員對內存的管理負擔,而指代功能更是可以讓開發(fā)者不經(jīng)過內部類就調用函數(shù)。利用C#的這些功能,可以使開發(fā)者通過較少的代碼來實現(xiàn)更強大的應用程序,并且能夠更好地避免錯誤發(fā)生,從而縮短了應用系統(tǒng)的開發(fā)周期。</p><p> 面向對象設計,C#具有封裝、繼承和多態(tài)等面向對象程序語言的特征。</p><p> 與
32、Web應用緊密的結合,C#支持絕大多數(shù)的Web標準,如HTML、XML、SOAP等。這是C#最大的特點,使用它可以輕松開發(fā)各種企業(yè)級應用平臺。</p><p> 安全性機制,消除軟件開發(fā)中常見錯誤(如語法錯誤),.NET提供的垃圾回收器能夠幫助開發(fā)者有效的管理內存資源。</p><p> 兼容性,C#遵循.NET的公共語言規(guī)范(CLS),能夠保證與其它語言開發(fā)組件兼容。</p&g
33、t;<p> 靈活的版本處理技術,C#在語言本身內置了版本控制功能,開發(fā)人員可以更加容易地開發(fā)和維護。</p><p> C#提供了完善的錯誤和異常觸發(fā)機制。</p><p> 2.2 開發(fā)及運行壞境</p><p><b> 硬件平臺:</b></p><p> CPU奔騰雙核 (主頻2.0GH
34、z)</p><p><b> 內存1G</b></p><p><b> 32位PC機</b></p><p><b> 160G硬盤</b></p><p><b> 軟件平臺:</b></p><p> 操作系統(tǒng):W
35、indows XP \ Win7\Win8</p><p> 開發(fā)工具:Visual Studio 2008。</p><p> 本軟件占用系統(tǒng)空間小,能滿足用戶對常見音頻格式文件的播放要求,還具有歌曲、歌詞下載等功能,界面美觀交互性好,易于用戶理解操作,且不依賴于其它軟件,消耗資源少易維護,程序有較好的健壯性和正確性。運行該軟件所需的壞境配置不高,能滿足絕大多數(shù)用戶的需求。</
36、p><p><b> 3 系統(tǒng)的分析</b></p><p><b> 3.1 可行性分析</b></p><p> 可行性研究(feasibility study)的目的,是弄清楚待開發(fā)的項目是不是可能實現(xiàn)和值得進行,通常由系統(tǒng)分析員完成,并需寫出可行性論證報告。如結論認為可行,即可制定項目實施計劃,同時開始軟件開發(fā);
37、如結論認為不可行,則應提出終止該項目的建議??尚行哉撟C其實是在高層次上進行的一次大大簡化了的需求分析與設計。但它的目的不是去解決用戶提出的問題,僅是確定這項開發(fā)是否值得進行,分析它存在哪些風險。換句話來說,在投入大量精力前研究成功的可能性,減小可能出現(xiàn)的風險。即使研究的結論是不值得進行,所花的精力也并不浪費,因為它避免了一次更大的浪費。下面我們將根據(jù)本系統(tǒng)的特點具體描述以下可行性分析。[3]</p><p>
38、3.1.1 經(jīng)濟可行性</p><p> 開發(fā)一個基于計算機的系統(tǒng)主要是為了獲取較好的經(jīng)濟效益和社會效益。因此對待開發(fā)系統(tǒng)的經(jīng)濟可行性論證就成為可行性研究的重要內容。成本-效益分析可用于評估系統(tǒng)的經(jīng)濟合理性,給出系統(tǒng)開發(fā)的成本估算,并將估算的成本與獲得的利潤進行比對,從經(jīng)濟的角度論證待開發(fā)系統(tǒng)是否可行。一般來說,基于計算機系統(tǒng)的成本主要由4部分組成:</p><p> 購置并安裝軟硬
39、件及有關設備的費用。</p><p><b> 系統(tǒng)開發(fā)費用。</b></p><p> 系統(tǒng)安裝、運行和維護費用。</p><p><b> 人員培訓費用。</b></p><p> 結合畢業(yè)設計的整個開發(fā)過程可知開發(fā)音樂播放器所需的全部軟件平臺都是免費的,所以在經(jīng)濟上是完全可行的。<
40、;/p><p> 3.1.2 技術可行性</p><p> 技術可行性是可行性研究的關鍵內容。由于系統(tǒng)分析和定義過程與系統(tǒng)技術可行性評估過程同時進行,此時系統(tǒng)的功能、性能和目標的不確定性會給技術可行性論證帶來許多困難。因此,技術可行性研究往往是系統(tǒng)開發(fā)過程中難度最大的工作。該音樂播放器是用C#語音開發(fā)的,調試比較簡單,所需的計算機硬件配置要求不高,一般PC機完全能滿足開發(fā)要求。軟件方面:
41、基于微軟.net開發(fā)平臺使用C#面向對象的編程語音,它開發(fā)速度快,簡單易用,技術成熟,軟件也容易從網(wǎng)上獲得,完全能滿足開發(fā)需求。</p><p> 3.1.3 法理可行性</p><p> 法律可行性主要研究新系統(tǒng)的開發(fā)和使用是否會侵犯他人權益,是否觸犯了國家的法律法規(guī)。本次的畢業(yè)設計是由本人獨立完成,開發(fā)的系統(tǒng)不會侵犯任何人的權益,所用的軟件都是通過合法途徑獲取,因此完全符合法律法
42、規(guī)。</p><p> 綜上所述,本系統(tǒng)的開發(fā)從經(jīng)濟上、技術上、法律上都是完全可行的。</p><p> 3.2 常見的幾種音頻格式及其特點</p><p> MP3格式:MP3的全稱是Moving Picture Experts Group Audio Layer Ⅲ。MP3是Fraunhofer-IIS研究所的杰出成果。在MP3出現(xiàn)前,以有損方式進行音頻編
43、碼最好的效果能夠壓縮到4:1。而強大的MP3可以實現(xiàn)12:1的高壓縮比,正是因為這種性能的巨大提升,并且在實現(xiàn)高壓縮比的同時還能夠保持較好的音質,所以使得MP3迅速地流行起來。MP3是世界上第一個實用化的有損壓縮編碼方案,幾乎所有的播放軟件都支持它,也曾今產(chǎn)生了許多第三方的編碼工具。MP3編碼質量分為:固定碼率(CBR),平均碼率(ABR)和動態(tài)碼率(VBR)。[4]</p><p> 特點:音質好,壓縮比比較
44、高,被大量軟件和硬件支持,應用廣泛。</p><p> WMA格式:WMA就是Windows Media Audio編碼后的文件,它是微軟公司推出的與MP3格式齊名的一種新的音樂格式。WMA在壓縮比和音質方面都超過了MP3,更是遠勝于RA(Real Audio),即使在較低的采樣頻率下也能產(chǎn)生較好的音質。WMA針對的不是單機市場,而是網(wǎng)絡!競爭對手就是網(wǎng)絡媒體市場中著名的Real Networks。WMA格式有
45、非常高的壓縮率,一般為1:18,因此它的文件所占空間比相應的MP3文件少一半。這是通過提高音質、減少數(shù)據(jù)流量的方法來實現(xiàn)更高的壓縮率的。此外它還有很強的防盜版功能。</p><p> 特點:低碼率下的音質表現(xiàn)難有對手。[4]</p><p> WAV格式:WAV是微軟Windows系統(tǒng)本身自帶的音頻格式,因為Windows系統(tǒng)的普及性,此格式已經(jīng)成了當前最主流的音頻格式之一。WAV文件
46、里面存放的每一塊數(shù)據(jù)都有自己獨立的標識,通過這些標識可以告訴用戶究竟是什么數(shù)據(jù)。WAV格式的設計非常靈活,該格式本身與任何媒體數(shù)據(jù)都不沖突,只要有軟件支持,我們甚至可以在WAV格式里面存放圖像。在Windows平臺上,通過ACM結構及相應的驅動程序,例如CODEC編碼/解碼器,可以在WAV文件中存放超過20種的壓縮格式,比如ADPCM、GSM、CCITT G.711、G.723和MP3等。[4]</p><p>
47、 特點:音質非常好,被大量軟件所支持。</p><p> RA格式:RA格式是Real Networks公司所開發(fā)的一種新型流式音頻Real Audio文件格式。這是網(wǎng)上接觸得非常多的一種格式,大部分音樂網(wǎng)站的在線試聽都采用了Real Audio,這種格式完全針對的就是網(wǎng)絡上的媒體市場,支持非常豐富的功能。最大的優(yōu)點就是這種格式可以根據(jù)聽眾的帶寬來控制自己的碼率,在保證流暢的前提下盡可能提高音質。[4]&l
48、t;/p><p> 特點:碼率可控,支持多種音頻編碼,可邊讀邊放。</p><p><b> 3.3 需求分析</b></p><p> 軟件需求是指用戶對目標軟件系統(tǒng)在功能、性能、行為、設計約束等方面的期望。需求分析就是通過對應用問題及其壞境的分析與理解采用一系列的分析方法和技術將用戶的需求逐步精確化、完全化、一致化,最終形成需求規(guī)模說明文
49、檔的過程。本節(jié)將從不同的角度描述系統(tǒng)的需求。</p><p> 3.3.1 播放器的基本控制需求</p><p> 在著手開發(fā)系統(tǒng)之前首先要明確該系統(tǒng)應該實現(xiàn)的一些最基本的功能,然后逐步細化,為每個功能創(chuàng)建一個模塊,再對各個模塊進行開發(fā)。通過分析我們得出一款音樂播放器的基本控制如圖3-1所示:</p><p> 圖 3-1 播放器基本控制圖</p>
50、<p> 3.3.2 功能需求</p><p> 功能需求規(guī)定開發(fā)人員必須在產(chǎn)品中實現(xiàn)的軟件功能,用戶利用這些功能來完成任務,滿足業(yè)務需求。功能需求有時也被稱作行為需求 (behavioral requirement),因為習慣上總是用“應該”對其進行描述。功能需求描述是開發(fā)人員需要實現(xiàn)什么。功能需求定義一個軟件系統(tǒng)或組件的功能,也是一個系統(tǒng)需提供的功能及服務。功能可以用一組輸入、行為及輸出的組
51、合來表示。功能需求可以是計算、技術細節(jié)、數(shù)據(jù)處理或其他說明系統(tǒng)希望達成功能的內容。功能需求會以非功能性需求(或是質量需求)為其基礎。</p><p> 結合音樂播放器所要實現(xiàn)的內容,我們列出用戶操作的模塊,其中每個模塊對應一個功能。</p><p> 用戶啟動程序進入主界面,用戶可以通過添加模塊添加本地歌曲,可以一首一首添也可以添加整個歌曲文件夾。通過播放列表用戶可以實現(xiàn)對歌曲的查找、
52、播放、暫停、音量調節(jié)、靜音。通過歌詞模塊可以實行歌曲歌詞的顯示、比對、歌詞字體選擇。</p><p> 此外用戶還可以聯(lián)網(wǎng)下載歌詞、歌曲。其功能模塊時序圖如下3-2所示:</p><p> 圖3-2 音樂播放器功能時序圖</p><p><b> 4系統(tǒng)設計</b></p><p> 4.1 系統(tǒng)概要設計<
53、;/p><p> 在需求明確、準備開始編碼之前,要做概要設計。概要設計的主要任務是把需求分析得到的DFD轉換為軟件結構和數(shù)據(jù)結構。設計軟件結構的具體任務是:將一個復雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結構及調用關系、確定模塊間的接口及人機界面等。數(shù)據(jù)結構設計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結構特性、以及數(shù)據(jù)庫的設計。概要設計有多種方法。在早期有模塊化方法、功能分解方法;在60年代后期提出了面向數(shù)據(jù)流和面向數(shù)據(jù)結構
54、的設計方法;近年來又提出面向對象的設計方法等。本系統(tǒng)采用模塊化軟件設計,自頂向下逐層把軟件系統(tǒng)劃分成若干模塊。每個模塊完成一個特定的功能,最后將所有模塊按照某種方法組合成一個整體,達到整個播放器所要求的功能。</p><p> 4.2 系統(tǒng)功能設計及描述</p><p> 本音樂播放器不僅要實現(xiàn)對一些常見的音頻格式文件的播放,而且還要有友好的用戶界面。其最終設計目標是:實現(xiàn)對多種音頻格
55、式文件的播放、實現(xiàn)對歌詞的滾動播放及當前播放曲目長度顯示、顯示歌曲文件信息、實現(xiàn)靜音和音量控制;播放器軟件占用系統(tǒng)資源少、運行平臺要求不高、界面美觀舒適、操作簡單、易維護、高穩(wěn)定性、,能滿足用戶的常見需求。</p><p> 主要劃分為以下七個功能模塊,每個功能模塊的作用描述如下:</p><p> 播放控制:控制歌曲的播放狀態(tài),如:播放、暫停、上一曲、下一曲。播放過的歌曲按播放順序排
56、列在播放列表中,每次退出程序、重啟播放器后播放列表中的播放記錄會自動保存不會清空。</p><p> 文件控制:主要用來打開本地播放文件。通過研究音頻編碼解碼的相關技術,了解音頻編碼解碼的原理和過程,本音樂播放器支持常見音頻格式文件播放如:MP3、WMA、WAV等??梢詥蝹€曲目添加,也可以將整個文件夾中的曲目全部添加,實現(xiàn)歌曲文件添加的多樣化;此外還可以對播放列表進行清空,對曲目的播放順序進行控制;當播放列表中
57、曲目過多時,可以從播放列表中快速搜索到需要播放的歌曲。還有對播放列表進行控制如:打開文件所在目錄、移除列表、刪除文件、顯示歌曲文件的相關信息,如:歌手、專輯等。</p><p> 歌詞控制:播放音樂時控制是否顯示歌曲歌詞,若歌詞存在則同步滾動顯示歌詞,若歌詞不存在則可聯(lián)網(wǎng)下載歌詞。此外還可以對歌詞字體進行設置。</p><p> 進度控制:顯示當前歌曲的播放總時長和已播放時長,可以通過
58、鼠標調整歌曲的播放進度,實現(xiàn)歌曲的跳躍式播放。其實現(xiàn)方式是通過進度條和時間的同步顯示。</p><p> 聲音控制:調整歌曲音量的大小,顯示是否靜音。</p><p> 下載控制:可以聯(lián)網(wǎng)下載自己喜歡的歌曲、歌詞。若不知道歌曲名稱則可以按歌手名查找歌曲下載,若知道歌曲名則可直接輸入名稱進行下載,可以在下載進度列表中查看下載狀態(tài)。</p><p> 音樂剪切:對
59、音樂文件進行剪切。添加當前路徑,對想要的歌曲進行播放,在歌曲播放過程中你可以在任何地方設置一個起點,然后,再設置一個終點?!霸嚶牳枨本褪前涯氵x出來的這一段播放一遍,看是不是你要的那一段,有時候可以早開始了幾秒或者早結束了幾秒,這個時候可以直接在起點和終點的地方進行調整。然后在這個窗口的上面有個“保存歌曲”,就可以把你選出來的這段音樂保存起來了。我們可以通過歌曲剪切功能截取自己喜歡的音樂片段,來做為自己的手機鈴聲。</p>
60、<p> 其具體功能模塊如圖4-1所示:</p><p> 圖4-1 音樂播放器功能模塊圖</p><p><b> 5系統(tǒng)功能實現(xiàn)</b></p><p> 根據(jù)上一章對系統(tǒng)各個模塊的分析,本節(jié)主要講述如何具體實現(xiàn)這些模塊功能。</p><p> 幾乎所有的Windows程序都離不開窗體,Win
61、dows窗體應用程序是Windows下進行軟件開發(fā)的基礎。在C#中,通過Visual Studio 2008開發(fā)平臺模版,可以自動生成多種基于Windows的應用程序框架,主要包括基于.NET Framework的Windows窗體應用程序、Windows服務應用程序。最常用的是Windows窗體應用程序。在Windows窗體應用程序中,有窗體(Form)和控件(Control)兩個基本概念。窗體是控件的容器,控件是應用程序顯示數(shù)據(jù)或接
62、受數(shù)據(jù)輸入的相對獨立的用戶界面元素。.NET類庫提供了豐富的窗體相關類,包括窗體、按鈕、狀態(tài)欄、工具欄、菜單、文本框、列表等多種不同的界面元素;此外還提供各種控件、組件、容器。通過這些界面元素的不同組合,可以設計出友好的用戶界面。對于軟件開發(fā)中要用到的圖片可以自己繪制,相關控件可以調用類庫,從而設計出外形美觀的界面。但這也做相當費時,由于畢業(yè)設計的時間有限,圖片都從網(wǎng)上下載,并做稍微處理,所以美觀方面有一定欠缺,待以后有時間慢慢改進。此
63、外界面是由窗體、控件拖放組成,大部分代碼由視圖設計器自動生成,無需太多改</p><p> 5.1 歌曲添加模塊</p><p> 很多的應用程序都有打開文件功能,本程序使用OpenFileDialog組件,用來打開本地磁盤上的一個或多個文件,并添加到文件播放列表中。</p><p> 5.1.1 添加歌曲文件</p><p> 為了
64、趕上社會的潮流,我們經(jīng)常會從網(wǎng)上下載最熱門的音樂,本模塊功能就是實現(xiàn)添加本地歌曲或已下載到電腦的最新歌曲到播放列表,同時更新播放列表,使我們能及時欣賞到自己喜歡的音樂。其具體代碼如下:</p><p> private void AddSong_Click(object sender, EventArgs e)</p><p><b> {</b></p&g
65、t;<p> ofd.Filter = "音樂文件(*.wmv, *.mp3,*.wav)| *.wmv; *.mp3;*.wav||All files (*.*)|*.*";</p><p> ofd.InitialDirectory = Application.StartupPath;</p><p> ofd.FileName = "
66、";</p><p> ofd.RestoreDirectory = false;</p><p> ofd.Title = "添加音樂文件";</p><p> if (ofd.ShowDialog() == DialogResult.OK)</p><p><b> {</b>&
67、lt;/p><p> string strLongPath = ofd.FileName;</p><p> WriteFileByLongPath(strLongPath);</p><p><b> }</b></p><p><b> }</b></p><p>
68、 private void WriteFileByLongPath(string strLongPath)</p><p><b> {</b></p><p> int b = strLongPath.LastIndexOf("\\");</p><p> string strShortPathWithExtensi
69、on = strLongPath.Substring(b + 1);</p><p> StreamWriter sw = new StreamWriter("list.ini", true);</p><p> string extension = strShortPathWithExtension.Substring(strShortPathWithExtens
70、ion.Length - 3);</p><p> if (extension.ToLower() == " wmv " || extension.ToLower() == " mp3" || extension.ToLower() == "wav")</p><p><b> {</b></p&g
71、t;<p> string strShortPathWithoutExtension = strLongPath.Substring(b + 1, strShortPathWithExtension.Length - 4);</p><p> Mp3 mp3 = new Mp3(strLongPath);</p><p> if (!(String.IsNullOrEm
72、pty(mp3.Artist) || String.IsNullOrEmpty(mp3.Title)))</p><p> {//獲取成功的結果(歌手名 - 歌曲名)</p><p> strShortPathWithoutExtension = mp3.Artist.Trim() + " - " + mp3.Title.Trim();</p><
73、;p><b> }</b></p><p><b> //否則原文件名</b></p><p> if (!this.myListBox.Items.Contains(strShortPathWithoutExtension))</p><p><b> {//不包含</b></p
74、><p> songList.Add(strShortPathWithoutExtension);</p><p> Image image = getImageByArtistOrSongName(mp3.Artist, strShortPathWithoutExtension);</p><p> imageList.Add(image);</p>
75、<p> this.myListBox.Items.Add(strShortPathWithoutExtension);</p><p> this.myListBox.songList = songList;</p><p> this.myListBox.imageList = imageList;</p><p> sw.WriteLin
76、e(strShortPathWithoutExtension);</p><p> sw.WriteLine(strLongPath); //寫入全路徑</p><p><b> }</b></p><p><b> }</b></p><p> sw.Flush();</p
77、><p> sw.Close();</p><p><b> }</b></p><p> 5.1.2 添加歌曲文件夾 </p><p> 當我們要欣賞歌曲專輯時,可能要添加的文件比較多,顯然單曲添加比較麻煩,這時我們就可以使用OpenFileDialog組件的Multiselect屬性和Filenames屬性實現(xiàn)整
78、個文件夾的添加,同時更新播放列表。代碼如下:</p><p> private void tsmiAddSongFolder_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> if (fbd.ShowDialog() == DialogResult.OK)</
79、p><p><b> {</b></p><p> string str = fbd.SelectedPath;</p><p> DirectoryInfo r = new DirectoryInfo(str);</p><p> GetAllFiles(r);</p><p><b&
80、gt; }</b></p><p><b> }</b></p><p> public void GetAllFiles(DirectoryInfo dir)</p><p><b> {</b></p><p> FileSystemInfo[] fileinto = di
81、r.GetFileSystemInfos();</p><p> foreach (FileSystemInfo i in fileinto)</p><p><b> {</b></p><p> if (i is DirectoryInfo)</p><p><b> {</b><
82、/p><p> GetAllFiles((DirectoryInfo)i);</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> string strLongPa
83、th = i.FullName;</p><p> WriteFileByLongPath(strLongPath);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&g
84、t; private void tsmiSearch_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> if (this.mySearchPanel.boolSearchShow)</p><p> {//已經(jīng)打開,則關閉</p><p>
85、 this.mySearchPanel.close();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> this.mySearchPanel.boolSearchShow =
86、true;</p><p> this.mySearchPanel.lb = this.myListBox;</p><p> this.mySearchPanel.copyValueList();</p><p><b> }</b></p><p> initialSearchPanel();</p&g
87、t;<p><b> }</b></p><p><b> 圖5-1 打開文件</b></p><p> 5.2 歌曲列表模塊</p><p> 播放列表主要用來顯示要播放歌曲的信息,如歌手、照片、曲名。在這里我們使用ListBox控件來實現(xiàn)相關功能。詳細代碼如下:</p><p&
88、gt; this.myListBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)</p><p> | System.Windows.Forms.AnchorStyles.Left)));<
89、/p><p> this.myListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;</p><p> this.myListBox.FormattingEnabled = true;</p><p> this.myListBox.Location = new System.Draw
90、ing.Point(2, 115);</p><p> this.myListBox.Name = "myListBox";</p><p> this.myListBox.Size = new System.Drawing.Size(302, 354);</p><p> this.myListBox.TabIndex = 0;</
91、p><p> this.myListBox.MouseDown += new System.Windows.Forms.MouseEventHandler(this.myListBox_MouseDown);</p><p> private void myListBox_MouseDown(object sender, MouseEventArgs e)</p><p
92、><b> {</b></p><p> if (this.myListBox.thisIndex != -1)</p><p><b> {</b></p><p> if (e.Button == System.Windows.Forms.MouseButtons.Right)</p>&l
93、t;p><b> {</b></p><p> this.myListBox.ContextMenuStrip = this.cmsListBox;</p><p><b> }</b></p><p><b> }</b></p><p><b>
94、}</b></p><p><b> 圖5-2播放列表</b></p><p> 5.3 播放控制模塊</p><p> 播放是音樂播放器最重要的功能。本程序使用Windows Media Player命名空間中定義的屬性和方法來實現(xiàn)歌曲的播放、暫停、上下去切換等。其核心代碼如下:</p><p>
95、private void initialBtn()</p><p><b> {</b></p><p> if (playStatue == MediaPlayer.PlayStatue.播放)</p><p> { //正在播放,暫停圖片</p><p> btnPlay.Image = Image.From
96、File("pic\\pause.bmp");</p><p><b> }</b></p><p> else if (playStatue == MediaPlayer.PlayStatue.暫停 || playStatue == MediaPlayer.PlayStatue.停止)</p><p><b>
97、; {//開始播放圖片</b></p><p> btnPlay.Image = Image.FromFile("pic\\play.bmp");</p><p><b> }</b></p><p> if (this.boolVolumn)</p><p><b>
98、 {</b></p><p> this.btnVolumn.Image = Image.FromFile("pic\\02.gif");</p><p><b> }</b></p><p><b> else</b></p><p> this.btnVo
99、lumn.Image = Image.FromFile("pic\\01.gif");</p><p><b> }</b></p><p> private void nextSongPlay()</p><p><b> {</b></p><p><b>
100、 //下一曲</b></p><p> if (playStyle == MediaPlayer.PlayStyle.隨機播放)</p><p> {//選擇隨機播放時就產(chǎn)生一個隨機數(shù)組,播放記錄,根據(jù)數(shù)組,上一曲下一曲都有用</p><p> if (randomIndex + 1 >= randomList.Count)</p>
101、;<p><b> {</b></p><p> randomSongPlay();</p><p><b> }</b></p><p><b> else</b></p><p> this.myListBox.doubleClickIndex =
102、(int)randomList[++randomIndex];</p><p><b> }</b></p><p> else if (playStyle == MediaPlayer.PlayStyle.順序播放)</p><p><b> {</b></p><p> this.myL
103、istBox.doubleClickIndex++;</p><p> if (this.myListBox.doubleClickIndex >= this.myListBox.Items.Count)</p><p><b> {</b></p><p> playStatue = MediaPlayer.PlayStatue.
104、停止;</p><p> this.myListBox.doubleClickIndex = this.myListBox.Items.Count - 1;</p><p><b> stop();</b></p><p> initialBtn();</p><p><b> return;</
105、b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> {//下一曲,如果到底,將播放第一首歌曲,全部循環(huán)</p><p> this.myListB
106、ox.doubleClickIndex++;</p><p> if (this.myListBox.doubleClickIndex >= this.myListBox.Items.Count)</p><p><b> {//轉第一首</b></p><p> this.myListBox.doubleClickIndex =
107、0;</p><p><b> }</b></p><p><b> }</b></p><p> btnChangeSong();</p><p> initialBtn();</p><p><b> }</b></p>&l
108、t;p> private void lastSongPlay()</p><p><b> {</b></p><p> if (playStyle == MediaPlayer.PlayStyle.隨機播放 && randomIndex >= 1)</p><p><b> {</b>
109、</p><p> this.myListBox.doubleClickIndex = (int)randomList[--randomIndex];</p><p><b> }</b></p><p> else if (playStyle == MediaPlayer.PlayStyle.順序播放)</p><p
110、><b> {</b></p><p> this.myListBox.doubleClickIndex--;</p><p> if (this.myListBox.doubleClickIndex <= -1)</p><p><b> {</b></p><p> thi
111、s.myListBox.doubleClickIndex = 0;</p><p> playStatue = MediaPlayer.PlayStatue.停止;</p><p><b> stop();</b></p><p> initialBtn();</p><p><b> return;&
112、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> this.myListBo
113、x.doubleClickIndex--;</p><p> if (this.myListBox.doubleClickIndex <= -1)</p><p><b> {//轉最后一首</b></p><p> this.myListBox.doubleClickIndex = this.myListBox.Items.Cou
114、nt - 1;</p><p><b> }</b></p><p><b> }</b></p><p> btnChangeSong();</p><p><b> }</b></p><p> 5.4 音量控制模塊</p>
115、<p> 通過調節(jié)音量大小來達到歌曲播放的最佳狀態(tài)??梢哉{用API函數(shù) SENDMESSAGE APPCOMMAND_VOLUME_MUTE和TrackBar 類來實現(xiàn)音量控制。代碼如下:</p><p> private void btnVolumn_Click(object sender, EventArgs e)</p><p><b> {</b&g
116、t;</p><p> IniUtility.FilePath = Application.StartupPath + "\\INI.ini";</p><p> if (this.boolVolumn)</p><p><b> {</b></p><p> player.setAudioO
117、nOff("off");</p><p> this.boolVolumn = false;</p><p> IniUtility.WriteIniKey("Player", "boolVolumn", "0");</p><p><b> }</b><
118、;/p><p><b> else</b></p><p><b> {</b></p><p> player.setAudioOnOff("on");</p><p> this.boolVolumn = true;</p><p> IniUt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--android在線音樂播放器設計與實現(xiàn)
- 基于android平臺的音樂播放器設計與實現(xiàn)畢業(yè)論文
- 基于android平臺的音樂播放器設計與實現(xiàn)畢業(yè)論文
- 畢業(yè)論文——基于android音樂播放器的設計
- 音樂播放器設計與實現(xiàn)
- 基于安卓的音樂播放器系統(tǒng)的設計與實現(xiàn)——畢業(yè)論文
- 基于android的音樂播放器畢業(yè)論文
- 基于android的音樂播放器的設計-畢業(yè)論文
- 音樂播放器畢業(yè)設計論文
- 畢業(yè)設計論文 音樂播放器設計
- 畢業(yè)論文范文——android音樂播放器
- 軟件工程畢業(yè)論文-基于android的音樂播放器的設計與實現(xiàn)
- 基于Android音樂播放器的設計與開發(fā)畢業(yè)論文.doc
- 基于niosii的sd卡音樂播放器的實現(xiàn)【畢業(yè)論文】
- 多媒體播放器的設計與實現(xiàn)畢業(yè)論文
- 基于android平臺的音樂播放器-畢業(yè)論文
- 畢業(yè)論文——基于android平臺的音樂播放器
- 畢業(yè)論文設計 基于android手機平臺的音樂播放器
- 電子與信息工程畢業(yè)論文u盤音樂播放器設計
- 軟件工程畢業(yè)論文-基于android的音樂播放器的設計與實現(xiàn)2
評論
0/150
提交評論