java swing 播放聲音

來源:互聯網
上載者:User

一 在Applet中播放聲音

 

播放聲音是java對多媒體的支援一個重要部分.

現今流行的聲音格式有wav,mid,au為副檔名的音效檔。

而java現主要支援以au為名的聲音。

在Applet中專門提供了類AudioClip來對聲音的支援。

由於Applet的多媒體功能書上都有很清晰的介紹也很簡單。

我們就以一個例子來結束這部分的說明。

 1 import java.applet.*; 2 public class sounda extends Applet 3 { 4 public static void main (String[] args) 5 { 6 AudioClip ac = getAudioClip(getCodeBase(), "sloop.au"); 7 ac.play(); 8 // ac.loop(); 9 // ac.stop();10 }11 }

上面例子只是很簡單的說明,AudioClip是java中播放類。

java中提供了兩個很有用的方法getCodeBase(),

getDocumentBase()他們分別返回Applet本身和包含此Applet首頁的URL地址.

上面的sloop.au即我機器上的音效檔。

我們在此直接使用了AudioClip的play方法來播放聲音。

大家可測試用Applet的映像功能加入按鈕。

 

二 java應用程式中的聲音播放

 

由於在應用程式並不支援AudioClip類。

所以播放音效檔成了一大難題。

製做自己的java播放器或應用媒體方面的java應用程式我們就不能支援聲音了嗎?

不是的,

sun公司為應用程式中的聲音支援另提供了一個java新包。

sun.audio在這個包下面提供了大部分所需要的聲音處理類。

註:sun包下面還有很多很有意思的支援人員,

如java2D,Tools等,

大家可自己嘗試去使用。

下面我們就來做個自己的聲音播放測試

 1 import sun.audio.*; 2 import java.io.*; 3 public class Sound  4 { 5 public static voie main(String args[]) 6 { 7 try { 8 FileInputStream fileau=new  FileInputStream("sloop.au"); 9 AudioStream as=new AudioStream(fileau);10 AudioPlayer.player.start(as);11 }12 catch (Exception e) {}13 }14 }

 

註:上面兩例都沒有提供相應的stop方法,

本文章指在方法的嘗試,

並非全面文章,

但上面的例子都是可用的。

 

三 javaX中Sound包的應用

 

當我在進行上面的測試過程中,

我發現javaX目錄下也提供了一個sound包對java聲音的強大支援,

並且在sun網站的jjse上可下載到相關的大量例子程式.

有志於聲音處理方向的朋友可下載試試,

現在關於如何 在Java Applet(Applet)中播放音樂以供人邊瀏覽頁面邊欣賞的介紹已經很多了,

但對如何在應用程式(Application)中放音樂的介紹還很少,

下面我就逐步地講解一下如何?。

Jun 當 前 的Java Development Kit 版本1.1.3 並不正式支援在Application 中放音樂檔案,

但這依然是可以實現的。

首先讓我們複習一下在Applet中放音樂的四個步驟,

代碼如下:

import java.applet.*;AudioClip ac=getAudioClip (getCodeBase(), File); // 創 建Audioclip 對 象 並 裝 入.au 文 件ac.play(); // 播 放 一 次ac.stop(); // 停 止 播 放 ac.loop(); // 循 環 播 放

大家可能認為此代碼在Application 中也能使用,

但不幸的是它在編譯時間就會發生錯誤。

因為AudioClip 對象(object)和getAudioClip() 方法(method)都是屬 於java.applet 包的-- 它在Application 中無法調用。

解決問題的辦法使用一些Sun 在JDK中發布但未正式註明(undocumented)的特點。

用Winzip 或Zip觀察一下class.zip檔案就會發現除了java.applet 包中包含對音效檔處理外,

在/sun/audio目錄下的sun.audio包也提供類似的方法。

下面是實現代碼和注釋:

import sun.audio.*; // 引 入sun.audio 包import java.io.*;InputStream in = new FileInputStream (Filename); // 打 開 一 個 聲 音 文 件 流 作 為 輸 入AudioStream as = new AudioStream (in); // 用 輸 入 流 創 建 一 個AudioStream 對 象 AudioPlayer.player.start (as); //“player” 是AudioPlayer 中 一 靜 態 成 員 用 於 控 制 播 放 AudioPlayer.player.stop (as);

 

當需從網上下載檔案播放時,用以下代碼開啟音樂檔案網址:

AudioStream as = new AudioStream (url.openStream());

播放一個持續的聲音流就複雜一些了:

首先如上建立聲音流;

AudioData data = as.getData (); // 創 建AudioData 源 ContinuousAudioDataStream cas = new ContinuousAudioDataStream (data); AudioPlayer.player.play (cas); // 放 音 AudioPlayer.player.stop (cas); // 停 止

完 成 了 ! 因為以上程式使用了未公開的特性,所以不能保證它能在除了目前的版本的Sun JDK以外的編譯器上運行。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.