【问题标题】:Format error when trying to play MP3 in Java with JMF尝试使用 JMF 在 Java 中播放 MP3 时出现格式错误
【发布时间】:2017-05-24 11:50:31
【问题描述】:

当我尝试使用 JMF 在 Java 中播放 MP3 文件时出现错误。我尝试过使用 WAV 文件,效果很好。

这是我的代码(基于this tutorial):

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...");
    }
}

以及错误(与this post相同):

正在播放歌曲... 无法处理格式: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 目录,如下所示:

知道是什么导致了这个错误吗?

感谢您的帮助!

【问题讨论】:

    标签: java audio mp3 jmf


    【解决方案1】:

    似乎 MP3 文件是 JMF 无法处理的格式。 幸运的是,我有一个音频库,它也可以播放 MP3 文件。

    https://github.com/RalleYTN/SimpleAudio

    【讨论】:

      【解决方案2】:

      以下是我播放 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 及更高版本。图书馆

      【讨论】:

        猜你喜欢
        • 2013-02-04
        • 1970-01-01
        • 1970-01-01
        • 2011-05-21
        • 1970-01-01
        • 1970-01-01
        • 2018-01-14
        • 2018-05-03
        • 1970-01-01
        相关资源
        最近更新 更多