欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用JMF实现java视频播放器

程序员文章站 2023-12-18 21:23:28
jmf这个多媒体开发框架太牛了,简单的几句代码就能实现一个视频播放器的开发,厉害,就是支持的格式少了一些,没关系,这个视频播放器可以播放mpg,avi,fvl等等,想播放其...

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视频播放器

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

上一篇:

下一篇: