⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audioplayer.java

📁 java语言编写的语音聊天室程序
💻 JAVA
字号:
package tcpSoundCommunication;

import javax.sound.sampled.*;
import java.net.*;
import java.io.*;

/**
 * 得到声音流的类,封装一个播放器程序
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class AudioPlayer implements IAudioPlayer {
  AudioInputStream currentSound = null;
  String currentName;
  Clip clip = null;
  FloatControl gainControl, panControl;
  //载入URL声音
  public void loadAudio(URL url) throws Exception {
    currentName = url.getFile();
    currentSound = AudioSystem.getAudioInputStream(url);
    finishLoadingAudio();

  }

  //载入本地声音文件
  public void loadAudio(File file) throws Exception {
    currentName = file.getName();
    currentSound = AudioSystem.getAudioInputStream(file);
    finishLoadingAudio();
  }

  //载入流
  public void loadAudio(InputStream iStream) throws Exception {
    currentName = iStream.getClass().getName();
    if (iStream instanceof AudioInputStream) {
      System.out.println("iStream instanceof AudioInputStream");
      currentSound = (AudioInputStream) iStream;
    }
    else {
      System.out.println("AudioSystem.getAudioInputStream(iStream)");
      //若客户断开,则在此处出现异常!
      currentSound = AudioSystem.getAudioInputStream(iStream);

    }
    finishLoadingAudio();

  }

  //结束声音文件的载入
  protected void finishLoadingAudio() throws Exception {
    AudioFormat format = currentSound.getFormat();

    System.out.println("format.getEncoding:" + format.getEncoding());
    System.out.println("format.getSampleRate():" + format.getSampleRate());
    System.out.println("format.getSampleSizeInBits():" +
                       format.getSampleSizeInBits());
    System.out.println("format.getChannels():" + format.getChannels());
    System.out.println("format.getFrameSize():" + format.getFrameSize());
    System.out.println("format.getFrameRate():" + format.getFrameRate());
    System.out.println("format.isBigEndian():" + format.isBigEndian());

    DataLine.Info dlInfo = new DataLine.Info(Clip.class, format,
                                             ( (int) currentSound.
                                              getFrameLength() *
                                              format.getFrameSize()));
    clip = (Clip) AudioSystem.getLine(dlInfo);
    clip.open(currentSound);

  }

  public void play() {
    clip.start();
  }

  public void pause() {
    clip.stop();
  }

  public void stop() {
    clip.stop();
    clip.setFramePosition(0);
  }

  public void setGain(float dB) {
    gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
    gainControl.setValue(dB);
  }

  public void setPan(float pan) {
    panControl = (FloatControl) clip.getControl(FloatControl.Type.PAN);
    panControl.setValue(pan);
  }
  /*制造声音文件
  public static void createAudioFile( AudioInputStream audioInputStream, String fileName ) {
     // public static void createAudioFile( ByteArrayOutputStream outputStream,
     //   AudioFormat targetFormat, String fileName ) {
        java.util.StringTokenizer st = new java.util.StringTokenizer( fileName, "." );
        String baseName = st.nextToken();
        String extension = st.nextToken();

        // Determine output type. There appears to be a bug with:
        // AudioFileFormat.Type [] fileTypes = AudioSystem.getAudioFileTypes();
        AudioFileFormat.Type outputType = null;
        if ( extension.equalsIgnoreCase( "AU" ) )
           outputType = AudioFileFormat.Type.AU;
        else if ( extension.equalsIgnoreCase( "WAV" ) )
           outputType = AudioFileFormat.Type.WAVE;
        else if ( extension.equalsIgnoreCase( "AIFF" ) )
           outputType = AudioFileFormat.Type.AIFF;
        else if ( extension.equalsIgnoreCase( "SND" ) )
           outputType = AudioFileFormat.Type.SND;
        else {
           System.out.println( "Record could not get audio output type from file extension \"" + extension + "\"." );
           return;
        }

        try {
           AudioSystem.write( audioInputStream, outputType, new File( fileName ) );
           System.out.println( "Record wrote sound to file " + fileName );
        } catch ( IOException e ) {
           e.printStackTrace();
        }
     } // createAudioFile
   */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -