`
langzibuhuan
  • 浏览: 9367 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

使用JMF实现一个媒体播放器,它可以是一个多媒体文件(mpeg、MP3格式)

阅读更多
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的媒体播放器

    本项目是一个基于JMF实现的媒体播放器,能够播放MPG、MPEG和MP3等常见媒体格式。 **JMF简介** Java Media Framework是Sun Microsystems开发的一个框架,它允许开发者创建和播放多种格式的音频和视频内容。JMF提供了...

    基于JMF的MP3播放器

    总的来说,【基于JMF的MP3播放器】是一个利用Java技术实现的音频播放工具,它借助JMF的强大功能,为用户提供方便的MP3播放和列表管理服务。通过了解JMF的工作原理和播放器的基本操作,用户可以更好地享受音乐,同时...

    jmf流媒体播放器软件

    1. **多媒体支持**:JMF支持多种多媒体格式,如MPEG、AVI、WAV、QuickTime等,使得开发者无需关心具体格式的细节,就能实现跨平台的多媒体播放。 2. **实时流处理**:JMF可以处理实时的流媒体数据,这使得它成为...

    java多媒体框架JMF2.1.java多媒体框架JMF2.1

    Java多媒体框架JMF(Java Media Framework)是Sun Microsystems公司开发的一个开源框架,主要用于处理音频、视频和流媒体数据。JMF2.1是这个框架的一个版本,它为Java开发者提供了在应用程序中集成多媒体功能的能力...

    利用JMF进行多媒体编程

    4. 实现多媒体文件的处理和格式转换。 5. 支持上传和广播音频、视频数据流到互联网。 JMF的结构可比喻为一个立体声音响系统,由以下几个关键组件组成: 1. **数据源(DataSource)**:数据源是包含媒体数据流的...

    JMF音乐播放器,能播放mp3、wav等格式的音频文件

    总的来说,JMF音乐播放器是一个基于Java的多媒体应用实例,展示了如何利用JMF框架处理音频文件。开发者可以借此学习到如何在Java环境中集成多媒体功能,以及如何处理不同的音频格式。然而,需要注意的是,JMF自2004...

    基于JMF的播放器 多功能 源码

    1. **文件格式支持**:JMF能够处理多种多媒体文件格式,如MP3、WAV、AVI、MPEG等。源码中包含了对这些格式的解析和播放机制。 2. **播放控制**:用户可以通过界面操作实现播放、暂停、停止、快进、快退等基本控制。...

    jmf_mp3_plugin

    MP3插件是JMF的一个扩展,允许程序在Java环境中播放、处理和操作MP3音频文件。"jmf_mp3_plugin"的标题和描述暗示了这是一个关于JMF的MP3播放功能增强的组件或库。 JMF(Java Media Framework)是由Sun Microsystems...

    jmf多媒体播放.zip

    JMF是Java平台上的一个开源框架,它允许开发者处理和播放音频、视频等多种媒体格式。下面我们将深入探讨JMF及其在多媒体播放中的应用。 Java Media Framework (JMF) 是Sun Microsystems开发的一个API,主要用于在...

    基于JMF技术实现流媒体格式的转换

    JMF提供了一种统一的方法来处理多媒体数据的采集、处理和分发,并且支持大多数标准的媒体类型,包括但不限于AIFF (aif)、MPEG Audio (mp2/mp3)、Wave (wav)、Basic Audio (au)、MS Video 1.0 (avi)、QuickTime (mov)...

    JMF多媒体api汉化

    Java Media Framework (JMF) 是一个开源的API,由Sun Microsystems开发,用于在Java应用程序中处理多媒体内容,如音频、视频和同步数据流。JMF为开发者提供了在Java环境中播放、捕获、处理和控制多媒体数据的能力。...

    java多媒体 JMF API

    - **媒体播放**: JMF可以播放多种音频和视频格式,包括但不限于MP3、WAV、AVI和MPEG。 - **实时流处理**: 支持RTSP(实时流协议)和HTTP流媒体,可用于在线广播。 - **媒体捕获**: 可以从硬件设备捕获音频和视频...

    基于JMF的简易播放器

    **基于JMF的简易播放器** ...总的来说,基于JMF的简易播放器是一个学习和实践Java多媒体编程的好项目。通过深入理解JMF的原理和API,可以更好地掌握多媒体处理技术,并为未来的开发工作打下坚实的基础。

    JAVA多媒体开发手册 JMF API

    JMF不仅支持常见的多媒体文件格式,如AU、AVI、MIDI、MPEG、QuickTime和WAV等,还允许用户通过互联网传输多媒体流。此外,JMF提供了录制、存储多媒体文件的功能,并支持文件格式的转换。本文旨在详细介绍JMF的核心...

    JMF(Java媒体框架)

    2. **多媒体支持**:JMF可以处理各种媒体格式,如MP3、WAV、AVI、MPEG等,通过其插件机制来扩展对不同格式的支持。 3. **实时流处理**:JMF能够接收和处理实时的音频和视频流,这在构建网络广播或视频会议应用时...

    jmf_mp3解码器

    JLayer是一个开源的、纯Java实现的MP3解码库,它遵循MPEG-1音频层III(即MP3)的规格。这个库使得开发者无需依赖操作系统特定的组件就能在Java应用程序中解码和播放MP3音频。 JLayer1.0.1的核心功能包括: 1. **MP3...

    java做的MP3音乐播放器(需要先安装JMF)

    Java音乐播放器是一款基于Java语言开发的音频播放软件,它依赖于Java Media Framework (JMF) 来处理和播放音频文件。JMF是Java平台上的一个开源多媒体框架,用于处理和播放音频、视频等多媒体数据。在使用这个音乐...

    JMF-2.1.1e

    它支持多种编码标准,如MPEG、WAV、MP3、QuickTime等,使得JMF能够处理广泛的媒体文件格式。 2. **媒体播放器**:在JMF中,媒体播放器是用户与多媒体内容交互的接口。它允许用户控制播放、暂停、停止、快进、快退等...

    JMF 安装包及JMF API

    Java Media Framework (JMF) 是一个开源的Java平台,它为开发人员提供了处理音频、视频和多媒体应用的能力。JMF 提供了丰富的接口和类,使得开发者可以方便地集成和播放各种多媒体内容。在本资源中,我们有两个关键...

Global site tag (gtag.js) - Google Analytics