package player;
import javax.media.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MediaPlay extends Frame implements ActionListener, ControllerListener, ItemListener{
Player player; //JMF播放器
Component vedio_Component; //播放器的视频组件
Component control_Component; //播放器的控制组件
boolean first = true; //标志是否是第一次打开播放器
boolean loop_flag = false; //标志是否需要循环
String currentDirectory; //文件当前目录
FileDialog fileDialog;
public MediaPlay(String title){ //构造方法
super(title);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){ //用户单机窗口系统菜单的关闭按钮
dispose(); //调用dispose以执行windowClosed
}
public void windowClosed(WindowEvent e){
if(player != null){
player.close(); //关闭JMF播放器
}
System.exit(0);
} //创建播放器的菜单
});
Menu menu= new Menu("文件");
MenuItem open_Item = new MenuItem("文件选择") ;
open_Item.addActionListener(this);
menu.add(open_Item);
open_Item.setActionCommand("open");
menu.addSeparator();
CheckboxMenuItem loop_Item = new CheckboxMenuItem("循环播放");
loop_Item.addItemListener(this);
loop_Item.setActionCommand("loop");
menu.add(loop_Item);
menu.addSeparator();
MenuItem exit_Item = new MenuItem("推出播放器");
exit_Item.addActionListener(this);
exit_Item.setActionCommand("exit");
menu.add(exit_Item);
MenuBar menuBar = new MenuBar();
menuBar.add(menu);
this.setMenuBar(menuBar);
this.setSize(300, 250);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
this.setSize(300, 250);
if(e.getActionCommand().equals("exit")){
dispose();
}else{
fileDialog = new FileDialog(this, "打开媒体文件", FileDialog.LOAD);
fileDialog.setDirectory(currentDirectory);
fileDialog.setVisible(true);
if(fileDialog.getFile() == null){
return;
}
currentDirectory = fileDialog.getDirectory();
if(player != null){
player.close();
}
try{
player = Manager.createPlayer(new MediaLocator("file:" + fileDialog.getDirectory() + fileDialog.getFile()));
}catch(java.io.IOException e2){
System.out.println("播放文件错误");
return;
}catch(NoPlayerException e2){
System.out.println( "不能找到播放器");
return;
}
if(player == null){
System.out.println("无法创建播放器");
return;
}
first = false;
this.setTitle(fileDialog.getFile());
player.addControllerListener(this);
player.prefetch();
}
}
public void controllerUpdate(ControllerEvent e){
this.setSize(300, 250);
if(e instanceof ControllerClosedEvent){
if(vedio_Component != null){
remove(vedio_Component);
this.vedio_Component = null;
}
if(control_Component != null){
remove(control_Component);
this.control_Component = null;
}
return;
}
if(e instanceof EndOfMediaEvent){
if(loop_flag){
player.setMediaTime(new Time(0));
player.start();
}
return;
}
if(e instanceof PrefetchCompleteEvent){
player.start();
return;
}
if(e instanceof RealizeCompleteEvent){
vedio_Component = player.getVisualComponent();
if(vedio_Component != null){
add(vedio_Component);
}
control_Component = player.getControlPanelComponent();
if(control_Component != null){
add(control_Component, BorderLayout.SOUTH);
}
this.pack();
}
}
public void itemStateChanged(ItemEvent e){
loop_flag = !loop_flag;
}
public void paint(Graphics g){
int w = getSize().width;
int h = getSize().height;
g.setColor(Color.black);
g.fillRect(0, 0, w, h);
if(first){
Font f = new Font("DialogInput", Font.BOLD, 14);
g.setFont(f);
FontMetrics fm = g.getFontMetrics();
int swidth = fm.stringWidth("*** 欢迎使用JMF多媒体播放器2 ***");
g.setColor(Color.yellow);
g.drawString("*** 欢迎使用JMF多媒体播放器2 ***", (w - swidth) / 2, (h + getInsets().top) / 2);
} else {
String s = fileDialog.getFile();
Font f = new Font("DialogInput", Font.BOLD, 16);
g.setFont(f);
FontMetrics fm = g.getFontMetrics();
int swidth = fm.stringWidth("您现在欣赏的曲目是: " + s);
g.setColor(Color.pink);
g.drawString("您现在欣赏的曲目是: " + s, (w - swidth) / 2, (h + getInsets().top) / 2);
}
super.paint(g);
}
public void updata(Graphics g){
paint(g);
}
public static void main(String[] args)
{
new MediaPlay("JMF 多媒体播放器");
}
}
- 大小: 12 KB
分享到:
相关推荐
本项目是一个基于JMF实现的媒体播放器,能够播放MPG、MPEG和MP3等常见媒体格式。 **JMF简介** Java Media Framework是Sun Microsystems开发的一个框架,它允许开发者创建和播放多种格式的音频和视频内容。JMF提供了...
总的来说,【基于JMF的MP3播放器】是一个利用Java技术实现的音频播放工具,它借助JMF的强大功能,为用户提供方便的MP3播放和列表管理服务。通过了解JMF的工作原理和播放器的基本操作,用户可以更好地享受音乐,同时...
1. **多媒体支持**:JMF支持多种多媒体格式,如MPEG、AVI、WAV、QuickTime等,使得开发者无需关心具体格式的细节,就能实现跨平台的多媒体播放。 2. **实时流处理**:JMF可以处理实时的流媒体数据,这使得它成为...
Java多媒体框架JMF(Java Media Framework)是Sun Microsystems公司开发的一个开源框架,主要用于处理音频、视频和流媒体数据。JMF2.1是这个框架的一个版本,它为Java开发者提供了在应用程序中集成多媒体功能的能力...
4. 实现多媒体文件的处理和格式转换。 5. 支持上传和广播音频、视频数据流到互联网。 JMF的结构可比喻为一个立体声音响系统,由以下几个关键组件组成: 1. **数据源(DataSource)**:数据源是包含媒体数据流的...
总的来说,JMF音乐播放器是一个基于Java的多媒体应用实例,展示了如何利用JMF框架处理音频文件。开发者可以借此学习到如何在Java环境中集成多媒体功能,以及如何处理不同的音频格式。然而,需要注意的是,JMF自2004...
1. **文件格式支持**:JMF能够处理多种多媒体文件格式,如MP3、WAV、AVI、MPEG等。源码中包含了对这些格式的解析和播放机制。 2. **播放控制**:用户可以通过界面操作实现播放、暂停、停止、快进、快退等基本控制。...
MP3插件是JMF的一个扩展,允许程序在Java环境中播放、处理和操作MP3音频文件。"jmf_mp3_plugin"的标题和描述暗示了这是一个关于JMF的MP3播放功能增强的组件或库。 JMF(Java Media Framework)是由Sun Microsystems...
JMF是Java平台上的一个开源框架,它允许开发者处理和播放音频、视频等多种媒体格式。下面我们将深入探讨JMF及其在多媒体播放中的应用。 Java Media Framework (JMF) 是Sun Microsystems开发的一个API,主要用于在...
JMF提供了一种统一的方法来处理多媒体数据的采集、处理和分发,并且支持大多数标准的媒体类型,包括但不限于AIFF (aif)、MPEG Audio (mp2/mp3)、Wave (wav)、Basic Audio (au)、MS Video 1.0 (avi)、QuickTime (mov)...
Java Media Framework (JMF) 是一个开源的API,由Sun Microsystems开发,用于在Java应用程序中处理多媒体内容,如音频、视频和同步数据流。JMF为开发者提供了在Java环境中播放、捕获、处理和控制多媒体数据的能力。...
- **媒体播放**: JMF可以播放多种音频和视频格式,包括但不限于MP3、WAV、AVI和MPEG。 - **实时流处理**: 支持RTSP(实时流协议)和HTTP流媒体,可用于在线广播。 - **媒体捕获**: 可以从硬件设备捕获音频和视频...
**基于JMF的简易播放器** ...总的来说,基于JMF的简易播放器是一个学习和实践Java多媒体编程的好项目。通过深入理解JMF的原理和API,可以更好地掌握多媒体处理技术,并为未来的开发工作打下坚实的基础。
JMF不仅支持常见的多媒体文件格式,如AU、AVI、MIDI、MPEG、QuickTime和WAV等,还允许用户通过互联网传输多媒体流。此外,JMF提供了录制、存储多媒体文件的功能,并支持文件格式的转换。本文旨在详细介绍JMF的核心...
2. **多媒体支持**:JMF可以处理各种媒体格式,如MP3、WAV、AVI、MPEG等,通过其插件机制来扩展对不同格式的支持。 3. **实时流处理**:JMF能够接收和处理实时的音频和视频流,这在构建网络广播或视频会议应用时...
JLayer是一个开源的、纯Java实现的MP3解码库,它遵循MPEG-1音频层III(即MP3)的规格。这个库使得开发者无需依赖操作系统特定的组件就能在Java应用程序中解码和播放MP3音频。 JLayer1.0.1的核心功能包括: 1. **MP3...
Java音乐播放器是一款基于Java语言开发的音频播放软件,它依赖于Java Media Framework (JMF) 来处理和播放音频文件。JMF是Java平台上的一个开源多媒体框架,用于处理和播放音频、视频等多媒体数据。在使用这个音乐...
它支持多种编码标准,如MPEG、WAV、MP3、QuickTime等,使得JMF能够处理广泛的媒体文件格式。 2. **媒体播放器**:在JMF中,媒体播放器是用户与多媒体内容交互的接口。它允许用户控制播放、暂停、停止、快进、快退等...
Java Media Framework (JMF) 是一个开源的Java平台,它为开发人员提供了处理音频、视频和多媒体应用的能力。JMF 提供了丰富的接口和类,使得开发者可以方便地集成和播放各种多媒体内容。在本资源中,我们有两个关键...