import sun.audio.*;

創(chuàng)新互聯(lián)專注于柴桑企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開(kāi)發(fā)。柴桑網(wǎng)站建設(shè)公司,為柴桑等地區(qū)提供建站服務(wù)。全流程按需開(kāi)發(fā)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class Sound5
{
FileInputStream file;
BufferedInputStream buf;
public Sound5()
{
try
{
file=new FileInputStream("1.mid");
buf=new BufferedInputStream(file);
AudioStream audio=new AudioStream(buf);
AudioPlayer.player.start(audio);
}
catch (Exception e) {}
}
}
public class e8165 extends Frame implements ActionListener
{
e8165()
{
super("音頻播放器");
setBounds(300,300,200,100);
setVisible(true);
Button btn=new Button("播放");
setLayout(new FlowLayout());
add(btn);
btn.addActionListener(this);
validate();
// Sound5 play = new Sound5();
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(1); }
});
}
public void actionPerformed(ActionEvent e)
{
Sound5 play = new Sound5();
}
public static void main(String[] args)
{
new e8165();
}
}
//下載一個(gè).mid文件命名為1,放在上述代碼的包下
在?applet?中播放聲音文件非常簡(jiǎn)單,一般需要以下步驟:創(chuàng)建一個(gè)?AudioClip?對(duì)象
裝入?.au?聲音文件到?AudioClip?對(duì)象
一次播放或者不停循環(huán)播放聲音
停止播放
下面是相應(yīng)的代碼:import?java.applet.*;AudioClip?ac?=?getAudioClip(getCodeBase(),?soundFile);
ac.play();?//play?once
ac.stop();?//stop?playing
解決這個(gè)問(wèn)題的竅門(mén)是利用由?Sun?及?其JDK?提供的某些?undocumented?的特征。先看看?Sun?JDK?中的文件?classes.zip?(使用任何解壓工具即可),發(fā)現(xiàn)其中不僅包含標(biāo)準(zhǔn)的?Java?包如?java.applet?而且還存在包?sun.audio.?(在?sun/audio?的目錄下.)
包?sun.audio?中包含了用于播放聲音文件所需的所有東西!下面是示例代碼:import?sun.audio.*;?//import?the?sun.audio?package
import?java.io.*;//**?add?this?into?your?application?code?as?appropriate//?Open?an?input?stream?to?the?audio?file.
InputStream?in?=?new?FileInputStream(Filename);//?Create?an?AudioStream?object?from?the?input?stream.
AudioStream?as?=?new?AudioStream(in);//?Use?the?static?class?member?"player"?from?class?AudioPlayer?to?play
//?clip.
AudioPlayer.player.start(as);//?Similarly,?to?stop?the?audio.
AudioPlayer.player.stop(as);如果要用一個(gè)?URL?做為聲音流的源(source),則用下面的代碼所示替換輸入流來(lái)創(chuàng)建聲音流:AudioStream?as?=?new?AudioStream?(url.openStream());如果需要持續(xù)播放聲音文件,則要稍稍復(fù)雜一點(diǎn)://?Create?audio?stream?as?discussed?previously.
//?Create?AudioData?source.
AudioData?data?=?as.getData();//?Create?ContinuousAudioDataStream.
ContinuousAudioDataStream?cas?=?new?ContinuousAudioDataStream?(data);//?Play?audio.
可以實(shí)現(xiàn),參考如下代碼:
package?com.lolo;
import?java.io.File;
import?java.io.IOException;
import?javax.sound.sampled.AudioSystem;
import?javax.sound.sampled.LineUnavailableException;
import?javax.sound.sampled.UnsupportedAudioFileException;
import?javax.sound.sampled.AudioInputStream;
import?javax.sound.sampled.AudioFormat;
import?javax.sound.sampled.SourceDataLine;
import?javax.sound.sampled.DataLine;
public?class?PlayMusic?{
//????程序退出時(shí)執(zhí)行的代碼
public?void?doShutDownWork()?{
Runtime.getRuntime().addShutdownHook(new?Thread()?{
public?void?run()?{
try?{
//Toolkit.getDefaultToolkit().beep();
Play();
Play();
}?catch?(Exception?ex)?{
}
}
});
}
//播放音頻文件
public?void?Play(){
String?fileurl?=?"file/tada.wav";
try{
AudioInputStream?ais?=?AudioSystem.getAudioInputStream(new?File(fileurl));
AudioFormat?aif?=?ais.getFormat();
SourceDataLine?sdl?=?null;
DataLine.Info?info?=?new?DataLine.Info(SourceDataLine.class,aif);
sdl?=?(SourceDataLine)AudioSystem.getLine(info);
sdl.open(aif);
sdl.start();
//play
int?nByte?=?0;
byte[]?buffer?=?new?byte[128];
while(nByte?!=?-1){
nByte?=?ais.read(buffer,0,128);
if(nByte?=?0){
int?oByte?=?sdl.write(buffer,?0,?nByte);
//System.out.println(oByte);
}
}
sdl.stop();
}catch(UnsupportedAudioFileException?e){
e.printStackTrace();
}?catch?(IOException?e)?{
//?TODO?自動(dòng)產(chǎn)生?catch?區(qū)塊
e.printStackTrace();
}?catch?(LineUnavailableException?e)?{
//?TODO?自動(dòng)產(chǎn)生?catch?區(qū)塊
e.printStackTrace();
}
}
}
java不支持播放mp3格式的聲間文件,你把它轉(zhuǎn)成au格式的就能播放了
可以看看下面:
Java對(duì)多媒體的支持
4.2 圖像與聲音
其它語(yǔ)言相比較,如果說(shuō)Java對(duì)圖形和文本媒體的支持并不占明顯優(yōu)勢(shì)的話,那么Java對(duì)圖像與聲音媒體的支持真可謂是技高一籌,顯示圖像與播放聲音就如同顯示一行文本一樣方便。同時(shí),正由于在Java動(dòng)畫(huà)中靈活的運(yùn)用圖像和聲音媒體,才使得Web頁(yè)面更具魅力。
4.2.1 圖像文件的顯示
正如上一節(jié)所介紹的,Graphics類中確實(shí)提供了不少繪制圖形的方法,但如果用它們?cè)赼pplet運(yùn)行過(guò)程中實(shí)時(shí)地繪制一幅較復(fù)雜的圖形(例如一條活潑可愛(ài)的小狗),就好比是在用斧頭和木塊去制造航天飛機(jī)。因此,對(duì)于復(fù)雜圖形,大部分都事先用專用的繪圖軟件繪制好,或者是用其它截取圖像的工具(如掃描儀、視效卡等)獲取圖像的數(shù)據(jù)信息,再將它們按一定的格式存入圖像文件。applet運(yùn)行時(shí),只要找到圖像文件存貯的位置,將它裝載到內(nèi)存里,然后在適當(dāng)?shù)臅r(shí)機(jī)將它顯示在屏幕上就可以了。
1.圖像文件的裝載
Java目前所支持的圖像文件格式只有兩種,它們分別是GIF和JPEG格式(帶有.GIF、.JPG、.JPEG后綴名的文件)。因此若是其它格式的圖像文件,就先要將它們轉(zhuǎn)換為這兩種格式。能轉(zhuǎn)換圖像格式的軟件有很多,如PhotoStyler等。
Applet類中提供了getImage( )方法用來(lái)將準(zhǔn)備好的圖像文件裝載到applet中,但我們必須首先指明圖像文件所存貯的位置。由于Java語(yǔ)言是面向網(wǎng)絡(luò)應(yīng)用的,因此文件的存貯位置并不局限于本地機(jī)器的磁盤(pán)目錄,而大部分情況是直接存取網(wǎng)絡(luò)中Web服務(wù)器上的圖像文件,因而,Java采用URL(Universal Resource Location,統(tǒng)一資源定位器)來(lái)定位圖像文件的網(wǎng)絡(luò)位置。因此,Java專門(mén)提供了URL類來(lái)管理URL信息(關(guān)于該類的詳細(xì)介紹見(jiàn)下一章)。
表示一個(gè)URL信息可分為兩種形式:
一種稱為絕對(duì)URL形式,它指明了網(wǎng)絡(luò)資源的全路徑名。如:
絕對(duì)URL:“”
另一種稱為相對(duì)URL形式,分別由基準(zhǔn)URL(即base URL)再加上相對(duì)于基準(zhǔn)URL下的相對(duì)URL這兩部分組成,例如上面的例子可表示為:
基準(zhǔn)URL:“”
相對(duì)URL:“images/m1.gif”
現(xiàn)在,我們可以來(lái)看一下getImage( )方法的調(diào)用格式了:
Image getImage(URL url)
Image getImage(URL url, String name)
我們可以發(fā)現(xiàn),這兩種調(diào)用格式的返回值都是Image對(duì)象。確實(shí),Java特別提供了java.awt.Image類來(lái)管理與圖像文件有關(guān)的信息,因此執(zhí)行與圖像文件有關(guān)的操作時(shí)不要忘了import這個(gè)類。getImage( )方法的第一種調(diào)用格式只需一個(gè)URL對(duì)象作為參數(shù),這便是絕對(duì)URL。而后一種格式則帶有兩個(gè)參數(shù),第一個(gè)參數(shù)給出的URL對(duì)象是基準(zhǔn)URL,第二個(gè)參數(shù)是字符串類型,它描述了相對(duì)于基準(zhǔn)URL下的路徑和文件名信息,因此這兩個(gè)參數(shù)的內(nèi)容綜合在一起就構(gòu)成了一個(gè)絕對(duì)URL。例如,下面兩種寫(xiě)法所返回的結(jié)果是一樣的:
Image img=getImage(new URL("");
Image img=getImage(new URL(""),"images/m1.gif");
表面看來(lái),好象第一種調(diào)用格式較方便一些,但實(shí)際上第二種調(diào)用格式用得更普遍,因?yàn)檫@種格式更具靈活性。原來(lái),Applet類中提供了兩個(gè)方法來(lái)幫助我們方便地獲取基準(zhǔn)URL對(duì)象,它們的調(diào)用格式如下:
URL getDocumentBase( )
URL getCodeBase( )
其中g(shù)etDocumentBase( )方法返回的基準(zhǔn)URL對(duì)象代表了包含該applet的HTML文件所處的目錄,例如該文件貯存在“”中,則該方法就返回“”路徑。而getCodeBase( )方法返回的基準(zhǔn)URL對(duì)象代表了該applet文件(.class文件)所處的目錄。它是根據(jù)HTML文件的"APPLET"標(biāo)記中的CODEBASE屬性值計(jì)算出來(lái)的,若該屬性沒(méi)有設(shè)置,則同樣返回該HTML文件所處的目錄。
好了,現(xiàn)在我們應(yīng)該可以感受到基準(zhǔn)URL的靈活性了吧。只要我們寫(xiě)下語(yǔ)句:
Image img = getImage(getDocumentBase( ),"images/m1.gif");
那么即使整個(gè)imgsample目錄移到別處任何地方,也可以正確裝載圖像文件,而采用對(duì)于絕對(duì)URL形式則需要重新修改applet代碼并重新編譯。
2. 圖像文件的顯示
getImage( )方法僅僅是將圖像文件從網(wǎng)絡(luò)上裝載進(jìn)來(lái),交由Image對(duì)象管理。那我們樣把得到的Image對(duì)象中的圖像顯示在屏幕上呢?這又要回到我們的老朋友Graphics類來(lái)了,因?yàn)镚raphics類提供了一個(gè)drawImage( )方法,它能完成將Image對(duì)象中的圖像示在屏幕的特定位置上,就象顯示文本一樣方便。drawImage( )方法的調(diào)用格式如下:
boolean drawImage(Image img, int x, int y, ImageObserver observer)
其中img參數(shù)就是要顯示的Image對(duì)象。x和y參數(shù)是該圖像左上角的坐標(biāo)值。observer參數(shù)則是一個(gè)ImageObserver接口(interface),它用來(lái)跟蹤圖像文件裝載是否已經(jīng)完成的情況,通常我們都將該參數(shù)置為this,即傳遞本對(duì)象的引用去實(shí)現(xiàn)這個(gè)接口。
除了將圖像文件照原樣輸出以外,drawImage( )方法的另外一種調(diào)用格式還能指定圖像顯示的區(qū)域大小:
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
這種格式比第一種格式多了兩個(gè)參數(shù)width和height,即表示圖像顯示的寬度和高度。若實(shí)際圖像的寬度和高度與這兩個(gè)參數(shù)值不一樣時(shí),Java系統(tǒng)會(huì)自動(dòng)將它進(jìn)行縮放,以適合我們所定的矩形區(qū)域。
有時(shí),我們?yōu)榱瞬皇箞D像因縮放而變形失真,可以將原圖的寬和高均按相同的比例進(jìn)行縮小或放大。那么怎樣知道原圖的大小呢?只需調(diào)用Image類中的兩個(gè)方法就可以分別得到原圖的寬度和高度。它們的調(diào)用格式如下:
int getWidth(ImageObserver observer)
int getHeight(ImageObserver observer)
同drawImage( )方法一樣,我們通常用this作為observer的參數(shù)值。
下面的程序段給出了一個(gè)顯示圖像文件的例子,其顯示結(jié)果如圖4-14所示。
import java.awt.Graphics;
import java.awt.Image;
public class Images extends java.applet.Applet{
Image img;
public void init(){
img=getImage(getCodeBase(),"man.gif");
}
public void paint(Graphics g){
int w=img.getWidth(this);
int h=img.getHeight(this);
g.drawImage(img,20,10,this); //原圖
g.drawImage(img,200,10,w/2,h/2,this); //縮小一半
g.drawImage(img,20,200,w*2,h/3,this); //寬扁圖
g.drawImage(img,350,10,w/2,h*2,this); //瘦高圖
}
}
圖4-14 顯示圖像文件
4.2.2 聲音文件的播放
對(duì)聲音媒體的直接支持可以說(shuō)是Java的一大特色,尤其是在動(dòng)畫(huà)中配上聲音效果,就可以使人在視覺(jué)上和聽(tīng)覺(jué)上均得到美的享受,那才叫過(guò)癮。Java中播放聲音文件與顯示圖像文件一樣方便,同樣只需要先將聲音文件裝載進(jìn)來(lái),然后播放就行了。
Java目前支持的聲音文件只有一種格式,那就是SUN公司的AU格式(.AU文件),也稱為u-law格式。由于AU格式的聲音僅有8KHz的采樣頻率且不支持立體聲效果,所以音質(zhì)不算太好。唯一的好處就是AU聲音文件的尺寸比其它格式小,有利于網(wǎng)上傳輸。一般,我們較熟悉的大都是WAV格式的聲音文件,因此必須先將它們轉(zhuǎn)換為AU格式(可以選用Goldwave軟件來(lái)進(jìn)行這種格式轉(zhuǎn)換)。
聲音文件準(zhǔn)備好以后,就可以考慮將它裝載進(jìn)來(lái)并播放。在Applet類中提供的play( )方法可以將聲音文件的裝載與播放一并完成,其調(diào)用格式如下:
void play(URL url)
void play(URL url, String name)
可見(jiàn),play( )方法的調(diào)用格式與getImage( )方法是完全一樣的,也采用URL來(lái)定位聲音文件。例如,某聲音文件audio.au與applet文件存放在同一目錄下,可以這樣寫(xiě):
play(getCodeBase( ),"audio.au");
一旦play( )方法裝載了該聲音文件,就立即播放。如果找不到指定URL下的聲音文件,play( )方法不返回出錯(cuò)信息,只是聽(tīng)不到想聽(tīng)的聲音而已。
由于play( )方法只能將聲音播放一遍,若想循環(huán)播放某聲音作為背景音樂(lè),就需要用到功能更強(qiáng)大的AudioClip類,它能更有效地管理聲音的播放操作。因?yàn)樗欢x在java.applet程序包中,所以使用該類的話,不要忘了在程序頭部加上:
import java.applet.AudioClip;
為了得到AudioClip對(duì)象,我們可以調(diào)用Applet類中的getAudioClip( )方法。它能裝載指定URL的聲音文件,并返回一個(gè)AudioClip對(duì)象,其調(diào)用格式如下:
AudioClip getAudioClip(URL url)
AudioClip getAudioClip(URL url, String name)
得到AudioClip對(duì)象以后,就可以調(diào)用AudioClip類中所提供的各種方法來(lái)操作其中的聲音數(shù)據(jù),這些方法如表4-4所示。
如果getAudioClip( )方法沒(méi)有找到所指定的聲音文件,就會(huì)返回null值。所以,在調(diào)用表4-4中所列的方法前,應(yīng)該先檢查一下得到的AudioClip對(duì)象不是null,因?yàn)樵趎ull對(duì)象上調(diào)用上述方法將導(dǎo)致出錯(cuò)。
如果需要的話,我們還可以在applet中同時(shí)裝載幾個(gè)聲音文件來(lái)一起播放,到時(shí)候,這些聲音將混合在一起,就象二重奏一樣。另外還有一點(diǎn)要說(shuō)明的是,如果我們使用AudioClip對(duì)象的loop( )方法來(lái)重復(fù)播放背景音樂(lè)時(shí),千萬(wàn)不要忘記在適當(dāng)?shù)臅r(shí)候調(diào)用AudioClip對(duì)象的stop( )方法來(lái)結(jié)束放音,否則的話,即使用戶離開(kāi)這一Web頁(yè)面,該聲音也不會(huì)停止,這無(wú)疑將會(huì)惹惱用戶。因此,一般我們都在applet的stop( )方法中添上停止播放的代碼。
例如,下面這段程序?qū)⒉シ艃啥温曇簦欢问沁B續(xù)播放的背景音樂(lè),另一段是講話錄音。
import java.applet.AudioClip;
public class Audios extends java.applet.Applet{
AudioClip bgmusic,speak;
public void init(){
bgmusic=getAudioClip(getDocumentBase(),"space.au");
speak=getAudioClip(getDocumentBase(),"intro.au");
}
public void start(){
if(bgmusic!=null)
bgmusic.loop();
if(speak!=null)
speak.play();
}
public void stop(){
if(bgmusic!=null)
bgmusic.stop(); //關(guān)閉背景音樂(lè),切記。
}
}
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.AWTException;
import java.awt.Frame;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class bofan_2 extends JFrame implements ActionListener
{
boolean looping=false;
File file1=null;
AudioClip sound1;
AudioClip chosenClip;
private JComboBox box1=null; //歌曲列表
private JButton butbofan=null; //播放
private JButton butboxhuan=null; //循環(huán)播放
private JButton buttinzi=null; //停止
private JButton butshan=null; //上一首
private JButton butzhantin=null; //暫停
private JButton butxia=null; //下一首
private TrayIcon trayIcon;//托盤(pán)圖標(biāo)
private SystemTray systemTray;//系統(tǒng)托盤(pán)
public bofan_2()
{
this.setSize(420,400);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setLayout(null);
box1=new JComboBox();
box1.addItem("傷心太平洋");
box1.addItem("勁爆的士高");
box1.addItem("老夫少妻");
box1.addItem("愛(ài)不再來(lái)");
box1.addItem("抽身");
box1.addItem("傷心城市");
box1.addItem("二零一二");
box1.addItem("精忠報(bào)國(guó)");
box1.addItem("秋沙");
box1.addItem("吻別");
box1.addItem("音樂(lè)瘋起來(lái)");
box1.setBounds(10,20,150,20);
butbofan=new JButton("播放");
butbofan.addActionListener(this);
butbofan.setBounds(165,50,60,20);
butboxhuan=new JButton("循環(huán)播放");
butboxhuan.addActionListener(this);
butboxhuan.setBounds(230,50,90,20);
buttinzi=new JButton("停止");
buttinzi.setEnabled(false);
buttinzi.addActionListener(this);
buttinzi.setBounds(335,50,60,20);
butshan=new JButton("上一首");
butshan.addActionListener(this);
butshan.setBounds(165,90,80,20);
butzhantin=new JButton("暫停");
butzhantin.setEnabled(false);
butzhantin.addActionListener(this);
butzhantin.setBounds(250,90,60,20);
butxia=new JButton("下一首");
butxia.addActionListener(this);
butxia.setBounds(320,90,80,20);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.getContentPane().add(box1);
this.getContentPane().add(butbofan);
this.getContentPane().add(butboxhuan);
this.getContentPane().add(buttinzi);
this.getContentPane().add(butshan);
this.getContentPane().add(butzhantin);
this.getContentPane().add(butxia);
try {
UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceOfficeBlue2007LookAndFeel");
} catch (ClassNotFoundException e)
{
e.printStackTrace();
} catch (InstantiationException e)
{
e.printStackTrace();
} catch (IllegalAccessException e)
{
e.printStackTrace();
} catch (UnsupportedLookAndFeelException e)
{
e.printStackTrace();
}
setSize(450,450);
systemTray = SystemTray.getSystemTray();//獲得系統(tǒng)托盤(pán)的實(shí)例
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
try {
trayIcon = new TrayIcon(ImageIO.read(new File("004.jpg")));
systemTray.add(trayIcon);//設(shè)置托盤(pán)的圖標(biāo),0.gif與該類文件同一目錄
}
catch (IOException e1)
{
e1.printStackTrace();
}
catch (AWTException e2)
{
e2.printStackTrace();
}
this.addWindowListener(
new WindowAdapter(){
public void windowIconified(WindowEvent e)
{
dispose();//窗口最小化時(shí)dispose該窗口
}
});
trayIcon.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e){
if(e.getClickCount() == 2)//雙擊托盤(pán)窗口再現(xiàn)
setExtendedState(Frame.NORMAL);
setVisible(true);
}
});
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source== butbofan)
{
System.out.println((String) box1.getSelectedItem());
file1=new File((String) box1.getSelectedItem()+".wav");
butboxhuan.setEnabled(true);
buttinzi.setEnabled(true);
butzhantin.setEnabled(true);
butzhantin.setText("暫停");
try {
sound1 = Applet.newAudioClip(file1.toURL());
chosenClip = sound1;
} catch(OutOfMemoryError er){
System.out.println("內(nèi)存溢出");
er.printStackTrace();
} catch(Exception ex){
ex.printStackTrace();
}
chosenClip.play();
this.setTitle("正在播放"+(String) box1.getSelectedItem());
}
if (source== butboxhuan)
{
file1=new File((String) box1.getSelectedItem()+".wav");
try {
sound1 = Applet.newAudioClip(file1.toURL());
chosenClip = sound1;
} catch(OutOfMemoryError er){
System.out.println("內(nèi)存溢出");
er.printStackTrace();
} catch(Exception ex){
ex.printStackTrace();
}
looping = true;
chosenClip.loop();
butboxhuan.setEnabled(false);
buttinzi.setEnabled(true);
butzhantin.setText("暫停");
this.setTitle("正在循環(huán)播放"+(String) box1.getSelectedItem());
}
if (source== buttinzi)
{
if (looping)
{
looping = false;
chosenClip.stop();
butboxhuan.setEnabled(true);
butzhantin.setText("暫停");
} else {
chosenClip.stop();
}
buttinzi.setEnabled(false);
this.setTitle("停止播放");
}
if(source==butshan)
{
butzhantin.setText("暫停");
}
if(source==butzhantin)
{
buttinzi.setEnabled(false);
butzhantin.setText("繼續(xù)");
if(source==butzhantin)
{
butzhantin.setText("暫停");
}
}
if(source==butxia)
{
butzhantin.setText("暫停");
}
}
public static void main(String[] args)
{
bofan_2 xx=new bofan_2();
}
}
/*
可以用加載聲音文件的方法:
第一幀:mysound= new Sound();
mysound.attachSound(聲音id名字);
ptime = 0;
播放按鈕as:
on(release){
mysound.start(ptime);
}
暫停按鈕as:
on(release){
ptime = mysound.position/1000;
mysound.stop();
}
*/
這個(gè)程序只要寫(xiě)對(duì)了音樂(lè)文件的URL地址,例如:new URL("file:/C:/tmp/1/Windows Ding.wav");
就可以播放音樂(lè),除了可以播放.wav格式的音樂(lè),還可以播放.au格式的音樂(lè)。
另外,如果你不希望音樂(lè)循環(huán)播放,你可以去掉audio1.loop();這一語(yǔ)句。
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JFrame;
public class D extends JFrame{
D(){
setSize(200,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
URL codebase=null;
try {
codebase = new URL("file:/C:/tmp/1/Windows Ding.wav");
} catch (MalformedURLException e) {
e.printStackTrace();
}
AudioClip audio1=Applet.newAudioClip(codebase);
audio1.loop();
}
public static void main(String[] args) {
new D();
}
}
標(biāo)題名稱:java播放音頻代碼 html5播放音頻
文章起源:http://chinadenli.net/article18/dodjjdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、標(biāo)簽優(yōu)化、網(wǎng)站排名、網(wǎng)頁(yè)設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)