feat: add audio
This commit is contained in:
44
app/src/main/java/chess/view/audio/AudioPlayer.java
Normal file
44
app/src/main/java/chess/view/audio/AudioPlayer.java
Normal file
@@ -0,0 +1,44 @@
|
||||
package chess.view.audio;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
import javax.sound.sampled.AudioFormat;
|
||||
import javax.sound.sampled.AudioInputStream;
|
||||
import javax.sound.sampled.AudioSystem;
|
||||
import javax.sound.sampled.Clip;
|
||||
|
||||
public class AudioPlayer {
|
||||
public static void playSound(InputStream audio) {
|
||||
new Thread(new Runnable() {
|
||||
// The wrapper thread is unnecessary, unless it blocks on the
|
||||
// Clip finishing; see comments.
|
||||
public void run() {
|
||||
try {
|
||||
Clip clip = AudioSystem.getClip();
|
||||
BufferedInputStream bufferedInputStream = new BufferedInputStream(audio);
|
||||
AudioInputStream inputStream = AudioSystem.getAudioInputStream(bufferedInputStream);
|
||||
clip.open(inputStream);
|
||||
clip.start();
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}
|
||||
|
||||
private static AudioInputStream convertToPCM(AudioInputStream audioInputStream) {
|
||||
AudioFormat m_format = audioInputStream.getFormat();
|
||||
|
||||
if ((m_format.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) &&
|
||||
(m_format.getEncoding() != AudioFormat.Encoding.PCM_UNSIGNED)) {
|
||||
AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
|
||||
m_format.getSampleRate(), 16,
|
||||
m_format.getChannels(), m_format.getChannels() * 2,
|
||||
m_format.getSampleRate(), m_format.isBigEndian());
|
||||
audioInputStream = AudioSystem.getAudioInputStream(targetFormat, audioInputStream);
|
||||
}
|
||||
|
||||
return audioInputStream;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user