`
BradyZhu
  • 浏览: 247748 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用JMF实现java写自己的视频播放器

 
阅读更多

JMF这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其他的请开发自己的插件,下面将代码贴上去

package com.bird.jmf;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.media.CannotRealizeException;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoPlayerException;
import javax.media.Player;
import javax.media.PrefetchCompleteEvent;
import javax.media.RealizeCompleteEvent;
import javax.media.Time;

@SuppressWarnings({ "restriction", "unused" })
public class JMFSample implements ControllerListener {
    public static void main(String[] args) {
        JMFSample sp = new JMFSample();
        sp.play();
    }
   
    private Player mediaPlayer;
    private Frame f;
    private Player player;
    private Panel panel;
    private Component visual;
    private Component control = null;
   
    public void play(){
        f = new Frame("JMF Sample1");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                if(player != null) {
                    player.close();
                }
                System.exit(0);
            }
        });
        f.setSize(500,400);

        f.setVisible(true);
        URL url = null;
        try {
            //准备一个要播放的视频文件的URL
            url = new URL("file:/d:/2.mpg");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }       
        try {
            //通过调用Manager的createPlayer方法来创建一个Player的对象
            //这个对象是媒体播放的核心控制对象
            player = Manager.createPlayer(url);
        } catch (NoPlayerException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        } 

        //对player对象注册监听器,能噶偶在相关事件发生的时候执行相关的动作
        player.addControllerListener(this);
       
        //让player对象进行相关的资源分配
        player.realize();
    }
   
    private int videoWidth = 0;
    private int videoHeight = 0;
    private int controlHeight = 30;
    private int insetWidth = 10;
    private int insetHeight = 30;
   
    //监听player的相关事件
    public void controllerUpdate(ControllerEvent ce) {
        if (ce instanceof RealizeCompleteEvent) {
            //player实例化完成后进行player播放前预处理
            player.prefetch();
        } else if (ce instanceof PrefetchCompleteEvent) {
            if (visual != null)
                return;

            //取得player中的播放视频的组件,并得到视频窗口的大小
            //然后把视频窗口的组件添加到Frame窗口中,
            if ((visual = player.getVisualComponent()) != null) {
                Dimension size = visual.getPreferredSize();
                videoWidth = size.width;
                videoHeight = size.height;
                f.add(visual);
            } else {
                videoWidth = 320;
            }
           
            //取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中
            if ((control = player.getControlPanelComponent()) != null) {
                controlHeight = control.getPreferredSize().height;
                f.add(control, BorderLayout.SOUTH);
            }
           
            //设定Frame窗口的大小,使得满足视频文件的默认大小
            f.setSize(videoWidth + insetWidth, videoHeight + controlHeight + insetHeight);
            f.validate();
           
            //启动视频播放组件开始播放
            player.start();
            mediaPlayer.start();
        } else if (ce instanceof EndOfMediaEvent) {
            //当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
            player.setMediaTime(new Time(0));
            player.start();
        }
    }

}
效果图如下


分享到:
评论

相关推荐

    JMF视频播放器 java源代码

    JMF java视频播放器 源代码 是一个比较好的视频播放器的实例,用JMF实现的

    使用JMF实现java视频播放器

    主要为大家详细介绍了使用JMF实现java视频播放器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    用Java的JMF实现一个媒体播放器

    用Java的JMF实现一个媒体播放器,可以播放音频和视频

    java的jmf播放器

    java制作的pc端播放器,可以播放avi和vcd,wav文件,还有一些其他的格式没有一个个测试,软件基于jmf工具包实现。

    JAVA 音频视频播放器

    不是我给分高,是因为这个确实能用,可以实现用JAVA播放音频视频,100多K大小的。

    jmf实现流媒体播放

    简单介绍jmf,并且使用jmf框架实现流媒体的播放

    java音频视频播放器

    用Java的JMF实现一个媒体播放器,可以播放音频和视频,需要下载jmf的库文件包括customizer.jar、jmf.jar、mediaplayer.jar、multiplayer.jar共4个jar包

    JAVA多媒体开发手册 JMF API

    JAVA多媒体开发手册,Java多媒体框架(JMF)中包含了许多用于处理多媒体的API。它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单...

    JMF播放器设计的设计

    使用java JMF设计的播放器,可是对mp3,avi的视频和音频实现播放

    Java语言写的播放器(luocheng_imti)

    实现了播放音频,视频功能 Java JMF包的综合应用 javax有如下:media.ControllerEvent; media.ControllerListener; media.EndOfMediaEvent; media.Manager; media.NoPlayerException; media.Player; media....

    基于java的音乐播放器课程设计报告.doc

    设计内容及要求 能够实现简单的音乐播放器功能,如:打开本地文件,播放,暂停,停止 ,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录 一个简单的基于java语言的音乐播放器,菜单栏:文件,...

    基于java的音乐播放器课程设计报告(1).doc

    设计内容及要求 可以实现简单的音乐播放器功能,如:翻开本地文件,播放,暂停,停顿 ,背景播放,单曲循环等等,界面充实,交互友好,可以添加多首歌曲目录 一个简单的基于java语言的音乐播放器,菜单栏:文件,...

    基于Java的远程视频会议系统实现(系统+论文)

    通过学习和研究,我们通过多播技术实现了多点对多点的视频会议系统。整个系统包括这样几个模块: 文本聊天模块:该功能是网络视频会议的最基本的功能。通过该模块实现了会议成员的聊天通信。首先,每个会议职员通过...

    VideoPalyer.zip

    利用Java媒体框架(JMF)和Java Swing实现一个简单的视频播放器

    JMFMediaPlayer.rar_多媒体编程_Java_

    用Java的JMF实现一个媒体播放器,可以播放音频和视频

    基于Java和Python的爬虫项目实战源码.zip

    JMF(Java视频处理): 功能 a)在Java Applet和应用程序中播放贵重物品媒体文件,如AVI、MPEG、WAV等; b)可以播放从互联网上下载的媒体流; c)可以利用麦克风、摄像机等设备截取音频和视频,并只在成多媒体文件...

    Java开发技术大全 电子版

    6.8使用异常来实现键盘输入235 6.9本章小结236 第7章Java的输入和输出237 7.1文件和输入输出流237 7.2InputStream类和OutputStream类的使用238 7.2.1InputStream中的方法238 7.2.2OutputStream中的方法239 ...

    jsr80 java 访问 usb

    该 API 支持控制传输、批量传输和中断传输,不支持等时传输,因为等时传输用于媒体数据(如音频和视频),JMF API 已经在其他标准设备驱动程序上对此提供了很好的支持(参阅 参考资料)。当前,该 API 可以在具有 Linux ...

Global site tag (gtag.js) - Google Analytics