해결됨: 자바에서 소리를 재생하는 방법

마지막 업데이트 : 06/19/2023

사운드를 재생하는 방법 이 기사에서는 게임 및 멀티미디어 플레이어와 같은 다양한 애플리케이션을 구축할 때 개발자가 직면하는 일반적인 문제인 Java에서 사운드 재생에 대해 자세히 설명합니다. 단계별 솔루션에 대해 논의하고, 이 작업을 수행하는 데 필요한 라이브러리를 탐색하고, 코드에 대한 심층적인 설명을 제공합니다. 다재다능하고 사용하기 쉬운 것으로 유명한 Java에는 개발자가 응용 프로그램의 기능과 성능을 향상시키는 데 도움이 되는 다양한 라이브러리가 장착되어 있습니다. 이러한 중요한 영역 중 하나는 사운드 및 오디오 지원을 포함합니다.

자바 사운드 API 소개

Java Sound API는 모든 플랫폼에서 사운드 지원을 제공하도록 설계된 강력한 툴킷입니다. JDK(Java Development Kit)와 함께 번들로 제공되며 개발자가 다양한 형식의 오디오 파일을 재생, 녹음 및 처리할 수 있습니다. 이 기사에서는 Java Sound API의 일부인 AudioClip 및 AudioSystem 클래스를 사용하여 Java 애플리케이션에서 사운드를 재생하는 기본 사항에 중점을 둘 것입니다.

Java Sound API는 두 가지 기본 패키지로 분류할 수 있습니다. javax.sound.sampled javax.sound.midi. sampled 패키지는 오디오 데이터 재생, 녹음 및 합성과 같은 기본 오디오 기능을 처리하는 데 사용되는 반면, midi 패키지는 MIDI 기반 음악 구성 및 사운드트랙을 관리하도록 설계되었습니다.

오디오클립을 이용한 사운드 재생

먼저 다음을 사용하여 사운드 파일을 재생하는 방법을 살펴보겠습니다. 오디오클립 의 일부인 인터페이스 자바 애플릿 패키지. AudioClip 인터페이스는 처음에 애플릿용으로 만들어졌지만 여전히 Java 응용 프로그램에서 작은 오디오 파일을 재생하는 데 적합하고 유용합니다.

import java.applet.AudioClip;
import java.net.URL;
public class SoundPlayer {
    public static void main(String[] args) {
        AudioClip sound;
        URL soundURL = SoundPlayer.class.getResource("sound.wav");
        sound = java.applet.Applet.newAudioClip(soundURL);
        sound.play();
    }
}

위의 코드 스니펫에서 오디오클립 인터페이스와 URL 수업. 이 클래스를 사용하면 AudioClip 인스턴스의 play() 메서드를 사용하여 오디오 리소스를 로드하고 재생할 수 있습니다. AudioClip을 사용하려면 "sound.wav" 파일을 Java 파일과 동일한 디렉토리에 두거나 올바른 파일 경로를 제공해야 합니다.

그러나 더 큰 오디오 파일로 작업하거나 재생에 대한 보다 정교한 제어가 필요한 경우 AudioClip 인터페이스가 충분하지 않을 수 있으므로 AudioSystem 클래스 사용을 고려해야 합니다.

AudioSystem 클래스를 사용하여 사운드 재생

The 오디오 시스템 클래스는 javax.sound.sampled 패키지의 일부이며 고급 오디오 재생 기능을 제공합니다. 다음 예제에서는 AudioSystem 클래스를 사용하여 오디오 파일을 재생하는 방법을 보여줍니다.

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.File;
import java.io.IOException;

public class SoundPlayer {
    public static void main(String[] args) {
        try {
            File soundFile = new File("sound.wav");
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
            Clip clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            clip.start();

            // Keep the application running till the sound is played completely
            Thread.sleep(clip.getMicrosecondLength() / 1000);
        } catch(LineUnavailableException | UnsupportedAudioFileException | IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

이 예에서는 먼저 필요한 클래스와 인터페이스를 다음에서 가져왔습니다. javax.sound.sampled 패키지. 그런 다음 오디오 입력 스트림 파일에서 오디오 데이터를 읽는 개체 및 클립 오디오 데이터를 메모리에 보관하는 인스턴스입니다. 클립을 연 후 start() 메서드를 호출하여 사운드를 재생했습니다.

이 접근 방식은 사운드를 일시 중지, 다시 시작, 반복 및 중지하는 기능을 포함하여 오디오 재생에 대한 더 많은 제어 기능을 제공하므로 광범위한 응용 프로그램에 적합합니다.

요약하자면, AudioClip 및 AudioSystem 클래스를 사용하여 Java에서 사운드를 재생하는 두 가지 접근 방식에 대해 논의했습니다. AudioClip 인터페이스는 간단한 응용 프로그램의 작은 오디오 파일에 적합하며 AudioSystem 클래스는 보다 복잡한 시나리오를 위한 고급 오디오 재생 기능을 제공합니다. Java의 강력한 라이브러리를 활용하면 다양한 애플리케이션에서 원활한 사운드 기능과 향상된 사용자 경험을 보장할 수 있습니다.

관련 게시물: