Java でサウンド再生
サウンド再生すればちょっと楽しいかなって思ってやってみた。
準備
WAV ファイルを作る
ffmpeg input.m4a output.wav
いまどきWAVファイルなんて扱ってる人は少ないだろうからメモしておく
Java でWAVファイルを使って音を鳴らす。
AudioStream を使えばぱぱっと出来る。
import java.io.*; import sun.audio.*; public class PlaySound{ public static void main( String[] args) throws Exception { String f_name = "/Users/takuya/sample.wav"; System.out.println("Hello World."); InputStream in = new FileInputStream(f_name); AudioStream as = new AudioStream(in); AudioPlayer.player.start(as); } }
これでも結構かんたんに音がなる。
コレもサンプルコードで見つけた。でもちょっとコードが古い。
import java.io.*; import sun.audio.*; import javax.sound.sampled.*; public class PlaySound{ public static void main( String[] args) throws Exception { String f_name = "/Users/takuya/sample.wav"; System.out.printf("playing %s \n", f_name); File f = new File( f_name ); AudioInputStream ais = AudioSystem.getAudioInputStream(f); AudioFormat af = ais.getFormat(); DataLine.Info info = new DataLine.Info( SourceDataLine.class, af , AudioSystem.NOT_SPECIFIED ); SourceDataLine line = (SourceDataLine) AudioSystem.getLine( info ); line.open( af , AudioSystem.NOT_SPECIFIED ); line.start(); int buff_size = 1024*3; int bytes_read = 0 ; byte[] data = new byte[buff_size]; while ( bytes_read != -1 ){ bytes_read = ais.read( data, 0, data.length ); if ( bytes_read > 0 ) { line.write(data, 0, bytes_read); } } line.drain(); line.close(); } }
参考資料
ドコから持ってきたのか忘れた。