Какой аудиоформат я должен использовать для Java?
Я делаю игру на основе Java, для которой хочу добавить несколько звуковых эффектов. Я искал и чувствовал себя более смущенным. Я знаю, что кодирование отличается от формата файла к формату. Мне просто нужны звуки - не имеет значения, какой формат. Поэтому, пожалуйста, предложите мне самый простой формат файла. Фрагмент кода будет чрезвычайно полезным.
Какой самый простой формат и способ предоставления звуковых эффектов?
5 ответов
Для коротких звуков вы должны использовать WAV или AU, WAV является наиболее известным форматом для маленьких звуков. Я только что закончил эту небольшую программу, все, что вам нужно сделать, это иметь звук.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
}
}
Вы всегда можете изменить "click.wav" для другого звука, включая файлы.au.
Как отмечают mikera & Basilio German, и AU, и WAV будут хорошим выбором для коротких звуковых эффектов, используемых в играх. Текущая JRE поддерживает типы, возвращаемые AudioSystem.getAudioFileTypes()
, но я бы придерживался одного из этих двух.
Clip
Класс предоставляет простые методы для загрузки и воспроизведения звуковых байтов.
Что касается примера, вот пример из информации о звуке Java. страница
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!");
}
});
}
}
Java поддерживает довольно широкий спектр звуковых форматов.
Если вы просто используете базовый Java Sound API (который подходит для базовых эффектов), то из FAQ по Oracle может быть полезно следующее:
Какие аудиоформаты поддерживает Java Sound?
Java Sound поддерживает следующие форматы аудио файлов: AIFF, AU и WAV. Он также поддерживает следующие форматы файлов песен на основе MIDI: SMF-тип 0 (стандартный MIDI-файл, или.mid файлы), SMF-тип 1 и RMF.
Я успешно использовал как AU, так и WAV.
Форматы файлов для аудио все в зависимости от того, что вам нужно. MIDI-файл использует ноты и тому подобное, и поэтому подходит для простой фоновой музыки, но MIDI-файл не сможет издавать специфические звуки, такие как взрывы, выстрелы, что бы это ни было. Думайте о MIDI как о музыке для музыкальных инструментов, она не используется для звуковых эффектов. Это где WAV или MP3-файлы вступают в игру, так как они воспроизводят звук как волну, они действительно могут воспроизводить любой звук. Это большие файлы (несжатый WAV, поэтому еще больше), но они часто используются для звуковых эффектов. Есть и другие форматы, которые можно использовать, просто искать вокруг. Вы не должны основывать звуковой формат на том, что проще всего использовать, это действительно зависит от того, для чего именно вы его используете (музыка против звуковых эффектов и т. Д.).
Вы можете использовать класс Clip и использовать.Wav или.Au для небольших коротких звуковых эффектов. однако, если вы пытаетесь воспроизвести музыку в формате mp3, вы всегда можете использовать java-библиотеку mp3, например, javazoom.