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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

9、p><p><b>  文件打開</b></p><p>  void CPlayerDlg::OnOpen() //打開文件</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>  } //獲取文件名并打開</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)播放未實現(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)試及運行

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>  遇到的問題及解決方法</p><p>  關(guān)于MCI與WMP的選擇</p><p>  上面提到的,開始是打算用MCI接口來實現(xiàn)播放器的功能,因為MCI有MCI_PLAY,MCI_PAUSE等很多命令消息,所以可以實現(xiàn)一些播放器功能,但關(guān)于快進快退功能是實現(xiàn),我想了一些辦法,參考了很多資料,本想用

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論