




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄1、MP3播放器原理,22、相關(guān)API函數(shù)簡介,23、設(shè)計要求,54、設(shè)計步驟及程序代碼,65、運行結(jié)果分析及截圖,96、心得體會,,,107、參考文獻(xiàn),111、MP3播放器原理MP3播放器是利用數(shù)字信號處理器DSP(DigitalSignProcesser)來完成處理傳輸和解碼MP3文件的任務(wù)的。DSP掌管隨身聽的數(shù)據(jù)傳輸,設(shè)備接口控制,文件解碼回放等活動。DSP能夠在非常短的時間里完成多種處理任務(wù), 而且此過程所消耗的能量極少(這也是它適合于便攜式播放器的一個顯著特點)。首先將MP3歌曲文件從內(nèi)存中取出并讀取存儲器上的信號-到解碼芯片對信號進(jìn)行解碼-通過數(shù)模轉(zhuǎn)換器將解出來的數(shù)字信號轉(zhuǎn)換
2、成模擬信號-再把轉(zhuǎn)換后的模擬音頻放大-低通濾波后到耳機輸出口,輸出后就是我們所聽到的音樂了。2、相關(guān)API函數(shù)簡介:mciSendString是用來播放多媒體文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面介紹它的使用方法:該函數(shù)有四個參數(shù):第一個參數(shù):要發(fā)送的命令字符串。字符串結(jié)構(gòu)是:命令設(shè)備別名命令參數(shù).第二個參數(shù):返回信息的緩沖區(qū),為一指定了大小的字符串變量.第三個參數(shù):緩沖區(qū)的大小,就是字符變量的長度.第四個參數(shù):回調(diào)方式,一般設(shè)為零返回值:函數(shù)執(zhí)行成功返回零,否則返回錯誤代碼一、常用命令1.打開(Open),格式:Open設(shè)備名type設(shè)備型式alias別名Di
3、mmNameasstringmName=f:mpegmpeg1.avimciSendStringopenmNametypeMPEGVideoAliasmovieparent%uStyle%unotify,0&,0,0其中:open操作命令mName全路徑文件名typeMPEGVideo是指打開MPEG,AVI等類型,如果不加這一句,就是打開WAV,MP3等Aliasmovie定義了該操作的別名為movie,后續(xù)操作只要指明別名即可parent%u源Style%u樣式notify通知2.播放(Play),格式:Play設(shè)備名from起點to終點mciSendStringplaymovie
4、,0&,0,0mciSendStringplaymoviefullscreen,0&,0,0全屏播放3.暫停(Pause:mciSendStringpausemovie,0&,0,04.繼續(xù)(ResumR:mciSendStringresumemovie,0&,0,05.停止(Stop):mciSendStringstopmovie,0&,0,06.關(guān)閉(Colse):mciSendStringclosemovie,0&,0,07.前進(jìn)到下一個位置:mciSendStringstepmovie,0&,0,08.后退到上一個位置:mciSe
5、ndStringstepmoviereverse,0&,0,09.前進(jìn)或后退N他位置(其中N0即表示后退)mciSendStringstepmovieby&str(N),0&,0,010.獲取當(dāng)前播放位置:DimSTAsString*64mciSendStringstatusmovieposition,st,len(st),011 .獲取媒體的總長度:mciSendStringstatusmovielength,st,len(st),0l=val(st)L就是所播放文件的長度12.獲取播放信息:DimSTAsString*64mciSendStringstatusmov
6、iemode,ST,Len(ST),0IfLeft(ST,7)=stoppedThen(處理代碼)播放完畢13.循環(huán)播放:mciSendStringplaymovierepeat,0&,0,0二、控制聲音大?。篋imVAsLongmciSendStringstatusmovievolume,V0,0V是獲取的音量大小值。V=50mciSendStringsetaudiomovievolumeto&V&0,0,0V是設(shè)置的音量值三、設(shè)置播放位置.(需事先設(shè)定時間格式),格式:Seek設(shè)備名to位置|tostart|toendDimP1asLong,P2asLongP1=1
7、00:P2=3000mciSendStringseekmovieto,P1,0,0PH:當(dāng)前起始位置,單位:毫秒mciSendStringseekmovietostart,0&,0,0定位到開頭位置mciSendStringplaymovie,0&,0,0定位后再播放或者:mciSendStringplaymovieFROMP1toP2,0&,0,0P1是起始位置,P2是停止位置。 單位:毫秒mciSendStringseekmovietoend,0&,0,0定位到最后位置四、在指定控件上播放視頻:mciSendStringopenAVI文件名parenthWn
8、dstylechild,0&,0,0其中,hWnd是控件的句柄執(zhí)行上述命令之后,影片會被放置在控件的左上角,且影片的大小不受控件大小的影響,如果想要改變影片播放的位置及大小,可以在新行play指令前先執(zhí)行put指令,格式如下:mcisendStringputN文件名windowatXYWidthHeight,0&,0,0其中:X、Y為影片左上角坐標(biāo),Width、Height為影片的寬高度五、如果播放視頻還可控制亮度DimBAsLongmciSendStringstatusmoviebrightness,B,0,0配獲取的亮度值。B=50mciSendStringsetvideo
9、moviebrightnessto&B,&0,0,0B是設(shè)置的亮度值六、錄音設(shè)置:錄音前,用以下語句初始化1.設(shè)為8位:mciSendStringsetwavebitpersample8,0,02.設(shè)為11025HzmciSendStringsetwavesamplespersec11025,0,03.設(shè)為立體聲:mciSendStringsetwavechannels2,0,04.實現(xiàn)PCM格式(不一定正確):MCISENDSTRINGsetwaveformattagpcm,0,05.開始錄音:mciSendStringclosemovie,0&,0,0mciSend
10、StringopennewtypeVAVEAudioaliasmovie,0&,0,0mciSendStringrecordmovie,0&,0,06.保存錄音到c:123.wavmciSendStringstopmovie,0&,0,0mciSendStringsavemovieC:123.wav”,0&,0,0mciSendStringclosemovie,0&,0,0七、開關(guān)光驅(qū):mciSendStringsetcdaudiodooropen,0,0打開mciSendStringsetcdaudiodoorclose,0,0關(guān)閉八、其它1.設(shè)置設(shè)備
11、的各種狀態(tài)(Set)Setalias_nameaudioalloffaudioallontimeformatms:Set品令用來設(shè)置設(shè)備的各種狀態(tài).如:靜音,有聲音,時間格式為毫秒等.2.取得設(shè)備的狀態(tài)(StatusStatusalias_namelengthmodeposition:Statu品令用來取得設(shè)備的狀態(tài).如:該媒體文件的長度,該媒體文件所處狀態(tài)該媒體文件的當(dāng)前位置等.的長度,該媒體文件所處狀態(tài)該媒體文件的當(dāng)前位置等3 .、設(shè)計要求:以VB或VC+為編程工具,制作一個簡單的MP3播放器。實現(xiàn)MP3播放器的基本功能:Play(播放)、Pause(暫停)、Stopplay(停止播放)、
12、Back(向后跳躍卜Prew(向前跳躍)。3、設(shè)計步驟及程序代碼:啟動VB程序,在窗體上放置6個命令按鈕,三個標(biāo)簽,一個公用對話框、一個進(jìn)度條、一個狀態(tài)欄和一個計時器。按鈕OpenMP3File是用來打開對話框選擇MP3文件, 其他5個按鈕分別為Play(播放)、Pause暫停)、Stopplay(停止播放卜Back(向后跳躍)、Prew(向前跳躍)。Labell用來表示歌曲當(dāng)前時間;label2放在時度條的最左邊,Caption屬性為00:00;lable3放在時度條的右邊,用來表示歌曲總長。下面就可以編寫代碼了。首先在窗體的通用聲明部分聲明函數(shù)PrivateDeclareFunctionm
13、ciSendStringLibwinmm.dllAliasmciSendStringA(ByvallpstrCommandAsString,ByVallpstrRetumStringAsString,ByValuReturnLengthAslong,ByValhwndCallbackaslong)AslongDimmfnAsString下面就是各個對象的代碼了:PrivateSubForm_load()mfn=play.Enabled=Falsepause.Enabled=FalseStopplay.Enabled=Falseback.Enabled=Falseprew.Enabled=Fal
14、seTimer1.Enabled=FalseTimer1.Interval=500EndSubPrivateSubopen_Click()OnErrorGotoerrWithCommonDialog1.CancelError=True舊如二音樂文件|*.mp3;*.wav;*.mid.Flags=cdlOFNNoChangeDirAndcdlOFNPathMustExist.Action=1stopplay_Click停止按鈕同時可以設(shè)備初始化mfn=.FileName這個程序中文件名一定不能帶空格Form1.Caption=.FileNameplay.Enabled=TrueEndWithp
15、lay_ClickExitSuberr:EndSubPrivateSubplay_Click()OnErrorResumeNextDimtAsLongt=mciSendString(open+mfn,0&,0,0)Open后邊的空格一定不能丟DimretAsString*128t=mciSendString(status+mfn+length,ret,128,0)顯示歌曲總長ret=Left(ret,8)IfretThenProgressBar1.Min=0ProgressBar1.Max=Val(ret)Label3.Caption=gettime(Val(ret)EndIfplay
16、.Enabled=Falsepause.Enabled=TruestopplayEnabled=Trueback.Enabled=Trueprew.Enabled=Truet=mciSendString(status+mfn+mode,ret,128,0)得到設(shè)備的當(dāng)前狀態(tài),是播放還是暫停等等ret=Left(ret,8)StatusBar1.Panels(1).text=ret在狀態(tài)欄顯示播放狀態(tài)t=mciSendString(play+mfn+form+Str(ProgressBar1.Wlue),0&,0,0)開始播放Timer1.Enabled=TrueEndSubPrivat
17、eSubpause_Click()t%=mciSendString(pause+mfn,0&,0,0)發(fā)出暫停的命令play.Enable=Truepause.Enabled=FalsestopplayEnabled=Trueback.Enabled=Falseprew.Enabled=FalseEndSubPrivateSubstopplay_Click()t%=mciSendString(stop+mfn,0&,0,0)t%=mciSendString(close+mfn,0&,0,0)停止播放play.Enabled=Truepause.Enabled=False
18、stopplayEnabled=Falseback.Enabled=Falseprew.Enabled=FalseEndSubPrivateSubback_Click()t%=mciSendString(play+mfn+from+Str(ProgressBar1.Wlue-(ProgressBar1.Max10),0&,0,0)向后跳一小段再播放EndSubPrivateSubprew_Click()t%=mciSendString(play+mfn+from+Stri(ProgressBar1.Wlue+(ProgressBar1.Max10),0&,0,0)向前跳一小段再
19、播放EndSubPrivateSubTimer1_Timer()DimtAsLongDimretAsString*128t=mciSendString(status+mfn+position,ret,0,0)得到當(dāng)前播放位置ret=left(ret,8)ProgressBar1.Wlue=Val(ret)Label1.Caption=gettime(Val(ret)顯示歌曲當(dāng)前時間IfProgressBar1.Value=ProgressBar1.MaxThenstopplay_ClickEndIft=mciSendString(status+mfn+mode,ret,128,0)ret=Le
20、ft(ret,8)StatusBar1.Panels(1).Text=retEndSubPrivateSubForm_Unload(CacelAsInteger)t%=mciSendString(stop+mfn,0&,0,0)t%=mciSendString(close+mfn,0&,0,0)EndSubPrivateFunctionGettime(positionAsLong)AsString這個函數(shù)的功能是把以長整型表示的時間轉(zhuǎn)換為電子鐘式的*:*Dimmin,secmin=position/1000min=min/60sec=min-Int(min)min=Int(mi
21、n)sec=60*sec/100sec=Int(sec*100)gettime=Str(min)+:+Str(sec)EndFunctionpaused6、心得體會這次課程設(shè)計我做的題目是制作一個簡單的MP3播放器,要求具有播放、暫停、停止播放、快進(jìn)、倒退等基本功能。沈維聰老師講解的時候說這個題目很簡單??墒俏易龅臅r候發(fā)現(xiàn)其實并不簡單。我在網(wǎng)上找了很多相關(guān)的資料,還看了一些制作MP3播放器的教學(xué)視頻,可是還是看不懂怎么做。最后我終于找到一篇制作MP3播放器的帖子,我按照上面的說法用VB來做,花了兩天的時間,結(jié)果程序竟然編譯出錯,不能運行。我完全是按照帖子上做的,也不知道是哪里出錯了。況且我對VB其實也不熟。我請教了很多同學(xué),結(jié)果大家都說不會VB沒辦法,雖然這次我的制作不太成功,但是我努力過,探索過,付出過。這次課程設(shè)計還是有很大收獲的。起碼我對VB的基本操作已經(jīng)很熟悉了,知道怎么添加左邊工具欄沒有的控件,還有如何加載API函數(shù)以及如何聲明API函數(shù)。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動是人類生存生活永恒不變的話題。通過實習(xí), 我才真正領(lǐng)略到“艱苦奮斗”這一詞的真正含義, 我才意識到老一輩電子設(shè)計為我們的社會付出。我想說,設(shè)計確實有些辛苦,但苦中也有樂,在如今單一的理論學(xué)習(xí)中,很少有機會能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨物運輸代理服務(wù)合同內(nèi)容規(guī)范及條款
- 2025年全國旅游院校服務(wù)技能(導(dǎo)游服務(wù)) 大賽理論備考試題庫(含答案)
- 老年認(rèn)知衰退護(hù)理心得
- AI驅(qū)動新質(zhì)力升級
- 三年級數(shù)學(xué)計算題專項練習(xí)匯編及答案集錦
- 《課件制作:探索教師專業(yè)發(fā)展與自我提升之路》
- 因地制宜推進(jìn)農(nóng)業(yè)創(chuàng)新發(fā)展新模式
- 紡織品的定性分析知識試題及答案
- 紡織品設(shè)計中的目標(biāo)市場研究考題及答案
- 助理廣告師考試中內(nèi)容營銷的有效途徑試題及答案
- 急性心肌梗死的急救與護(hù)理
- 低年級數(shù)學(xué)“數(shù)學(xué)連環(huán)畫”跨學(xué)科主題活動探索
- 《甲狀腺腫》課件
- 2024華師一附中自招考試數(shù)學(xué)試題
- 部編版歷史八年級下冊第六單元 第19課《社會生活的變遷》說課稿
- NDJ-79型旋轉(zhuǎn)式粘度計操作規(guī)程
- 藥店轉(zhuǎn)讓協(xié)議合同
- 社區(qū)工作者2024年終工作總結(jié)
- 柴油機維修施工方案
- 酒店裝修改造工程項目可行性研究報告
- 基底節(jié)腦出血護(hù)理查房
評論
0/150
提交評論