Javaapplet音頻播放器_第1頁
Javaapplet音頻播放器_第2頁
Javaapplet音頻播放器_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、1 課題需求分析在Java2平臺出現(xiàn)前,Java語言只能處理電話音質(zhì)的聲音,以單聲道8KHz的采樣頻率存儲為u-lawAU文件。Java2平臺增加了AIFF、WAV以及三種MIDI文件類型的支持。所支持的三種MIDI文件格式為MIDI文件類型0、MIDI文件類型1以及RMF。2 課程解決方案本程序有三個文件:SoundApplet.Java是主文件,AppletSoundLoader.Java中的AppletSoundLoader類繼承Thrwad負(fù)責(zé)為聲音文件獲得AudioClip對象并把它加到AppletSoundList中去;AppletSoundList.java中定義的AppletS

2、oundList繼承自Hashtable,提供getClipString)和putClip(AudioClip,String方法,分別從哈希表中取得AudioClip對象和放置AudioClip對象。其結(jié)構(gòu)是AppletSoundList中用AppletSoundLoader來裝載制定URL的聲音文件,AppletSoundLoader負(fù)責(zé)為聲音文件產(chǎn)生AudioClip對象并添加到AppletSoundList中。在SoundApplet中則只是利用AppletSoundList類。3 課題實現(xiàn)主要的聲音文件類型如下:AU(擴展名為AU或SND:適用于短的聲音文件,為Solaris和下一代機

3、器的通用文件格式,也是Java平臺的標(biāo)準(zhǔn)音頻格式。AU類型文件使用的三種音頻格式為:8位u-law類型通常采用頻率為8KHz),8位線性類型以及16位線性類型。WAV擴展名為WAV):由Microsoft和IBM共同開發(fā),對WAV的支持已經(jīng)被加進(jìn)Windows95并且被延伸到Windows98。WAV文件能存儲各種格式包括u-law、a-law和PCM線性)數(shù)據(jù)。它們幾乎能被所有支持聲音的Windows應(yīng)用程序播放。AIFF擴展名為AIF或IEF)音頻互換文件格式是為Macintosh計算機和SiliconGraphicsvSGI)計算機所共用的標(biāo)準(zhǔn)音頻文件格式。AIFF和AIFF-C幾乎是相

4、同的,除了后者支持例如u-law和IMAADPCM類型的壓縮。MIDI擴展名為MID)樂器數(shù)字接口MIDI是為音樂制造業(yè)所認(rèn)可的標(biāo)準(zhǔn),主要用于控制諸如合成器聲卡之類的設(shè)備。Java聲音引擎支持兩種MIDI文件類型:MIDI類型0文件-包含僅僅一個序列,所有相關(guān)的樂器部分被包含在同一個邏輯“磁道”上。MIDI類型1文件-包含多重的“磁道”使得不同的樂器被邏輯地分開,從而使對聲音的操作和重組更加容易。RMFv擴展名為RMF)混合音樂格式是由Beatnik設(shè)計出來的混合文件類型,通過交互設(shè)定將MIDI和音頻采樣封裝在一起。RMF好比是一個所有音樂相關(guān)文件的容器。RMF也包含對有關(guān)版權(quán)的詳細(xì)文件說明的

5、支持。RMF文件可以包含多個由不同藝術(shù)家創(chuàng)作的存儲為MIDI類型或音頻采樣類型的作品,每個都關(guān)聯(lián)著相關(guān)的版權(quán)信息。Java中用于播放聲音的AudioClip接口提供下列機能:播放、循環(huán)、停止?;謴?fù)和播放聲音最簡單的方法是通過Applet類的playv)方法。調(diào)用playv)方法有如下兩種方式:playv)帶有一個參數(shù),一個URL對象,裝載并演奏儲存在URL處的聲音片段。Playv)帶有兩個參數(shù),基本URL和文件夾路徑名,裝載并演奏聲音文件。第一參數(shù)經(jīng)常是對getCodeBase(或DocumentBase<的調(diào)用。playv)一旦被調(diào)用立刻開始恢復(fù)和播放聲音。如果聲音文件不能被查找,將不

6、會有出錯信息,僅僅是沉默。啟動和停止聲音文件,或循環(huán)播放,必須用applet的getAudioClip方法把它裝載進(jìn)入AudioClip對象,類似上面playv)方法的參數(shù),getAudioClip方法要用一個或兩個參數(shù),當(dāng)作播放的指示。第一個或唯一的一個參數(shù)是URL參數(shù),用來指示聲音文件的位置,第二參數(shù)是文件夾路徑指針。代碼如下:/SoundApplet.javaimportjavax.swing.*。importjava.applet.*。importjava.awt.*。importjava.awt.event.*。publicclassSoundAppletextendsJApplet

