package com.reconize;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineEvent;
import javax.sound.sampled.LineListener;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;
public class recorder extends Thread implements LineListener{
static TargetDataLine m_targetdataline;
static AudioFileFormat.Type m_targetType;
static AudioInputStream m_audioInputStream;
static String Filename = "input.wav";
static File m_outputFile;
static ByteArrayOutputStream bos = new ByteArrayOutputStream();
static byte[] buf = new byte[2048];
static boolean m_bRecording;
public recorder(TargetDataLine line,
AudioFileFormat.Type targetType, File file) {
m_targetdataline = line;
m_audioInputStream = new AudioInputStream(line);
m_targetType = targetType;
if(file.exists())
file.delete();
m_outputFile = file;
}
public static void AudioRecorder() {
File outputFile = new File(Filename);
if(outputFile.exists())
outputFile.delete();
AudioFormat audioFormat = null;
audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED, 16000F,
8, 1, 1, 16000F, false);
DataLine.Info info = new DataLine.Info(TargetDataLine.class,
audioFormat);
TargetDataLine targetDataLine = null;
try {
targetDataLine = (TargetDataLine) AudioSystem.getLine(info);
targetDataLine.open(audioFormat);// try{ }可能發生例外的敘述
} catch (LineUnavailableException e)// catch{ }處理方法
{
//System.out.println("無法錄音,錄音失敗 ");
e.printStackTrace();
System.exit(-1);
}
AudioFileFormat.Type targetType = AudioFileFormat.Type.WAVE;
recorder recorder = null;
recorder = new recorder(targetDataLine, targetType,
outputFile);
recorder.start();
}
public void start() {
m_targetdataline.start();
m_targetdataline.addLineListener(this);
super.start();
System.out.println("recording...");
}
public static void stopRecording() {
m_targetdataline.stop();
m_targetdataline.close();
m_bRecording = false;
System.out.println("stopped.");
}
public void run() {
try {
AudioSystem.write(m_audioInputStream, m_targetType,
m_outputFile);
System.out.println("after write() ");
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void update(LineEvent event) {
int value = 0;
for(int i=0;i<buf.length;i++)
value+=buf[i];
System.out.println(value);
}
}
java 录音机
最新推荐文章于 2024-11-04 23:38:55 发布