99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

java多彩的聲音代碼 JAVA多彩的聲音編程

java 控制臺程序怎么調用聲音文件?

在 applet 中播放聲音文件非常簡單,一般需要以下步驟:創建一個 AudioClip 對象

創新互聯專業為企業提供涪城網站建設、涪城做網站、涪城網站設計、涪城網站制作等企業網站建設、網頁設計與制作、涪城企業網站模板建站服務,10年涪城做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

裝入 .au 聲音文件到 AudioClip 對象

一次播放或者不停循環播放聲音

停止播放

下面是相應的代碼:import java.applet.*;AudioClip ac = getAudioClip(getCodeBase(), soundFile);

ac.play(); //play once

ac.stop(); //stop playing

解決這個問題的竅門是利用由 Sun 及 其JDK 提供的某些 undocumented 的特征。先看看 Sun JDK 中的文件 classes.zip (使用任何解壓工具即可),發現其中不僅包含標準的 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);如果要用一個 URL 做為聲音流的源(source),則用下面的代碼所示替換輸入流來創建聲音流:AudioStream as = new AudioStream (url.openStream());如果需要持續播放聲音文件,則要稍稍復雜一點:// Create audio stream as discussed previously.

// Create AudioData source.

AudioData data = as.getData();// Create ContinuousAudioDataStream.

ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data);// Play audio.

Java中實現播放聲音

java不支持播放mp3格式的聲間文件,你把它轉成au格式的就能播放了

可以看看下面:

Java對多媒體的支持

4.2 圖像與聲音

其它語言相比較,如果說Java對圖形和文本媒體的支持并不占明顯優勢的話,那么Java對圖像與聲音媒體的支持真可謂是技高一籌,顯示圖像與播放聲音就如同顯示一行文本一樣方便。同時,正由于在Java動畫中靈活的運用圖像和聲音媒體,才使得Web頁面更具魅力。

4.2.1 圖像文件的顯示

正如上一節所介紹的,Graphics類中確實提供了不少繪制圖形的方法,但如果用它們在applet運行過程中實時地繪制一幅較復雜的圖形(例如一條活潑可愛的小狗),就好比是在用斧頭和木塊去制造航天飛機。因此,對于復雜圖形,大部分都事先用專用的繪圖軟件繪制好,或者是用其它截取圖像的工具(如掃描儀、視效卡等)獲取圖像的數據信息,再將它們按一定的格式存入圖像文件。applet運行時,只要找到圖像文件存貯的位置,將它裝載到內存里,然后在適當的時機將它顯示在屏幕上就可以了。

1.圖像文件的裝載

Java目前所支持的圖像文件格式只有兩種,它們分別是GIF和JPEG格式(帶有.GIF、.JPG、.JPEG后綴名的文件)。因此若是其它格式的圖像文件,就先要將它們轉換為這兩種格式。能轉換圖像格式的軟件有很多,如PhotoStyler等。

Applet類中提供了getImage( )方法用來將準備好的圖像文件裝載到applet中,但我們必須首先指明圖像文件所存貯的位置。由于Java語言是面向網絡應用的,因此文件的存貯位置并不局限于本地機器的磁盤目錄,而大部分情況是直接存取網絡中Web服務器上的圖像文件,因而,Java采用URL(Universal Resource Location,統一資源定位器)來定位圖像文件的網絡位置。因此,Java專門提供了URL類來管理URL信息(關于該類的詳細介紹見下一章)。

表示一個URL信息可分為兩種形式:

一種稱為絕對URL形式,它指明了網絡資源的全路徑名。如:

絕對URL:“”

另一種稱為相對URL形式,分別由基準URL(即base URL)再加上相對于基準URL下的相對URL這兩部分組成,例如上面的例子可表示為:

基準URL:“”

相對URL:“images/m1.gif”

現在,我們可以來看一下getImage( )方法的調用格式了:

Image getImage(URL url)

Image getImage(URL url, String name)

我們可以發現,這兩種調用格式的返回值都是Image對象。確實,Java特別提供了java.awt.Image類來管理與圖像文件有關的信息,因此執行與圖像文件有關的操作時不要忘了import這個類。getImage( )方法的第一種調用格式只需一個URL對象作為參數,這便是絕對URL。而后一種格式則帶有兩個參數,第一個參數給出的URL對象是基準URL,第二個參數是字符串類型,它描述了相對于基準URL下的路徑和文件名信息,因此這兩個參數的內容綜合在一起就構成了一個絕對URL。例如,下面兩種寫法所返回的結果是一樣的:

