JAVA_怎样处理波形文件( 播放 .au声音文件 url转成波形输出)

 Java   Tip   24:   如何在应用程序中播放声音文件  
  一个在   Java   应用程序中播放声音程序的   step-by-step   的向导    
   
  Chong   Ser   Wah    
  John   D.   Mitchell    
  简介  
  现有的在   Java   applet   中对声音播放的支持使得声音播放任务变得很简单,但是在应用程序中缺少这样的支持。此篇小技巧将告诉你如何在   Java   应用程序中播放声音文件。(650   字)    
  在   Java   应用程序中播放声音文件在现有发行的   Java   版本中都没有正式的支持,但别担心,我们还是有办法的。此篇小技巧将告诉你怎么做--我们从   applet   中播放声音文件所需的基本步骤开始讲述,然后慢慢转到讲述   Java   应用程序中的支持。    
  在   applet   中播放声音文件非常简单,一般需要以下步骤:    
   
   
  创建一个   AudioClip   对象    
  装入   .au   声音文件到   AudioClip   对象    
  一次播放或者不停循环播放声音    
  停止播放    
  下面是相应的代码:    
   
  import   java.applet.*;  
   
  AudioClip   ac   =   getAudioClip(getCodeBase(),   soundFile);  
  ac.play();   //play   once  
  ac.stop();   //stop   playing  
  ac.loop();   //play   continuously  
   
   
  看起来,在   Java   应用程序中用相同的代码来播放声音文件似乎也是可行的。但很不幸,如果你真这样做,编译器就会报错。为什么呢?因为   AudioClip   对象及其方法   getAudioClip()   属于java.applet   包   --   而不属于应用程序包的。可喜的是我们还可以自己做些改变来实现声音播放功能。    
   
  解决这个问题的窍门是利用由   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.  
  AudioPlayer.player.play   (cas);  
   
  //   Similarly,   to   stop   the   audio.  
  AudioPlayer.player.stop   (cas);  
   
   
   
  现在知道怎么做了吧?别忘了,此技巧用到了没有写入文档的特征,所以它不保证在任何情况下都凑效,但用当前   SUN   的   JDK   是没有问题的。

转载于:https://www.cnblogs.com/xianghang123/archive/2010/04/06/1705346.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值