zoukankan      html  css  js  c++  java
  • 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   是没有问题的。
  • 相关阅读:
    java基础之分辨final,static, abstract
    HTML DOM
    Zero Copy-转载201604
    Zero Copy
    java 虚拟机
    Spring Junit4
    【转】Java的序列化和反序列化总结
    【转】SQL Server 查询处理中的各个阶段(SQL执行顺序)
    【转】linux sar命令详解
    【转】linux top命令详解
  • 原文地址:https://www.cnblogs.com/xianghang123/p/1705346.html
Copyright © 2011-2022 走看看