【问题标题】:Java Media Framework - MP3 IssuesJava 媒体框架 - MP3 问题
【发布时间】:2013-04-18 10:33:13
【问题描述】:

我使用的是 Windows 7,可以在我的混音器中“Java Platform SE Binary”,但似乎仍然没有声音播放。

我的代码是:

import javax.media.*;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.MalformedURLExc;

public class SimpleAudioPlayer {
private Player audioPlayer = null;

public SimpleAudioPlayer(URL url) throws IOException, NoPlayerException, 
    CannotRealizeException {
    audioPlayer = Manager.createRealizedPlayer(url);
}

public SimpleAudioPlayer(File file) throws IOException, NoPlayerException, 
    CannotRealizeException {
    this(file.toURL());
}

public void play() {
    audioPlayer.start();
}

public void stop() {
    audioPlayer.stop();
    audioPlayer.close();
}

public static void main(String[] args) {
    try{
        File audioFile = new File("/t.mp3");
        SimpleAudioPlayer player = new SimpleAudioPlayer(audioFile);

        System.out.println();
        System.out.println("-> Playing file '" + 
                           audioFile.getAbsolutePath() + "'");
        System.out.println("   Press the Enter key to exit");
        player.play();

        // wait for the user to press Enter to proceed.
        System.in.read();
        System.out.println("-> Exiting");
        player.stop();
    }catch(Exception ex){
        ex.printStackTrace();
    }

    System.exit(0);

}
}

我使用的是 Windows 性能 JMF 版本。我试图播放的 MP3 在 VLC/WMP 中工作正常,所以它不能是文件。

代码在运行时也没有抛出异常或错误,只是似乎没有播放声音。

我有什么遗漏吗?喜欢拉声卡?例如。接管它,以便我可以从中播放声音?

我的总体目标是使用 RTP/RTSP 提供 MP3 流媒体服务,因此任何链接、建议或教程都会有所帮助,因为我现在使用 IBM JMF TuturiolJava Demo

如果需要更多信息,请询问!

更新-

下载了WAV FILE,好像可以播放了,怎么让MP3播放?

添加了格式并尝试了这段代码,但仍然是同样的问题:

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 SimpleAudioPlayer {
    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("/t.mp3").toURI().toURL()));
            player.start();
        }
        catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

无法处理格式:mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits 未能实现:com.sun.media.PlaybackEngine@62deaa2e 错误:无法实现com.sun.media.PlaybackEngine@62deaa2e

那就是错误!

【问题讨论】:

  • 我不是这方面的专家,但我知道 VLC 带有自己的编解码器(不是操作系统的编解码器)。您是否尝试播放 .wav 文件来解决问题?
  • 现在还没有尝试。我尝试了另一个 MP3,它给出了一个编解码器 excpeiton 但这只是显示 notihng。我会尝试 .wav 并在几分钟内回复您,谢谢
  • 你的权利,我会更新我的问题
  • 1) “我试图播放的 MP3 在 VLC/WMP 中运行良好,因此它不能成为文件。” 大多数“现实世界”媒体播放器都转到 非同寻常的 长度来接受和处理任何旧的垃圾、格式错误的文件并尽力处理它们。如果您想检查 MP3,请使用 专为检查 MP3 设计的工具。 2) 尝试一些 MP3s @ my site 他们肯定适用于 JMF。 3) 似乎代码应该在player.play()player.stop() 之间弹出一个阻塞的GUI 元素。简单地启动播放器通常不会阻止调用以下语句。
  • 尝试使用 JMStudio 播放文件,它是带有 JMF 的媒体播放器,不要尝试使用 VLC 等播放文件,因为 JMF 不支持所有文件,即使它也支持文件也存在是声音的编解码器等问题。

标签: java mp3 jmf


【解决方案1】:

正如我所想,这是一个缺少的编解码器。

我想这就是你需要的:http://www.oracle.com/technetwork/java/javase/download-137625.html

【讨论】:

  • 几乎没有。 JMF 具有内置的 MP3 编解码器。如果 OP 可以访问SimpleAudioPlayer,则应安装编解码器。如果您将该编解码器添加到标准 Java 应用程序中,那么 Java Sound 也将解码 MP3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
相关资源
最近更新 更多