可視化課程設(shè)計(jì)---多媒體播放器系統(tǒng)實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  在VC ++ 6. 0 平臺(tái)上利用Windows Media Player 控件實(shí)現(xiàn)了在程序中播放一段視頻和音頻的功能。但是由于限定于控件導(dǎo)致界面改良不大。優(yōu)點(diǎn)也很明顯,可以播放大多數(shù)視頻音頻文件,可以完成很多基本操作,以及用時(shí)少。</p><p><b>  關(guān)鍵字</b><

2、/p><p>  MFC; 控件; 消息; WMP</p><p><b>  引言</b></p><p>  MFC (Microsoft Foundation Class ) 是用來(lái)編寫Windows 應(yīng)用程序的C ++ 類集,其中封裝了大部分Windows API 函數(shù)和Windows 控件,使用MFC 類庫(kù)和Visual C ++ 提供的

3、高度可視的應(yīng)用程序開(kāi)發(fā)工具,</p><p>  可使應(yīng)用程序開(kāi)發(fā)變得簡(jiǎn)單,提高代碼的可靠性和可重用性 。隨著多媒體性能的極大提升,程序中經(jīng)常要播放一段視頻或者一段音頻,如果能夠簡(jiǎn)單地插入音頻和視頻,將極大縮短程序的開(kāi)發(fā)時(shí)。本文基于MFC 在Visual C ++ 環(huán)境下利用Windows Media Player 控件實(shí)現(xiàn)了音頻視頻文件的播放。</p><p><b>  需求

4、分析</b></p><p>  多媒體播放器系統(tǒng)實(shí)現(xiàn)</p><p>  1.制作一個(gè)具有自己設(shè)計(jì)風(fēng)格的媒體播放器。</p><p>  2.要求能隨機(jī)選取要播放的文件,實(shí)現(xiàn)前進(jìn),回退,暫停,循環(huán)播放,音量大小調(diào)節(jié)等基本功能。</p><p>  3.要求能播放多種格式(至少三種以上)的音頻視頻格式文件。 </p>

5、<p>  4.實(shí)現(xiàn)其它附加功能</p><p>  5.界面良好,功能完善</p><p><b>  設(shè)計(jì)思路</b></p><p>  開(kāi)始時(shí)準(zhǔn)備用MCI函數(shù)來(lái)實(shí)現(xiàn)播放器的功能,后來(lái)在調(diào)節(jié)音量和快進(jìn)快退方面遇到了很大的麻煩,于是改用Windows Media Player控件來(lái)實(shí)現(xiàn)。</p><p>

6、  可是用控件幾乎絕大部分的代碼都自動(dòng)生成了,于是自己設(shè)計(jì)了一些菜單來(lái)從另一方面實(shí)現(xiàn)其功能。</p><p><b>  基本功能說(shuō)明與介紹</b></p><p><b>  播放功能</b></p><p>  包括打開(kāi)文件,播放,暫停,停止,快進(jìn)快退以及調(diào)節(jié)音量(最終未實(shí)現(xiàn))等功能,這些可以通過(guò)WMP的控件界面實(shí)現(xiàn)。

7、</p><p>  其中一些也能在菜單里實(shí)現(xiàn),比如播放停止,都是運(yùn)用WMPPlayer4里的函數(shù)實(shí)現(xiàn)的。</p><p>  由于使用了WMP控件,所以主流的很多視頻都能播放,如MP3,WMA,AVI等文件。</p><p><b>  視圖功能</b></p><p>  可以通過(guò)菜單里的全屏按鈕實(shí)現(xiàn)全屏播放。通過(guò)簡(jiǎn)

8、單的全屏函數(shù)實(shí)現(xiàn)。其實(shí)自己也想實(shí)現(xiàn)類似迷你模式的功能,但由于時(shí)間所限,而且覺(jué)得該功能不是特別需要,就放棄了。</p><p><b>  幫助功能</b></p><p>  借助自動(dòng)生成的CAboutDlg類實(shí)現(xiàn)一個(gè)彈出對(duì)話框,有一些播放器的信息與個(gè)人信息。</p><p><b>  源程序代碼及說(shuō)明</b></

