JMF + mp3plugin.jar mp3文件没有播放

时间:2013-02-18 15:28:22

标签: java mp3 javasound jmf

我有这段代码:

    package test;

import java.io.File;

import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.PlugInManager;
import javax.media.format.AudioFormat;

public class AudioTest {
    public static void main(String[] args) {
        Format input1 = new AudioFormat(AudioFormat.MPEGLAYER3);
        Format input2 = new AudioFormat(AudioFormat.MPEG);
        Format output = new AudioFormat(AudioFormat.LINEAR);
        PlugInManager.addPlugIn(
            "com.sun.media.codec.audio.mp3.JavaDecoder",
            new Format[]{input1, input2},
            new Format[]{output},
            PlugInManager.CODEC
        );
        try{
            Player player = Manager.createPlayer(new MediaLocator(new File("1.mp3").toURI().toURL()));
            player.realize();
                        player.start();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

我正在尝试播放mp3文件,mp3plugin被添加到项目lib以及jmf jar中。 控制台上没有错误,但听不到声音。

文件没有播放。 .wav文件播放正常。

任何想法?

2 个答案:

答案 0 :(得分:2)

JMF是一个糟糕的选择。该项目很久以前就被废弃了。 我在这里回答了类似的问题:

Java - Error when trying to use mp3plugin for playing an mp3 file

它可能对您有用 - 我正在使用Java Sound

答案 1 :(得分:0)

以下是我播放音乐所需的全部内容。

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();
}

因此,请确保mp3plugin.jar在类路径中,并且您的javasdk是Java 8(32位)或7(32位),因为JMF无法在Java 9及更高版本上运行。