« 淘汰 | メイン | 探してます »

Tips

JavaでMP3レコーディング

SoundEncodMP3.class : OSの録音デバイスから10秒間録音し test.mp3 に保存する。
■必要なファイル
 ●tritonus_mp3.jar
 ●tritonus_share.jar
  http://www.tritonus.org/plugins.html
  zipファイルのままでもかまわない

 ●lametritonus.dll
  http://www.tritonus.org/plugins.html
  tritonus-mp3enc-2001-04-25.zip に含まれる

 ●lame_enc.dll (LAME 3.96.1 2004-09-14)
  http://www.rarewares.org/mp3.html
  lame3.96.1.zip に含まれる

■動作確認環境
 OS:Windows XP pro SP2、Windows 2000 pro SP6
 JRE:1.4.2_05
 コンパイル:javac -classpath .;tritonus_mp3.zip;tritonus_share.zip SoundEncodMP3.java
 実行:java -cp .;tritonus_mp3.zip;tritonus_share.zip SoundEncodMP3

■ファイル名 : SoundEncodMP3.java
public class SoundEncodMP3 extends Thread
{
    private javax.sound.sampled.AudioInputStream audioInputStream;
    private javax.sound.sampled.AudioFileFormat.Type type;
    private java.io.File file;
    
    private SoundEncodMP3(
        javax.sound.sampled.AudioInputStream audioInputStream,
        javax.sound.sampled.AudioFileFormat.Type type,
        java.io.File file )
    {
        this.audioInputStream = audioInputStream;
        this.type = type;
        this.file = file;
    }
    
    public void run()
    {
        try{
            javax.sound.sampled.AudioSystem.write( audioInputStream, type, file );
        }catch( Exception exception ){
            exception.printStackTrace( System.err );
        }
    }
    
    public static void main( String[] args )
    {
        final javax.sound.sampled.AudioFormat.Encoding AudioFormat_Encoding_MPEG1L3 =
            org.tritonus.share.sampled.Encodings.getEncoding( "MPEG1L3" );
        final javax.sound.sampled.AudioFileFormat.Type AudioFileFormat_Type_MP3 =
            org.tritonus.share.sampled.AudioFileTypes.getType( "MP3", "mp3" );
        javax.sound.sampled.TargetDataLine targetDataLine = null;
        
        try{
            javax.sound.sampled.AudioFormat audioFormat =
                new javax.sound.sampled.AudioFormat(
                    48000.0F, 16, 2, true, true );
            
            targetDataLine =
                (javax.sound.sampled.TargetDataLine)javax.sound.sampled.AudioSystem.getLine(
                    new javax.sound.sampled.DataLine.Info(
                        javax.sound.sampled.TargetDataLine.class,
                        audioFormat )
                );
            
            targetDataLine.open();
            targetDataLine.start();
            
            javax.sound.sampled.AudioInputStream audioInputStreamPlay =
                new javax.sound.sampled.AudioInputStream( targetDataLine );
            javax.sound.sampled.AudioInputStream audioInputStreamRec =
                javax.sound.sampled.AudioSystem.getAudioInputStream(
                    AudioFormat_Encoding_MPEG1L3,
                    audioInputStreamPlay );
            SoundEncodMP3 recorder = new SoundEncodMP3(
                audioInputStreamRec,
                AudioFileFormat_Type_MP3,
                new java.io.File( "test.mp3" ) );
            
            recorder.start();
            Thread.sleep( 10000 );
            
            targetDataLine.stop();
            recorder.join();
        }catch( Exception exception ){
            exception.printStackTrace( System.err );
            System.exit( 1 );
        }finally{
            if( null != targetDataLine )
                targetDataLine.close();
            System.exit( 0 );
        }
    }
}

トラックバック

このエントリーのトラックバックURL:
http://www.remix.asia/cgi/mt/mt-tb.cgi/535

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)