帶面板的視頻播放器的制作_第1頁
帶面板的視頻播放器的制作_第2頁
帶面板的視頻播放器的制作_第3頁
帶面板的視頻播放器的制作_第4頁
帶面板的視頻播放器的制作_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1 1 2 3 13 16 17了進(jìn)一步鞏固課堂上所學(xué)到的知識(shí),深刻把握J(rèn)ava技術(shù)的重要概念及其JMF提供了一個(gè)平臺(tái)無關(guān)的框架來呈現(xiàn)時(shí)基媒體(time-basedmedia)JavaMediaPlayerAPI的設(shè)計(jì)目標(biāo)是支持多種標(biāo)準(zhǔn)的媒體格式,包括MPEG-1,MPEG-2,QuickTime,AVI,WAV,AU和MIDI.使用JMF,可以同步呈現(xiàn)不同來定義事件模型,用于Player和應(yīng)用程序間的異步通信有時(shí),JMF的一些方法會(huì)返回非預(yù)期的結(jié)果,通過檢查返回直,我們可以檢測(cè)實(shí)際發(fā)生的事情:我們可以通過返回直檢查實(shí)際被設(shè)置的數(shù)值,例如:并不是所有的播放器都可以每周期5次的速率呈現(xiàn)媒體數(shù)據(jù),如果我們調(diào)了setRate(5.0),播放器將會(huì)設(shè)置一個(gè)合法的近似直,這個(gè)數(shù)值可能是5.0也可能是1.0,我們需要檢查返回?cái)?shù)據(jù)來確認(rèn)被設(shè)置的數(shù)據(jù)??赡懿恢烂襟w的時(shí)長(zhǎng),這時(shí)如果我們調(diào)了getDuration(),getDuration會(huì)返回DURATIONUNKNOWN.當(dāng)媒體被播放完一次,再調(diào)getDuration時(shí),則會(huì)返回正確的時(shí)長(zhǎng)。4.2程序設(shè)計(jì)圖器個(gè)打開循環(huán)退出暫停設(shè)置播放文件上一個(gè)下一4.3設(shè)計(jì)及核心代碼創(chuàng)建“文件”菜單創(chuàng)建“打開”菜單把JMFMediaPlayer對(duì)象注冊(cè)成功為“打開”菜單項(xiàng)動(dòng)作事件的監(jiān)聽器把“打開”菜單項(xiàng)加入“文件”菜單把“文件”菜單中加入一條水平分隔線創(chuàng)建帶檢查框的“循環(huán)”菜單項(xiàng)把JMFMediaPlayer對(duì)象注冊(cè)成功為“循環(huán)”菜單項(xiàng)動(dòng)作事件的監(jiān)聽器把“循環(huán)”菜單項(xiàng)加入“文件”菜單在“文件”菜單項(xiàng)中加入一條水平分隔線按照創(chuàng)建“打開”菜單項(xiàng)的過程,創(chuàng)建“退出”菜單項(xiàng)創(chuàng)建“播放”菜單創(chuàng)建“上一個(gè)”菜單創(chuàng)建“下一個(gè)”菜單項(xiàng)創(chuàng)建“保存”菜單把JMFMediaPlayer對(duì)象注冊(cè)成功為“暫?!辈藛雾?xiàng)動(dòng)作事件的監(jiān)聽器把“暫?!辈藛雾?xiàng)加入“設(shè)置”菜單在“設(shè)置”菜單中加入一條水平分隔線創(chuàng)建“刪除”菜單項(xiàng)把JMFMediaPlayer對(duì)象注冊(cè)成功為“刪除”菜單項(xiàng)動(dòng)作事件的監(jiān)聽器創(chuàng)建一個(gè)菜單條(MenuBar)把“文件”菜單加入到菜單條把“播放控制”菜單加入到菜單條把“播放列表”菜單加入到菜單條//創(chuàng)建播放器的菜單JMenufileMenu=newJMeopenMemuItemaddActioUIManager.setLookAndFeelUIManagergetSystemLookAndFeelClassName}}動(dòng)作監(jiān)聽器根據(jù)用戶的操作作出相應(yīng)的反應(yīng)(1)如果動(dòng)作事件起源于“退出”菜單項(xiàng),觸發(fā)一個(gè)給查監(jiān)聽器的窗口關(guān)閉事件(2)如果動(dòng)作事件起源于“播放“菜單項(xiàng),判斷當(dāng)前是否存在一個(gè)播放器,存在則將該播放器置于運(yùn)動(dòng)狀態(tài)(3)如果動(dòng)作事件起源于“暫?!辈藛雾?xiàng),判斷當(dāng)前是否存在一個(gè)播放器,存在則停止該播放器的播放(4)如果動(dòng)作事件起源于“下一個(gè)”菜單項(xiàng),判斷當(dāng)前是否存在一個(gè)播放器,存在則停止該播放器的播放,并把播放指針移到下一個(gè)文件(5)如果動(dòng)作事件起源于“打開”菜單,則:創(chuàng)建一個(gè)“打開媒體文件“對(duì)話框把對(duì)話框的當(dāng)前目錄設(shè)置為上次關(guān)閉時(shí)的目錄顯示對(duì)話框。這個(gè)對(duì)話框是一個(gè)模式對(duì)話框如果用戶沒有通過對(duì)話框選擇媒體文件,則返回(6)如果出現(xiàn)異常顯示錯(cuò)誤信息,然后返回把主窗口的標(biāo)題設(shè)置為媒體文件的名字把JMFMediaPlayer對(duì)象注冊(cè)為來自JMF播放器對(duì)象的控制器事件的監(jiān)讓JMF播放器對(duì)象預(yù)先提取媒體內(nèi)容/***實(shí)現(xiàn)了ActionListenr口,處理組件的活動(dòng)事件*/publicvoidactionPerformed(ActionEvente){if(e.getActionCommand().equa退ls出(")){//調(diào)用dispose以便執(zhí)行windowCloseddispose();return;}FileDialogfileDialog=newFileDialog(tFileDialog.LOAD);fileDialog.setDirectory(currentDirectory);fileDialog.setVisible(true);//如果用戶放棄選擇文件,則返回if(fileDialog.getFile()==null){}}playerManagercreatePlayeSystem.out.println("不能找到}System.out.println("無法創(chuàng)建}playeraddControllerListen}控制監(jiān)聽器控制監(jiān)聽器完成與控制相關(guān)的操作,具體包括以下幾種情況JMFMediaPlayer容器拆除視覺部件。如果JMF播放器的控制面板部件存在,從從JMFMediaPlayer容器拆除控制面板部件(2)當(dāng)媒體回放結(jié)束,復(fù)位JMF播放器對(duì)象的開始時(shí)間。(3)當(dāng)預(yù)提取媒體內(nèi)容結(jié)束,JMF播放器對(duì)象開始播放媒體(4)當(dāng)實(shí)例化(realize)完成,則獲取JMF播放器對(duì)象的視覺部件,如果視覺部件存在,則把它加入到JMFMediaPlayer容器的中間獲取JMF播放器對(duì)象的控制面板部件,如果控制面板部件存在,則把它加入到JMFMediaPlayer容器的下方獲取JMF播放器對(duì)象的擴(kuò)展控制面板部件,如果擴(kuò)展控制面板部件存在,則把它加入到JMFMediaPlayer容器的上方如果播放中含有圖形,執(zhí)行pack()操作*實(shí)現(xiàn)ControllerListen接er口的方法,處理播放器的控制事件*/publicvoidcontrollerUpdate(ControllerEvente){//調(diào)用player.close時(shí)()ControllerClosedEvn件t出現(xiàn)。//如果存在視覺部件,則該部件應(yīng)該拆除(為一致起見,//我們對(duì)控制面板部件也執(zhí)行同樣的操作)if(einstanceofControllerClosedEvent){if(vedioComponent!=null){this.getContentPane().remove(vedioComponent);this.vedioComponent=null;}if(controlComponent!=null){this.getContentPane().remove(controlComponent);}}}}}}}}}其他監(jiān)聽器1.菜單項(xiàng)監(jiān)聽器菜單項(xiàng)監(jiān)聽器主要針對(duì)“循環(huán)”菜單項(xiàng)的單擊動(dòng)作進(jìn)行反應(yīng)當(dāng)菜單項(xiàng)狀態(tài)改變時(shí),切換“循環(huán)”菜單被選中的狀態(tài)2.窗口監(jiān)聽器值得注意的是窗口監(jiān)聽器是在構(gòu)造函數(shù)中進(jìn)行定義和注冊(cè)的,這一點(diǎn)不同于以上介紹的其他方法,它只是在退出窗口時(shí)執(zhí)行。定窗口大小,并顯示控制器//處理“循環(huán)”復(fù)選框菜單項(xiàng)的點(diǎn)擊事件}}}}我們首先來播放一個(gè)視頻,以《鐵拳:血之復(fù)仇》為例,視頻格式為AVI格式,以下為視頻截圖下面來測(cè)試一下播放音頻文件,以《本兮:情花》為例,此音樂文件的格式為WAV本兮-情花本兮-情花way文件設(shè)孟番放上一個(gè)下一個(gè)叫目X 第6章課程設(shè)計(jì)心得體會(huì)這次課程設(shè)計(jì)我做的是帶面板的視頻播放器的制作,主要是服務(wù)于學(xué)生進(jìn)這個(gè)播放器主要是我和隊(duì)友一起開發(fā)的,但也得到了老師和同學(xué)的很大幫助。我在做播放器的過程中遇到了很多問題,有的是知識(shí)存儲(chǔ)不足,有的是考慮不夠周全,之所以能夠順利實(shí)現(xiàn)基本功能,離不開老師和同學(xué)的大力相助。事實(shí)證明,只靠自己是不能順利設(shè)計(jì)完成一個(gè)功能完整的播放器的,必須充分利用團(tuán)隊(duì)的力量。實(shí)驗(yàn)過程中,首先要將系統(tǒng)要實(shí)現(xiàn)的功能分為幾大模塊,然后每個(gè)組員分別完成,在此過程中使我加深了對(duì)Java的理解,以及如何進(jìn)行團(tuán)隊(duì)工作的劃分,學(xué)會(huì)發(fā)現(xiàn)各組員的長(zhǎng)處并將其發(fā)揮出來。雖然大家沒怎么學(xué)過Java,但大家都有C語言基礎(chǔ),所以通過努力實(shí)驗(yàn),進(jìn)一步培養(yǎng)我們利用Java語言進(jìn)行編程和調(diào)試程序的能力,同時(shí)使我們能夠?qū)W會(huì)將C語言與Java語言結(jié)合起來編寫較復(fù)雜具有實(shí)際意義和算法復(fù)雜度較小的程序。與此同時(shí)熟練掌握J(rèn)ava語言的編輯,編譯,調(diào)試程序,并將算法轉(zhuǎn)變?yōu)槌绦驅(qū)崿F(xiàn)。開發(fā)設(shè)計(jì)一個(gè)播放器,最重要的是細(xì)心,并不是一定要做到面面俱到,但也要充分考慮到播放器的功能和用途,不管做什么設(shè)計(jì),只用運(yùn)用到實(shí)際應(yīng)用中,才具有先現(xiàn)實(shí)意義。所以在準(zhǔn)備工作中要正確分析社會(huì)需求了解現(xiàn)實(shí)應(yīng)用,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論