2012-05-18 1 views
4

일부 음향 효과를 추가하려는 Java 기반 게임을 만들고 있습니다. 나는 혼란스럽고 혼란스러워했다. 저는 코딩이 파일 형식과 형식이 다른 것을 알고 있습니다. 나는 약간의 소리가 필요하다 - 어떤 형식이든 상관 없다. 가장 쉬운 파일 형식을 제안 해주세요. 코드 스 니펫은 매우 유용합니다.자바에 어떤 오디오 포맷을 사용해야합니까?

음향 효과를 제공하는 가장 쉬운 형식 및 방법은 무엇입니까?

답변

12

짧은 소리는 WAV 또는 AU, WAV는 작은 소리의 가장 잘 알려진 형식입니다. 방금이 작은 프로그램을 마쳤습니다. 할 일이 있다면 .wav 사운드가 있어야합니다.

이 프로그램은 버튼이있는 창을 생성하고 버튼을 누를 때마다 지정된 사운드가 재생됩니다. 당신은 항상 .AU 파일을 포함하여 다른 소리에 대해 "click.wav"를 변경할 수 있습니다

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.IOException; 
import java.net.URL; 

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 javax.swing.JButton; 
import javax.swing.JFrame; 

public class PlaySound extends JFrame{ 

    private Clip clip; 

    public static void main(String [] args) { 

     PlaySound app = new PlaySound(); 

    } 

    public PlaySound() { 
     JButton play = new JButton("Play");//here we make the button 
     play.addActionListener(new ActionListener() {//here we tell what the button will do 
     public void actionPerformed(ActionEvent e) { 
      playTheSound();//when its clicked call this method 
     } 
    }); 

    this.add(play); 
    this.pack(); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setVisible(true); 
} 

private void SoundEffect(URL url) { 
    try { 
     // Set up an audio input stream piped from the sound file. 
     AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(url); 
     // Get a clip resource. 
     clip = AudioSystem.getClip(); 
     // Open audio clip and load samples from the audio input stream. 
     clip.open(audioInputStream); 
    } catch (UnsupportedAudioFileException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (LineUnavailableException e) { 
     e.printStackTrace(); 
    } 
} 

// Play or Re-play the sound effect from the beginning, by rewinding. 
public void playTheSound() { 

    URL url = getClass().getResource("click.wav");//You can change this to whatever other sound you have 
    SoundEffect(url);//this method will load the sound 

    if (clip.isRunning()) 
     clip.stop(); // Stop the player if it is still running 
    clip.setFramePosition(0); // rewind to the beginning 
    clip.start();  // Start playing 

    } 

} 

.

3

오디오 파일 형식은 모두 필요한 항목에 따라 다릅니다. MIDI 파일은 음표 등을 사용하기 때문에 단순한 배경 음악에 적합하지만 MIDI 파일은 폭발음, 총격 등의 특정 소리를 만들 수 없습니다. MIDI를 악기 용 음악으로 생각하십시오. 음향 효과에는 사용되지 않습니다. 이것은 WAV 나 MP3 파일이 재생되는 곳입니다. 어떤 소리를 재생할 수있는 웨이브로 사운드를 재생하기 때문입니다. 그들은 더 큰 파일 (WAV 비 압축 그래서 더 큰)이지만 그들은 종종 음향 효과에 사용됩니다. 다른 형식으로도 사용할 수 있습니다. 검색 만하면됩니다. 사용하기 쉬운 사운드 포맷을 기반으로해서는 안되며, 실제로 정확히 무엇을 사용하고 있는지 (음악 대 음향 효과 등)에 달려 있습니다.

4

Java는 다양한 사운드 포맷을 지원합니다. 방금 (기본 효과 괜찮습니다) 기본 자바 사운드 API를 사용하는 경우

는, 그 다음은 오라클 자주 묻는 질문에서 유용 할 수 있습니다

어떤 오디오 포맷 자바 사운드를 지원합니까?
Java Sound는 AIFF, AU 및 WAV와 같은 오디오 파일 형식을 지원합니다. 또한 다음과 같은 MIDI 기반의 노래 파일 형식을 지원합니다. SMF 유형 0 (표준 MIDI 파일, .ma 파일), SMF 유형 1 및 RMF.

나는 AU와 WAV를 모두 성공적으로 사용했습니다.

8

as mikera & Basilio 독일어 참고 사항, AU & WAV는 게임에서 사용되는 짧은 음향 효과에 좋은 ​​선택입니다. 현재의 JRE는 AudioSystem.getAudioFileTypes()에 의해 반환 된 타입을 지원하지만, 나는이 둘 중 하나를 고수 할 것이다.

Clip 클래스는 사운드 바이트를로드하고 재생하는 쉬운 방법을 제공합니다.

예로서, 다음은 Java Sound info. page의 예입니다.

import java.net.URL; 
import javax.swing.*; 
import javax.sound.sampled.*; 

public class LoopSound { 

    public static void main(String[] args) throws Exception { 
     URL url = new URL(
      "http://pscode.org/media/leftright.wav"); 
     Clip clip = AudioSystem.getClip(); 
     // getAudioInputStream() also accepts a File or InputStream 
     AudioInputStream ais = AudioSystem. 
      getAudioInputStream(url); 
     clip.open(ais); 
     // loop continuously 
     clip.loop(-1); 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       // A GUI element to prevent the Clip's daemon Thread 
       // from terminating at the end of the main() 
       JOptionPane.showMessageDialog(null, "Close to exit!"); 
      } 
     }); 
    } 
} 
+0

잘 일하면서 고맙습니다. 나는 그것을 공부할 것입니다. –

0

작은 짧은 음향 효과에는 Clip 클래스를 사용하고 .Wav 또는 .Au를 사용할 수 있습니다. mp3 음악을 재생하려는 경우 javazoom과 같은 mp3 Java 라이브러리를 항상 사용할 수 있습니다.