簡體   English   中英

嘗試使用 JMF 在 Java 中播放 MP3 時出現格式錯誤

[英]Format error when trying to play MP3 in Java with JMF

當我嘗試使用 JMF 在 Java 中播放 MP3 文件時出現錯誤。 我嘗試過使用 WAV 文件,效果很好。

這是我的代碼(基於本教程):

import javax.media.*;
import java.net.URL;

class mp3 extends Thread {
    private URL url;
    private Player playMP3;

    public mp3(String mp3) {
        try {
            this.url = new URL(mp3);
        } catch (java.net.MalformedURLException e) {
            System.out.println(e.getMessage());
        }
    }

    public void run() {

        try {
            MediaLocator mediaLocator = new MediaLocator(url);
            playMP3 = Manager.createPlayer(mediaLocator);
        } catch (java.io.IOException | NoPlayerException e) {
            System.out.println(e.getMessage());
        }

        playMP3.addControllerListener(new ControllerListener() {
            public void controllerUpdate(ControllerEvent e) {
                if (e instanceof EndOfMediaEvent) {
                    playMP3.stop();
                    playMP3.close();
                }
            }
        });
        playMP3.realize();
        playMP3.start();
    }
}

public class PlayMP3 {
    public static void main(String[] args) {
        mp3 t = new mp3("file:///C://TestMP3Player//music.wav"); // Works well
//      mp3 t = new mp3("file:///C://TestMP3Player//music.mp3"); // Doesn't work (error below)
        t.start();
        System.out.println("Playing song...");
    }
}

和錯誤(與這篇文章相同):

播放歌曲...無法處理格式:mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits 無法實現:com.sun.media.PlaybackEngine@54932122 錯誤:無法實現 com.sun.media.PlaybackEngine@54932122

進程以退出代碼 0 結束

我不知道我是否正確安裝了 JMF。 我只是在 IntelliJ 的項目依賴項中添加包含 JAR 文件的JMF-2.1.1e\\lib目錄,如下所示:

IntelliJ 項目依賴窗口

知道是什么導致了這個錯誤?

感謝您的幫助!

似乎 MP3 文件的格式是 JMF 無法處理的。 幸運的是,我有一個可以播放 MP3 文件的音頻庫。

https://github.com/RalleYTN/SimpleAudio

以下是我播放mp3所需的全部內容。

public static void main(String args[]) throws NoPlayerException, CannotRealizeException, IOException {
    MediaLocator ml = new MediaLocator((new File("roar_of_future.mp3").toURL()));
    Player player = Manager.createRealizedPlayer(ml);
    player.start();
}

所以請確保

  1. mp3plugin.jar和 jmf.jar 在類路徑中
  2. JavaSDK 是 Java 8(32 位)或 7(32 位),因為 JMF 不適用於 Java 9 及更高版本。 圖書館

暫無
暫無

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

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