ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 에플리케이션에서 사운드 이용하기
    개발 2007. 9. 28. 10:12

    애프릿에서 사운드를 사용하는 방법은 애플리케이션보다 간단하고 사용하기도 쉬우며 자료도 많이 있는 것 같습니다.
    애플리케이션에서 사운드를 찾기 위해 여러사이트를 찾아봤지만 역시 가장 좋은 사이트는 JAVA API이군요.
    모르는 영어 재해석해가며 방법을 찾았는데 다시 적으려니 원문해석이 어려워(ㅡㅡ;) 다시 글을 올리지 못함을 양해바랍니다.
    원문 및 자세한 내용은 http://java.sun.com/docs/books/tutorial/sound/index.html 를 참고하시기 바랍니다.

    import javax.sound.sampled;

    public class SoundTest
    {
        public void play()
        {
            AudioInputStream au = null;
            AudioFormat format = null;
            File file = new File("C:\\sample.wav");

                try {
                    au = AudioSystem.getAudioInputStream(file);
                    format = au.getFormat();
                } catch (UnsupportedAudioFileException ex) {
                    ex.printStackTrace();
                    return;
                } catch (IOException ex) {
                    ex.printStackTrace();
                    return;
                }

                SourceDataLine line = null;
                DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

                if(AudioSystem.isLineSupported(info))
                {
                    try {
                        line = (SourceDataLine)AudioSystem.getLine(info);
                        line.open(format);
                        line.start();

                        int total = 0, red = 0;
                        byte[] bytes = new byte[4096];
                        while((red = au.read(bytes, 0, bytes.length)) > -1)
                        {
                            line.write(bytes, 0, red);
                        }
                        line.flush();
                        line.drain();
                        line.stop();
                    } catch (IOException ex){
                      ex.printStackTrace();
                    } catch (LineUnavailableException ex) {
                        ex.printStackTrace();
                    }
                }
                else
                    System.out.print("Liner Not Supported!");   
                }
       }
    }

    대략 설명을 하자면 파일로부터 오디오 스트림을 얻어내서 라인에다 쏴주면 소리가 나는 방식입니다.
    시스템으로부터 라인을 얻어내는 방법은 두 가지인데 하나는 믹서를 통해 얻어내는 방법과
    시스템에서 그냥 가져오는 방법입니다.
    위의 방법은 시스템에서 그냥 가져오는 방법입니다.
    물론 시스템에서 라인을 제공하지 않으면 소리는 나지 않겠죠.

    반응형

    댓글

Designed by Tistory.