JAVA的聲音處理
   
  數字音頻格式有很多種,其質量與採樣頻率和採樣精度兩個參數有關。頻率的表示單位為赫茲〔Hz〕,它表示每秒採樣次數。採樣頻率越高,音質就越好。採 樣精度為每次採樣所存儲的數據數量,它決定每個數字信號所能夠表示的離散振幅的數量。存儲每個樣本的數據越多,音質就越好。但是高品質的聲音需要佔用大量 的內存和磁盤空間。考慮到網絡帶寬,在Internet連接上傳輸就需要花費很長的時間。對於Applet來說,保證聲音文件的最小化是極為重要的。

   
Java能夠支持以下四種聲音格式:
   
◆AU
◆AIFF
◆WAVE
◆MIDI

  第一種聲音格式AU為以前的Java 1.1版本支持的唯一的聲音格式。採樣頻率為8000赫茲,採樣精度為8位。AIFF和WAVE與AU格式一樣,都用來表示數字化的聲音。其中,WAVE 格式提供了更寬範圍的音質。MIDI格式專用於音樂,並且以音符與樂器而不是數字化的聲音來描述聲音的。

  關於聲音的創建:聲音關鍵工具為Windows9X中的標準應用程序—錄音機。錄製的格式為WAVE。另外還有很多專業水準的應用程序,採樣和編輯數字化的聲音,及格式的轉換。

   
資源需求:
   
■ 硬件資源需求:
1聲卡
2音箱
#如需要錄製聲音,這還需麥克風。

■ 軟件資源需求:
1windows9X操作系統
2網絡瀏覽器
3Java插件/運行時間環境

   
處理方案一
   
  JAVA2開始,爪哇語言能夠支持上述四種聲音格式。簡單的方法為在java中通過Applet類的AudioClip()接口來裝載聲音。該接口風鑽了有關聲音片斷的常用方法,具有對播放聲音片斷的最小支持。

該接口定義了如下方法:
■ play()
語法:void play()
功能:開始播放聲音片斷。
不論聲音片斷是否已經在播放,都從頭播放。播放一遍但不重複。

■ loop()
語法:void loop()
功能:循環播放聲音片斷。
調用該方法是不論聲音片斷是否已在播放,都從頭開始播放。

■ stop()
語法:void stop()
功能:停止播放聲音片斷。
AudioClip接口可以通過getAudioClip()及getCodeBase()方法來獲取聲音片斷及
URL地址。可以利用此方法在WEB頁中播放指定的聲音片斷。
#需求:基於JDK1.2以上版本的開發環境。如果只播放AU格式的聲音文件,JDK1.1就可。

  
處理方案二
   
  利用JAVA媒體框架中的Sound API來處理聲音片斷。Sound API 被包含在SUN公司的JAVA媒體框架中,也包含在JDK1.3版本中。編譯源代碼需要支持JDK1.3的開發環境和運行時間環境。

  可以利用Sound API在網頁中加入Applet的方式達到要求。但瀏覽器需要通過Java插件或運行時間環境的支持。

Sound API主要包括以下四部分:

Packages
javax.sound.midi 提供MIDI (Musical Instrument Digital Interface)的I/O、
序列、合成的接口和類。
javax.sound.midi.spi Supplies interfaces for service providers to impl
ement when offering new MIDI devices, MIDI file readers and writers, o
r sound bank readers.
javax.sound.sampled 為採樣數字音頻的捕獲、處理、重放提供接口和類。
javax.sound.sampled.spi Supplies abstract classes for service provider
s to subclass when offering new audio devices, sound file readers and
writers, or audio format converters.


   
處理方案三
   
  利用JAVA 3D中的sound類。該類似聲音資源的抽像定義。每一個具體的聲音對象都可以應用sound的方法。

Sound類的類關係如下:
java.lang.Object
+-javax.media.j3d.SceneGraphObject
+-javax.media.j3d.Node
+-javax.media.j3d.Leaf
+-javax.media.j3d.Sound

sound類的子類有:
⒈BackgroundSound
⒉PointSound
⒊ConeSound

使用上述三種聲音的步驟如下:

⒈定義並生成一個MediaContainer對象,同時提供對像所需要的聲音文件,通常
要單獨設置一個存放AU/WAV聲音文件的目錄。

⒉定義一個BackgroundSound/ PointSound/ ConeSound對象,根據需要,設置聲
音的是否循環、強度大小等參數,設置它的作用範圍並setEnable用使其開始作用。

⒊根據具體的對象設置坐標系。
#JAVA 3D應用程序只能播放au/wav格式的聲音文件。不能播放midi文件。

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()