7、implementsActionListener,ItemListenerAppletSoundListsoundList。StringauFile="soundspacemusic.au。"StringaiffFile="soundflute+hrn+mrmba.aif"。StringmidiFile="soundtrippygaia1.mid"。StringrmfFile="soundjungle.rmf"。StringwavFile="soundbottle-open.wav"。Strin

8、gchosenFile。AudioCliponceClip,loopClip。JComboBoxformats。JButtonplayButton,loopButton,stopButton。booleanlooping=false。publicvoidinit(StringfileTypes=auFile,aiffFile,midiFile,rmfFile,wavFile。formats=newJComboBox(fileTypes。formats.setSelectedIndex(0。/獲得選中的聲音文件名chosenFile=(Stringformats.getSelectedItem(

9、。formats.addItemListener(this。playButton=newJButton("Play"。playButton.addActionListener(this。loopButton=newJButton("Loop"。loopButton.addActionListener(this。stopButton=newJButton("Stop"。stopButton.addActionListener(this。stopButton.setEnabled(false。JPanelcontrolPanel=newJ

10、Panel。controlPanel.add(formats。controlPanel.add(playButton。controlPanel.add(loopButton。controlPanel.add(stopButton。getContentPane(.add(controlPanelstartLoadingSounds(。publicvoiditemStateChanged(ItemEventechosenFile=(Stringformats.getSelectedItem(。soundList.startLoading(chosenFile。voidstartLoadingSou

11、nds(/開始裝載聲音文件soundList=newAppletSoundList(this,getCodeBase(。soundList.startLoading(auFile。soundList.startLoading(aiffFile。soundList.startLoading(midiFile。soundList.startLoading(rmfFile。soundList.startLoading(wavFile>。publicvoidstop(>onceClip.stop(>。/停止一次播放if(looping>loopClip.stop(>。/停

12、止循環(huán)播放publicvoidstart(>if(looping>loopClip.loop(>。/重新啟動循環(huán)播放publicvoidactionPerformed(ActionEventevent>Objectsource=event.getSource(>if(source=playButton>/TrytogettheAudioClip.onceClip=soundList.getClip(chosenFile>。onceClip.play(>。/Playitonce.stopButton.setEnabled(true>。show

13、Status("Playingsound"+chosenFile+".">。if(onceClip=null>showStatus("Sound"+chosenFile+"notloadedyet.">return。/如果按下循環(huán)按鈕if(source=loopButton>loopClip=soundList.getClip(chosenFile>。looping=true。loopClip.loop(>。/開始循環(huán)播放loopButton.setEnabled(false&g

14、t;。stopButton.setEnabled(true>。showStatus("Playingsound"+chosenFile+"continuously.">。if(loopClip=null>showStatus("Sound"+chosenFile+"notloadedyet.">return。/如果按下停止按鈕if(source=stopButton>if(looping>looping=false。loopClip.stop(>。/停止循環(huán)播放loopBu

15、tton.setEnabled(true>。/使開始按鈕可用elseif(onceClip!=null>onceClip.stop(>。stopButton.setEnabled(false>。showStatus("Stoppedplaying"+chosenFile+".">。return。/AppletSoundLoader.javaimportjavax.swing.*。importjava.applet.*。classAppletSoundLoaderextendsThreadJAppletapplet。Apple

16、tSoundListsoundList。URLbaseURL。StringrelativeURL。publicAppletSoundLoader(JAppletapplet,AppletSoundListsoundList,URLbaseURL,StringrelativeURL>this.applet=applet。this.soundList=soundList。this.baseURL=baseURL。this.relativeURL=relativeURL。setPriority(MIN_PRIORITY>。start(>。publicvoidrun(>Audi

17、oClipaudioClip=applet.getAudioClip(baseURL,relativeURL>soundList.putClip(audioClip,relativeURL>。/AppletSoundList.javaimportjavax.swing.*。importjava.applet.*。/Loadsandholdsabunchofaudiofileswhoselocationsarespecified/relativetoafixedbaseURL.classApplets。undListextendsjava.util.HashtableJAppleta

18、ppletoURLbaseURL。publicAppletSoundList(JApplet即plet,URLbaseURL>super(5>。初始化哈希表的容量為5this.applet=appletothis.baseURL=baseURLopublicvoidstartLoading(StringrelativeURL>newAppletSoundLoader(applet,this,baseURL,relativeURL>。/通過相對URL從哈希表中獲得AudioClippublicAudioClipgetClip(StringrelativeURL>return(AudioClip>get(r

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論