簡體   English   中英

如何在Java中使用AudioSystem播放音樂(.mp3)?

[英]How to play Music (.mp3) in Java with AudioSystem?

我按照以下給出的類在游戲中實現聲音。

執行時,出現以下錯誤。

請有人可以告訴我為什么會出現此錯誤以及如何解決!!

這是我的聲音類文件:

package flappyLemon.model.game;

import javax.sound.sampled.*;

public class Sound {

   private Clip clip;

   public static Sound sound = new Sound("LemonTree.mp3");

   public Sound(String fileName) {
         try {
                AudioInputStream ais = AudioSystem.getAudioInputStream(Sound.class.getResource(fileName));

                clip = AudioSystem.getClip();
                clip.open(ais);
         } catch (Exception e) {
                e.printStackTrace();
         }
   }

   public void play() {
         try {
                if (clip != null) {
                       new Thread() {
                              public void run() {
                                    synchronized (clip) {
                                           clip.stop();
                                           clip.setFramePosition(0);
                                           clip.start();
                                    }
                              }
                       }.start();
                }
         } catch (Exception e) {
                e.printStackTrace();
         }
   }
}

現在我稱之為:

Sound.sound.play();

然后我變成了NullPointerException:

java.lang.NullPointerException
at com.sun.media.sound.StandardMidiFileReader.getSequence(StandardMidiFileReader.java:207)
at javax.sound.midi.MidiSystem.getSequence(MidiSystem.java:841)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:178)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1147)
at flappyLemon.model.game.Sound.<init>(Sound.java:13)
at flappyLemon.model.game.Sound.<clinit>(Sound.java:9)
at flappyLemon.model.FlappyLemon.main(FlappyLemon.java:67)

將音頻源文件復制到項目中

像這樣:
屏幕截圖示例

Java api不允許.mp3文件。 您應該使用.wav文件。

private Clip clip;

   public static Sound sound = new Sound("Yamaha-TG100-Whistle-C5.wav");

   public Sound(String fileName) {
         try {
                AudioInputStream ais = AudioSystem.getAudioInputStream(Sound.class.getResource(fileName));

                clip = AudioSystem.getClip();
                clip.open(ais);
         } catch (Exception e) {
                e.printStackTrace();
         }
   }

欲了解更多信息, 請點擊這里

Java不支持mp3文件,mp3是音頻容器,大多數已編碼為使用。

來自developer.com的報價:

Java Sound支持多種文件類型,包括AIFF,AU和WAV。 它可以以8 KHz至48 KHZ的采樣率呈現8位和16位音頻數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM