使用JMF实现java视频播放器
程序员文章站
2023-12-21 15:24:10
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(); } } }
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。