基于JMF下的Java的MP3播放

Java的基本API类中是不能播放MP3格式音频。

可以通过JMF(Java Media Framework Java媒体框架)来增加对mp3及更多格式音视频的播放。

JMF是也不可以播放MP3的,要下载MP3插件才可以并注册才可以下载。

mp3plugin插件下载下来也是一个jar文件,将该文件放到JMF下的lib中


JMF下Java播放MP3的步骤:


1 下载JMF 可以从oracle官网下载到

2 下载完成后 在window平台下是EXE的安装文件。可以安装在任意目录。

3 安装完成后 要对环境变量进行修改,增加该JMF 

  eg:我的安装在  D:\Program Files (x86)\JMF2.1.1e      

            JMF_HOME=D:\Program Files (x86)\JMF2.1.1e

             path=...;%JMF_HOME%\bin;

             classpath=...;%JMF_HOME%\*.jar

4  将JMF的lib的所有jar都复制到JDK的jre/lib/ext 下  . 

        注意:一定要将mp3plugin.jar也复制到该文件夹下

5 注册MP3plugin插件 

     在JMF目录的bin目录中,有个jmfregistry,运行之,在plugin选项卡的Codec选项卡中的左边的文本框中,输入com.sun.media.codec.audio.mp3.JavaDecoder,点击中间的add按钮,这样就在列表中注册了mp3的插件,然后按以下commit

这里不改的话,就会出现下面的问题:

Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Stereo, LittleEndian, Signed, 16000.0 frame rate, FrameSize=32768 bits
Failed to realize: input media not supported: mpeglayer3 audio

6 在JMF的lib文件夹中,有个jmf.properties文件,将此文件和其他jar包(包括mp3plugin.jar)都添加到eclipse项目的lib目录中 ,添加到buildpath


测试代码:

package com.jmf.test;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.media.bean.playerbean.MediaPlayer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JFrame{
	
	private static MediaPlayer mediaPlayer = null;
	JPanel contentPanel = new JPanel();

	public Test(){
		
		mediaPlayer = new MediaPlayer();
		mediaPlayer.setMediaLocation("file:///E:/HappyBirthday/music/onceisnice.mp3");
		
		setContentPane(contentPanel);
		
		contentPanel.setLayout(new FlowLayout());
		
		JButton playButton = new JButton();
		playButton.setText("play");
		playButton.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				mediaPlayer.realize();
				mediaPlayer.start();
			}
		});
		contentPanel.add(playButton);
		
	}
	
	public static void main(String[] args){
		Test test = new Test();
		test.setVisible(true);
		test.setSize(100, 200);
		test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
}

注意:不知为何,有的音乐使用JMF是播放不出来的。我使用百度音乐api下载下来音乐,但是在JMF中播放不了,在其他的音乐播放器中都能播放出来。而且,在JMF中能播放从酷狗中下载下来的音乐,就是无法播放我从百度音乐api下载下来的音乐。所以,我打算放弃使用JMF,使用MPlayer,而且MPlayer的功能比JMF强大多了。感兴趣的可以去这个网址,下载下来源码自己看看:
http://download.csdn.net/detail/susuifeng/2251661



你可能感兴趣的:(javaSE)