Image img=getImage(new URL("");

Image img=getImage(new URL(""),"images/m1.gif");

表面看來,好象第一種調用格式較方便一些,但實際上第二種調用格式用得更普遍,因為這種格式更具靈活性。原來,Applet類中提供了兩個方法來幫助我們方便地獲取基準URL對象,它們的調用格式如下:

URL getDocumentBase( )

URL getCodeBase( )

其中getDocumentBase( )方法返回的基準URL對象代表了包含該applet的HTML文件所處的目錄,例如該文件貯存在“”中,則該方法就返回“”路徑。而getCodeBase( )方法返回的基準URL對象代表了該applet文件(.class文件)所處的目錄。它是根據HTML文件的"APPLET"標記中的CODEBASE屬性值計算出來的,若該屬性沒有設置,則同樣返回該HTML文件所處的目錄。

好了,現在我們應該可以感受到基準URL的靈活性了吧。只要我們寫下語句:

Image img = getImage(getDocumentBase( ),"images/m1.gif");

那么即使整個imgsample目錄移到別處任何地方,也可以正確裝載圖像文件,而采用對于絕對URL形式則需要重新修改applet代碼并重新編譯。

2. 圖像文件的顯示

getImage( )方法僅僅是將圖像文件從網絡上裝載進來,交由Image對象管理。那我們樣把得到的Image對象中的圖像顯示在屏幕上呢?這又要回到我們的老朋友Graphics類來了,因為Graphics類提供了一個drawImage( )方法,它能完成將Image對象中的圖像示在屏幕的特定位置上,就象顯示文本一樣方便。drawImage( )方法的調用格式如下:

boolean drawImage(Image img, int x, int y, ImageObserver observer)

其中img參數就是要顯示的Image對象。x和y參數是該圖像左上角的坐標值。observer參數則是一個ImageObserver接口(interface),它用來跟蹤圖像文件裝載是否已經完成的情況,通常我們都將該參數置為this,即傳遞本對象的引用去實現這個接口。

除了將圖像文件照原樣輸出以外,drawImage( )方法的另外一種調用格式還能指定圖像顯示的區域大?。?/p>

boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)

這種格式比第一種格式多了兩個參數width和height,即表示圖像顯示的寬度和高度。若實際圖像的寬度和高度與這兩個參數值不一樣時,Java系統會自動將它進行縮放,以適合我們所定的矩形區域。

有時,我們為了不使圖像因縮放而變形失真,可以將原圖的寬和高均按相同的比例進行縮小或放大。那么怎樣知道原圖的大小呢?只需調用Image類中的兩個方法就可以分別得到原圖的寬度和高度。它們的調用格式如下:

int getWidth(ImageObserver observer)

int getHeight(ImageObserver observer)

同drawImage( )方法一樣,我們通常用this作為observer的參數值。

下面的程序段給出了一個顯示圖像文件的例子,其顯示結果如圖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 聲音文件的播放

對聲音媒體的直接支持可以說是Java的一大特色,尤其是在動畫中配上聲音效果,就可以使人在視覺上和聽覺上均得到美的享受,那才叫過癮。Java中播放聲音文件與顯示圖像文件一樣方便,同樣只需要先將聲音文件裝載進來,然后播放就行了。

Java目前支持的聲音文件只有一種格式,那就是SUN公司的AU格式(.AU文件),也稱為u-law格式。由于AU格式的聲音僅有8KHz的采樣頻率且不支持立體聲效果,所以音質不算太好。唯一的好處就是AU聲音文件的尺寸比其它格式小,有利于網上傳輸。一般,我們較熟悉的大都是WAV格式的聲音文件,因此必須先將它們轉換為AU格式(可以選用Goldwave軟件來進行這種格式轉換)。

聲音文件準備好以后,就可以考慮將它裝載進來并播放。在Applet類中提供的play( )方法可以將聲音文件的裝載與播放一并完成,其調用格式如下:

void play(URL url)

void play(URL url, String name)

可見,play( )方法的調用格式與getImage( )方法是完全一樣的,也采用URL來定位聲音文件。例如,某聲音文件audio.au與applet文件存放在同一目錄下,可以這樣寫:

play(getCodeBase( ),"audio.au");

一旦play( )方法裝載了該聲音文件,就立即播放。如果找不到指定URL下的聲音文件,play( )方法不返回出錯信息,只是聽不到想聽的聲音而已。

由于play( )方法只能將聲音播放一遍,若想循環播放某聲音作為背景音樂,就需要用到功能更強大的AudioClip類,它能更有效地管理聲音的播放操作。因為它被定義在java.applet程序包中,所以使用該類的話,不要忘了在程序頭部加上:

