1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| package com.javasrc.audio;
import javax.sound.sampled.*;
import java.io.File;
public class Recorder extends Thread {
private TargetDataLine line;
private AudioFileFormat.Type targetType = AudioFileFormat.Type.WAVE;
private AudioInputStream imputStream;
private File file;
public Recorder( String outputFilename){
try{
AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100.0F, 16, 2, 4, 44100.0F, false);
DataLine.Info info = new DataLine.Info( TargetDataLine.class, audioFormat);
this.line = ( TargetDataLine ) AudioSystem.getLine( info);
this.line.open( audioFormat);
this.imputStream = new AudioInputStream( this.line);
this.file = new File( outputFilename);
}
catch(Exception e){
e.printStackTrace();
}
}
public void startRecording(){
this.line.start();
start();
}
public void stopRecording(){
this.line.stop();
this.line.close();
}
public void run(){
try
{
AudioSystem.write(this.imputStream, this.targetType, this.file );
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main( String[] args ){
if( args.length == 0){
System.out.println( "Usage: Recorder <filename>" ) ;
// System.exit( 0 );
}
try{
Recorder r = new Recorder( args[ 0 ] );
System.out.println( "Press ENTER to start recording" );
System.in.read();
r.startRecording();
System.out.println( "Press ENTER to stop recording" );
System.in.read();
r.stopRecording();
System.out.println( "Recording complete" );
}
catch( Exception e )
{
e.printStackTrace();
}
}
} |
Partager