9、p><p><b>  文件打開(kāi)</b></p><p>  void CPlayerDlg::OnOpen() //打開(kāi)文件</p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><

10、;p>  char szFile[]="All Files(*.*)|*.*|"</p><p>  "Wma File(*.wma)|*.wma|"</p><p>  "Video File(*.dat)|*.dat|"</p><p>  "Wave File(*.wav)|*.wav

11、|"</p><p>  "AVI File(*.avi)|*.avi|"</p><p>  "Movie File(*.mov)|*.mov|"</p><p>  "Media File(*.mmm)|*.mmm|"</p><p>  "Mid File(

12、*.mid.*,rmi)|*.mid.*.rmi|"</p><p>  "MPEG File(*.mpeg)|*.mpeg|"</p><p>  "Mp3 File(*.mp3)|*.mp3||"; //支持的格式</p><p>  CFileDialog dlg(true,NULL,NULL,OFN

13、_HIDEREADONLY,szFile);</p><p>  if(dlg.DoModal()==IDOK)</p><p><b>  {</b></p><p>  PathName=dlg.GetPathName();</p><p>  m_play.SetUrl(PathName);</p>

14、<p>  } //獲取文件名并打開(kāi)</p><p><b>  }</b></p><p><b>  文件關(guān)閉</b></p><p>  void CPlayerDlg::OnClose() //關(guān)閉正在播放的文件</p>

15、<p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  m_play.close();</p><p><b>  }</b></p><p><b>  退出播放器<

16、;/b></p><p>  void CPlayerDlg::OnExit() //退出程序</p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  OnClose();</p><

17、p>  CDialog::OnOK();</p><p><b>  }</b></p><p><b>  循環(huán)播放</b></p><p>  循環(huán)播放未實(shí)現(xiàn),此處為重播</p><p>  void CPlayerDlg::OnReplay() //重播</p><

18、p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  m_play.SetUrl(PathName);</p><p><b>  }</b></p><p><b>  調(diào)試及運(yùn)行

19、結(jié)果</b></p><p><b>  界面</b></p><p><b>  播放MP3</b></p><p><b>  播放WMA</b></p><p><b>  播放AVI</b></p><p>&l

20、t;b>  播放MP4</b></p><p>  遇到的問(wèn)題及解決方法</p><p>  關(guān)于MCI與WMP的選擇</p><p>  上面提到的,開(kāi)始是打算用MCI接口來(lái)實(shí)現(xiàn)播放器的功能,因?yàn)镸CI有MCI_PLAY,MCI_PAUSE等很多命令消息,所以可以實(shí)現(xiàn)一些播放器功能,但關(guān)于快進(jìn)快退功能是實(shí)現(xiàn),我想了一些辦法,參考了很多資料,本想用

21、MCI_SEEK來(lái)實(shí)現(xiàn),最后還是覺(jué)得不方便和自己能力的限制而放棄了。而且關(guān)于音量的調(diào)整也是毫無(wú)頭緒。于是選擇用WMP控件來(lái)實(shí)現(xiàn)。</p><p>  當(dāng)然用控件實(shí)現(xiàn)會(huì)方便很多,可是界面就很難有自己的特色了,而且打開(kāi)文件的方法本來(lái)是準(zhǔn)備雙擊界面來(lái)實(shí)現(xiàn),后來(lái)覺(jué)得不是很好,就另外設(shè)計(jì)了菜單項(xiàng),在菜單項(xiàng)里加入了例如打開(kāi)文件,播放文件等菜單。更加方便操作。</p><p><b>  關(guān)于

22、循環(huán)播放</b></p><p>  另外,還有個(gè)要求目前還沒(méi)有實(shí)現(xiàn),循環(huán)播放功能,本來(lái)是打算讓一個(gè)文件播放完了繼續(xù)播放一遍,但覺(jué)得這種算法好像不太好,而且嘗試幾次都失敗了。后來(lái)想試試WMPSettings里的自動(dòng)播放函數(shù),但因?yàn)閷?duì)該類的函數(shù)不熟悉也找不到相關(guān)資料最后還是沒(méi)成功。</p><p><b>  快進(jìn)快退功能</b></p>&l