import java.applet.AudioClip;

為了得到AudioClip對象,我們可以調用Applet類中的getAudioClip( )方法。它能裝載指定URL的聲音文件,并返回一個AudioClip對象,其調用格式如下:

AudioClip getAudioClip(URL url)

AudioClip getAudioClip(URL url, String name)

得到AudioClip對象以后,就可以調用AudioClip類中所提供的各種方法來操作其中的聲音數據,這些方法如表4-4所示。

如果getAudioClip( )方法沒有找到所指定的聲音文件,就會返回null值。所以,在調用表4-4中所列的方法前,應該先檢查一下得到的AudioClip對象不是null,因為在null對象上調用上述方法將導致出錯。

如果需要的話,我們還可以在applet中同時裝載幾個聲音文件來一起播放,到時候,這些聲音將混合在一起,就象二重奏一樣。另外還有一點要說明的是,如果我們使用AudioClip對象的loop( )方法來重復播放背景音樂時,千萬不要忘記在適當的時候調用AudioClip對象的stop( )方法來結束放音,否則的話,即使用戶離開這一Web頁面,該聲音也不會停止,這無疑將會惹惱用戶。因此,一般我們都在applet的stop( )方法中添上停止播放的代碼。

例如,下面這段程序將播放兩段聲音,一段是連續播放的背景音樂,另一段是講話錄音。

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(); //關閉背景音樂,切記。

}

}

懸賞20?。。AVA—怎么弄一點聲音?

這你有兩個文件 需要注意 音樂的路徑 同時Java不支持MP3 格式的音樂

但支持wav,mid,au,aif.rfm.格式

第一個 sound.java

代碼如下

import java.applet.*;

public class sound extends Applet{

AudioClip ac;

public void init(){

ac=getAudioClip(getCodeBase(),"音樂名稱.wav");

}

public void start(){

ac.loop();

}

public void stop(){

ac.stop();

}

}

第二個文件 sound.html

html

body

applet code="sound.class" height=500 width=500

/applet

/body

/html

java關于播放聲音的代碼的解釋

playCycle(String s)這個是單曲重復播放;play(String s)這個是單曲播放。

/******* part one start *******/

//獲取媒體文件流

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();

/******* part one end *******/

/******* part two start ********/

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();

/******* part two end********/

跪求java 音樂播放的代碼啊,完美運行的就行

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; //循環播放

private JButton buttinzi=null; //停止

private JButton butshan=null; //上一首

private JButton butzhantin=null; //暫停

private JButton butxia=null; //下一首

private TrayIcon trayIcon;//托盤圖標

private SystemTray systemTray;//系統托盤

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("愛不再來");

box1.addItem("抽身");

box1.addItem("傷心城市");

box1.addItem("二零一二");

box1.addItem("精忠報國");

box1.addItem("秋沙");

box1.addItem("吻別");

box1.addItem("音樂瘋起來");

box1.setBounds(10,20,150,20);

butbofan=new JButton("播放");

butbofan.addActionListener(this);

butbofan.setBounds(165,50,60,20);

butboxhuan=new JButton("循環播放");

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();//獲得系統托盤的實例

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

try {

trayIcon = new TrayIcon(ImageIO.read(new File("004.jpg")));

systemTray.add(trayIcon);//設置托盤的圖標,0.gif與該類文件同一目錄

}

catch (IOException e1)

{

e1.printStackTrace();

}

catch (AWTException e2)

{

e2.printStackTrace();

}

this.addWindowListener(

new WindowAdapter(){

public void windowIconified(WindowEvent e)

{

dispose();//窗口最小化時dispose該窗口

}

});

trayIcon.addMouseListener(new MouseAdapter()

{

public void mouseClicked(MouseEvent e){

if(e.getClickCount() == 2)//雙擊托盤窗口再現

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("內存溢出");

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("內存溢出");

er.printStackTrace();

} catch(Exception ex){

ex.printStackTrace();

}

looping = true;

chosenClip.loop();

butboxhuan.setEnabled(false);

buttinzi.setEnabled(true);

butzhantin.setText("暫停");

this.setTitle("正在循環播放"+(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("繼續");

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();

}

*/

網站名稱:java多彩的聲音代碼 JAVA多彩的聲音編程
分享鏈接:http://www.yijiale78.com/article32/hhcgpc.html

成都網站建設公司_創新互聯,為您提供網站排名域名注冊、網站內鏈、網頁設計公司、云服務器、用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

營銷型網站建設