日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
java中播放聲音代碼,java 播放聲音

如何在java應(yīng)用程序中播放音頻文件

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

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的果洛州網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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

一次播放或者不停循環(huán)播放聲音

停止播放

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

ac.play(); //play once

ac.stop(); //stop playing

解決這個(gè)問題的竅門是利用由 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),則用下面的代碼所示替換輸入流來創(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.

java關(guān)于播放聲音的代碼的解釋

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

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

//獲取媒體文件流

AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));

//獲取文件格式

AudioFormat aif = ais.getFormat();

//這個(gè)類不知道是什么,沒用過,在這里應(yīng)該是對媒體流處理的一個(gè)類

SourceDataLine sdl = null;

//這個(gè)貌似通過媒體格式,獲取媒體文件的信息

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];

//媒體工具類(播放器類)對媒體流進(jìn)行寫入處理,此時(shí)應(yīng)該會有音樂響起吧

while(nByte != -1){

nByte = ais.read(buffer,0,128);

if(nByte = 0){

int oByte = sdl.write(buffer, 0, nByte);

//System.out.println(oByte);

}

}

//媒體流結(jié)束,并關(guān)閉這個(gè)媒體工具類

sdl.stop();

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

java如何播放聲音

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

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

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

void play(URL url)

void play(URL url, String name)

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

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

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

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

import java.applet.AudioClip;

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

AudioClip getAudioClip(URL url)

AudioClip getAudioClip(URL url, String name)

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

如果getAudioClip( )方法沒有找到所指定的聲音文件,就會返回null值。所以,在調(diào)用表4-4中所列的方法前,應(yīng)該先檢查一下得到的AudioClip對象不是null,因?yàn)樵趎ull對象上調(diào)用上述方法將導(dǎo)致出錯(cuò)。

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

例如,下面這段程序?qū)⒉シ艃啥温曇簦欢问沁B續(xù)播放的背景音樂,另一段是講話錄音。

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

}

}

package com.hongyuan.test;

import java.io.File;

import java.io.IOException;

import javax.sound.sampled.AudioFormat;

import

javax.sound.sampled.AudioInputStream;

import

javax.sound.sampled.AudioSystem;

import

javax.sound.sampled.DataLine;

import

javax.sound.sampled.LineUnavailableException;

import

javax.sound.sampled.SourceDataLine;

import

javax.sound.sampled.UnsupportedAudioFileException;

public class MusicTest {

public static final String MUSIC_FILE = "相逢一笑.wav";

public static void main(String[] args) throws

LineUnavailableException,

UnsupportedAudioFileException, IOException {

// 獲取音頻輸入流

AudioInputStream audioInputStream =

AudioSystem

.getAudioInputStream(new File(MUSIC_FILE));

//

獲取音頻編碼對象

AudioFormat audioFormat = audioInputStream.getFormat();

// 設(shè)置數(shù)據(jù)輸入

DataLine.Info dataLineInfo = new

DataLine.Info(SourceDataLine.class,

audioFormat,

AudioSystem.NOT_SPECIFIED);

SourceDataLine sourceDataLine =

(SourceDataLine)

AudioSystem

.getLine(dataLineInfo);

sourceDataLine.open(audioFormat);

sourceDataLine.start();

/*

* 從輸入流中讀取數(shù)據(jù)發(fā)送到混音器

*/

int count;

byte tempBuffer[]

= new byte[1024];

while ((count = audioInputStream.read(tempBuffer, 0,

tempBuffer.length)) != -1) {

if (count 0)

{

sourceDataLine.write(tempBuffer, 0, count);

}

}

//

清空數(shù)據(jù)緩沖,并關(guān)閉輸入

sourceDataLine.drain();

sourceDataLine.close();

}

}


本文題目:java中播放聲音代碼,java 播放聲音
標(biāo)題路徑:http://www.dlmjj.cn/article/hodjdg.html