java jmf播放视频_使用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();
}
}
}
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java jmf播放视频_使用JMF实现java视频播放器相关推荐
- java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...
纯js项目: 海康视频项目,java后台+前台web显示的,望提供思路! 如果只是实现BS架构,可以向海康要web开发包,直接使用浏览器通过ocx访问海康设备浏览视频,如果需要的功能不全,再使用JNI ...
- 李兴华java实战经典视频_李兴华Java开发实战经典视频教程
资源名称:李兴华Java开发实战经典视频教程 资源目录:[一品资源网]010201_[第2章:简单Java程序]_简单Java程序[一品资源网]010301_[第3章:Java基础程序设计]_Java ...
- 播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...
最近用使开辟的过程中涌现了一个小题问,顺便录记一下因原和法方--播放视频 44_在线视频播放器 ------------------------- 1.注意这里,在模拟器中,android2.2和an ...
- 【音视频零基础入门 1】视频播放器原理、流媒体协议、封装格式、视频编码、音频编码
[音视频零基础入门 1]视频播放器原理.流媒体协议.封装格式.视频编码 一.视频播放器原理 1.1 解协议 1.2 解封装 1.3 解码 1.4 视音频同步 二.流媒体协议 三.封装格式 四.封装格式 ...
- linux音视频质量,linux好用的视频播放器
想知道在Linux上应该使用哪种视频播放器吗?我们在这里列出了Linux发行版中可用的7款最佳开源视频播放器. 您可以在Linux上观看在线流媒体服务,但是在电脑上观看电影/电视连续剧或其他视频内容还 ...
- java ee 系统视频_更好的网站登录系统,EE协作登录系统
java ee 系统视频 Preface 前言 This article introduces an authentication and authorization system for a web ...
- JavaSwing_使用树莓派播放视频_三种方法(FX,CLV,CLVJ)_一蓑烟雨任平生
文章目录 前言 一.使用技术 1.控制设备 2.怎么窗口播放 3.视频卡死 4.远程显示 5.远程命令链接 6.文件传输 二.视频播放 一.omxplayer播放 1.安装树莓派播放器 2.播放视频 ...
- Android中WebView使用6,js调java实现播放视频
效果图 项目结构: 核心代码: JsCallJavaVideoActivity中 package com.zhh.android;import android.app.Activity; import ...
- python如何播放视频_如何用python做一个视频搜索+播放器
import urllib.request import json import requests import re import tkinter as tk import tkinter.mess ...
最新文章
- BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
- 【转载】windows mobile 上隐藏和关闭X以及OK的处理
- SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)
- 使用.NET中的XML注释(一) -- XML注释标签讲解
- java引用变量_java代码声明引用变量经验
- Linux 刻录光盘
- 摆摊吗?我卖锅,你修手机。
- 模糊搜索怎么实现_干货 | 你真的了解自己是怎么搜索的吗_01
- 树-二叉树、满二叉树和完全二叉树
- 安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)
- 3.Linux性能诊断 --- 快速检查单(10个命令) 监控
- EL表达式和JSTL的介绍以及基本使用
- EXCEL,去掉1列中的重复数据的 公式方法
- 06.Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
- 解决:Field xxMapper in xx.service.impl.xxServiceImpl required a bean of type 'xx.mapper.xxMapper'...
- form中action属性
- chmod u+s权限理解
- CSS进阶之关于网格布局(Grid) 你了解哪些
- 【莹伙丛】Dependencies should no longer be declared using the compile and runtime configurations
- 隐藏进程命令行参数,例如输入密码等高危操作
热门文章
- A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues论文笔记
- C# 证书 .cer, .pfx 创建,加解密 导出为 Base64编码文件
- pq下垂控制单相逆变器matlab仿真,学习下垂控制的逆变器并联原理,如何实现仿真P1?-控制器/处理器-与非网...
- unity3d 锁定鼠标
- VR视频为什么都是弯的?
- 上岸快手,我选择一条不一样的路
- 如何切换电脑当前登录账户,独家讲解在这里,怎么在WIN10系统里切换电脑当前登录账户
- 曾国藩《挺经》卷七英才
- android中点击空白处隐藏软键盘
- django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066