23、t;p>  關(guān)于播放器快進(jìn)快退的功能,WMP控件只能加快播放的速度,不是跳過(guò)幾幀實(shí)現(xiàn)快進(jìn),可是由于有進(jìn)度條的顯示,可以通過(guò)點(diǎn)擊進(jìn)度條來(lái)實(shí)現(xiàn)該功能。</p><p><b>  聲音調(diào)整</b></p><p>  聲音的調(diào)整方面,我嘗試了用WMPSettings類的setvolume函數(shù)來(lái)實(shí)現(xiàn),但編譯出現(xiàn)問(wèn)題,而且在這段時(shí)間里沒(méi)有解決。</p>&

24、lt;p><b>  其他問(wèn)題</b></p><p>  在菜單的添加階段也出現(xiàn)了一些錯(cuò)誤,比如先關(guān)聯(lián)了一個(gè)響應(yīng)函數(shù),但沒(méi)編譯成功,放棄后,再構(gòu)建時(shí)會(huì)出現(xiàn)錯(cuò)誤。這時(shí)我在Class Wizard里將函數(shù)刪除就好了。</p><p>  調(diào)試的時(shí)候,發(fā)現(xiàn)MP4打開(kāi)速度比較快,AVI打開(kāi)則很慢。而且如果點(diǎn)擊控件上的停止按鈕,畫(huà)面會(huì)出現(xiàn)“凍結(jié)”,與預(yù)想不相符。<

25、/p><p><b>  設(shè)計(jì)體會(huì)心得</b></p><p>  前段時(shí)間把課程設(shè)計(jì)拖著,知道最近兩周才開(kāi)始動(dòng)手準(zhǔn)備,本來(lái)以為可以比較順利的完成,最后發(fā)現(xiàn)編程過(guò)程中遇到了很多問(wèn)題,直到上交前的最后一個(gè)晚上都在趕論文,而且播放器的功能還并沒(méi)有全部實(shí)現(xiàn)。</p><p>  經(jīng)過(guò)這段時(shí)間的經(jīng)歷,我總結(jié)了一些心得體會(huì)也接受了很多教訓(xùn)。比如開(kāi)始一周滿腦子

26、都在想MCI函數(shù)怎么實(shí)現(xiàn)播放器的功能,在網(wǎng)上找代碼,在書(shū)上找例子,但最終還是沒(méi)有找到一個(gè)比較完美的方法。于是在別人的建議下,采用了Windows Media Player控件的方法。其實(shí)個(gè)人來(lái)說(shuō)不是很想用控件,因?yàn)楦杏X(jué)使用控件后就不是自己的播放器了,事實(shí)也如此,大部分的功能,控件都能實(shí)現(xiàn),而且WMP中提供的WMPPlayer4,WMPControll,WMPSettings這些類有很多方法可以讓程序員去使用。但由于對(duì)這個(gè)控件了解不多,使

27、用起來(lái)也是多有不便,所以讓這個(gè)程序功能不完善,這是必須改正的地方,以后一定要把基礎(chǔ)知識(shí)打扎實(shí),不然到編比較復(fù)雜的程序的時(shí)候就會(huì)出現(xiàn)心有余而力不足。</p><p>  在編程調(diào)試的過(guò)程中,對(duì)VC里的*.cpp,*.h等文件有了更深入的理解,我想這對(duì)我以后的編程會(huì)有很大的幫助。</p><p>  在我請(qǐng)教別的同學(xué)(包括別校的學(xué)生)的時(shí)候,發(fā)現(xiàn)很多人能編出特別好看的程序,但是并不全是用VC+

28、+的,其中用JAVA和C#的比較多,這讓我對(duì)高級(jí)語(yǔ)言的認(rèn)識(shí)有了進(jìn)一步的了解,而且也激勵(lì)我在課外去了解更多的高級(jí)語(yǔ)言。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]  黃維通,等. Visual C ++ 面向?qū)ο笈c可視化程序設(shè)計(jì)[M] . 北京:清華大學(xué)出版社,2003.</p><p>  [2] 辛長(zhǎng)安,梅林

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論