使用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();
  }
 }

}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 教你轻松制作java视频播放器

    前言 跳过废话,直接看正文 当年入坑Java是因为它的跨平台优势.那时我认为,"编写一次,处处运行."这听上去多么牛逼,应该是所有语言发展的终极之道,java势必会一统天下. 然而事实证明,那时的我还是太年轻. 正所谓鱼和熊掌不可兼得,若要享受跨平台带来的方便,便不可避免地要接受性能上的不足.事实上,java一直在致力于提高虚拟机的性能(JIT等技术),但面对对实时计算性能要求很高或涉及到用硬件优化的任务(视频的硬件编码.解码)时,仍远远比不上c或c++.因此,很少能够看到有人用jav

  • 教你轻松制作java音乐播放器

    一.音乐播放器的实现原理 Javase的多媒体功能很弱,所以有一个专门处理多媒体的插件叫JMF,JMF提供的模型可大致分为七类 * 数据源(Data source) * 截取设备(Capture Device,包括视频和音频截取设备) * 播放器(Player) * 处理器(Processor) * 数据池(DataSink) * 数据格式(Format) * 管理器(Manager) 而我所做的这个音乐播放器MyMusicPlayer(这是我创建的类名)正是调用了JMF中的Player类来实现

  • 一个简单的Java音乐播放器

    本文实例为大家分享了Java音乐播放器展示的具体代码,供大家参考,具体内容如下 package KKMusic; import java.applet.Applet; import java.applet.AudioClip; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.borde

  • java音乐播放器实现代码

    本文实例为大家分享了java音乐播放器的具体代码,供大家参考,具体内容如下 这个是源码结构介绍 这个是界面,有点简陋,见笑了,但是基本上的东西都有了,没办法,没有美工的程序写的界面 直接上源代码Player.java package com.service; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Random; import javax.sound

  • 利用java制作简单的音乐播放器

    本文主要是用到java中的swing技术,以及JMFjar中的API,为大家分享了java音乐播放器的具体实现代码,供大家参考,具体内容如下 备注:需要用JDK1.8才能播放音乐MP3 package baidu; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.media.bean.playerbean.*;

  • 简单实现java音乐播放器

    学习过java语言的你,或多或少,在某天突发奇想,想着用swing做一个音乐播放器.但是,发现很难找到,相关的java代码,或者你下载的代码有问题,或者你代码里面引入的类包找不到.为了解决自如此类的问题.在这儿,有如下的代码可以供大家参考. package TheMusic; import java.io.*; import javax.sound.sampled.*; public class Music { public static void main(String[] args) { /

  • Java swing仿酷狗音乐播放器

    今天给大家介绍下用Java swing开发一款音乐播放器,高仿酷狗音乐播放器,完整源码地址在最下方,本文只列出部分源码,因为源码很多,全部贴不下,下面还是老规矩.来看看运行结果: 下面我们来看看代码: 首先看一下主窗口的实现代码: package com.baiting; import java.awt.Dimension; import java.awt.Toolkit; import com.baiting.menu.CloseWindow; /** * 窗口 * @author lmq *

  • java音乐播放器课程设计

    一.课程设计目的 1.编程设计音乐播放软件,使之实现音乐播放的功能. 2.培养学生用程序解决实际问题的能力和兴趣. 3.加深java中对多媒体编程的应用. 二.课程设计的要求 利用学到的编程知识和编程技巧,要求学生: 1.系统设计要能完成题目所要求的功能,设计的软件可以进行简单的播放及其他基本功能. 2.编程简练,可用,尽可能的使系统的功能更加完善和全面 3.说明书.流程图要清楚. 三.课程设计内容 1.课程设计的题目及简介 音乐播放软件要求: 有图形界面,能播放MP3歌曲,有播放列表,前一首.

  • java音乐播放器编写源码

    本文实例为大家分享了java音乐播放器的具体代码,供大家参考,具体内容如下 源码: package baidu; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.media.bean.playerbean.*; //这个包要用到JMF public class MP3 extends JFrame impleme

  • 实例解析使用Java实现基本的音频播放器的编写要点

    Java音频播放,因为必须依赖到本地环境,所以JAVA在音频处理方面优势不大,或者说打从Java体系开发时就没太多的考虑音频播放因素,要知道最早的Java 1.1版本中,没有后来的javax.sound包,音频只能通过Applet包调取-- 遗憾的是,在图形程序开发中,我们的程序却又难免要使用到背景音乐.效果音等配合图像操作,哎,这实在是Sun大神给我们开的一个不打不小的玩笑.万幸后来Sun大神开眼,提供了javax.sound包,才解救我们于水深火热当中~ 但是继之而来的问题是,在javax.

随机推荐