为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java 视频播放

2013-01-19 3页 doc 47KB 88阅读

用户头像

is_812490

暂无简介

举报
java 视频播放主要是用到jmf(Java媒体框架),百度下载安装jmf(具体的自己百度教程,安装在Java主目录下),先测验是否安装成功,随便百度一个可运行的代码,看看能否播放mpeg或者mpg格式的视频文件,如果播放没有声音或者没有图像,那么是安装失败(一般要把jmf的jar包复制到jdk的lib下或者jre的lib下,我的是这些包被放在jre\lib\ext下并设置相应的环境变量),重新安装几遍吧。 Player的状态变化图 Jmf播放视频的过程是这样的,媒体定位器根据文件定位媒体,管理器根据媒体定位创建播放器,播放器添加媒体控制器...
java 视频播放
主要是用到jmf(Java媒体框架),百度下载安装jmf(具体的自己百度教程,安装在Java主目录下),先测验是否安装成功,随便百度一个可运行的代码,看看能否播放mpeg或者mpg的视频文件,如果播放没有声音或者没有图像,那么是安装失败(一般要把jmf的jar包复制到jdk的lib下或者jre的lib下,我的是这些包被放在jre\lib\ext下并设置相应的环境变量),重新安装几遍吧。 Player的状态变化图 Jmf播放视频的过程是这样的,媒体定位器根据文件定位媒体,管理器根据媒体定位创建播放器,播放器添加媒体控制器后,开始监听媒体状态,然后根据不同的状态事件进行操作。 示例程序: import java.awt.Component; import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.media.ControllerEvent; import javax.media.ControllerListener; import javax.media.EndOfMediaEvent; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; import javax.media.PrefetchCompleteEvent; import javax.media.RealizeCompleteEvent; import javax.media.Time; import javax.swing.JFrame; public class Test extends JFrame { public Container videoContainer = new Container(); public GridBagLayout layout = new GridBagLayout();// 可变布局 public GridBagConstraints constraints = new GridBagConstraints();// 布局设置 public VideoPlayer videoPlayer=new VideoPlayer(); public Test(){ videoPlayer.play("file:/C:/Users/xxb/Desktop/cat.mpeg"); videoContainer.setLayout(layout); constraints.fill = GridBagConstraints.BOTH;// 组件随显示变化的选项 constraints.weightx = 1;// 水平扩展,即显示变化时,长度变化 constraints.weighty = 1;// 垂直扩展,即高度变化 while(videoPlayer.getMediaShow()==null||videoPlayer.getMediaControl()==null){} addComponent(videoPlayer.getMediaShow(),layout,constraints, 0, 0, 4, 1, videoContainer); addComponent(videoPlayer.getMediaControl(),layout,constraints, 0, 1, 1, 1, videoContainer); this.add(videoContainer); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(350, 120); this.setSize(750, 560); this.setVisible(true); } public void addComponent(Component component,GridBagLayout layout,GridBagConstraints constraints, int x, int y, int width, int height, Container container) { constraints.gridx = x; constraints.gridy = y; constraints.gridwidth = width; constraints.gridheight = height; layout.setConstraints(component, constraints); container.add(component); } public static void main(String[] args) { new Test(); } } 单独的VideoPlayer类 public class VideoPlayer { private Player player; // 播放器对象 private Component mediaShow; // 视频显示组件 private Component mediaControl; // 视频播放控制组件 public VideoPlayer() {} public Component getMediaShow() {return mediaShow;} public void setMediaShow(Component mediaShow) {this.mediaShow = mediaShow;} public Component getMediaControl() {return mediaControl;} public void setMediaControl(Component mediaControl) { this.mediaControl = mediaControl;} public void play(String fileUrl) { if (player != null){player.close();} MediaLocator mediaLocator = new MediaLocator(fileUrl); // 媒体定位器 try { player = Manager.createPlayer(mediaLocator); // 得到播放器实例 player.addControllerListener(new PlayerHandler()); // 增加播放控制器 player.realize();// 播放器进行实例化,获取除互斥资源外的绘制资源 } catch (Exception ex) {ex.printStackTrace();}} public void getMediaComponents() { mediaShow = player.getVisualComponent(); // 取得视频显示组件 mediaControl = player.getControlPanelComponent(); // 取得播放控制组件 } // 播放器事件处理 private class PlayerHandler implements ControllerListener { public void controllerUpdate(ControllerEvent event) { if (event instanceof RealizeCompleteEvent) { player.prefetch();// 播放器预取,获取包括互斥资源在内的所有资源 } else if (event instanceof PrefetchCompleteEvent) { getMediaComponents(); player.start(); // 开始播放媒体 } else if (event instanceof EndOfMediaEvent) { player.setMediaTime(new Time(0)); // 重新设置媒体时间 player.stop(); // 停止媒体播放 } } } }
/
本文档为【java 视频播放】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索