?? audioplayer.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 + -