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视频播放器相关推荐

  1. java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...

    纯js项目: 海康视频项目,java后台+前台web显示的,望提供思路! 如果只是实现BS架构,可以向海康要web开发包,直接使用浏览器通过ocx访问海康设备浏览视频,如果需要的功能不全,再使用JNI ...

  2. 李兴华java实战经典视频_李兴华Java开发实战经典视频教程

    资源名称:李兴华Java开发实战经典视频教程 资源目录:[一品资源网]010201_[第2章:简单Java程序]_简单Java程序[一品资源网]010301_[第3章:Java基础程序设计]_Java ...

  3. 播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...

    最近用使开辟的过程中涌现了一个小题问,顺便录记一下因原和法方--播放视频 44_在线视频播放器 ------------------------- 1.注意这里,在模拟器中,android2.2和an ...

  4. 【音视频零基础入门 1】视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

    [音视频零基础入门 1]视频播放器原理.流媒体协议.封装格式.视频编码 一.视频播放器原理 1.1 解协议 1.2 解封装 1.3 解码 1.4 视音频同步 二.流媒体协议 三.封装格式 四.封装格式 ...

  5. linux音视频质量,linux好用的视频播放器

    想知道在Linux上应该使用哪种视频播放器吗?我们在这里列出了Linux发行版中可用的7款最佳开源视频播放器. 您可以在Linux上观看在线流媒体服务,但是在电脑上观看电影/电视连续剧或其他视频内容还 ...

  6. java ee 系统视频_更好的网站登录系统,EE协作登录系统

    java ee 系统视频 Preface 前言 This article introduces an authentication and authorization system for a web ...

  7. JavaSwing_使用树莓派播放视频_三种方法(FX,CLV,CLVJ)_一蓑烟雨任平生

    文章目录 前言 一.使用技术 1.控制设备 2.怎么窗口播放 3.视频卡死 4.远程显示 5.远程命令链接 6.文件传输 二.视频播放 一.omxplayer播放 1.安装树莓派播放器 2.播放视频 ...

  8. Android中WebView使用6,js调java实现播放视频

    效果图 项目结构: 核心代码: JsCallJavaVideoActivity中 package com.zhh.android;import android.app.Activity; import ...

  9. python如何播放视频_如何用python做一个视频搜索+播放器

    import urllib.request import json import requests import re import tkinter as tk import tkinter.mess ...

最新文章

  1. BZOJ 2134 单选错位(数学期望)【BZOJ 修复工程】
  2. 【转载】windows mobile 上隐藏和关闭X以及OK的处理
  3. SpringMVC学习(一)——快速搭建SpringMVC开发环境(非注解方式)
  4. 使用.NET中的XML注释(一) -- XML注释标签讲解
  5. java引用变量_java代码声明引用变量经验
  6. Linux 刻录光盘
  7. 摆摊吗?我卖锅,你修手机。
  8. 模糊搜索怎么实现_干货 | 你真的了解自己是怎么搜索的吗_01
  9. 树-二叉树、满二叉树和完全二叉树
  10. 安卓拍照上传php服务器,Android拍照上传至PHP服务器并写入MySql数据库(下)
  11. 3.Linux性能诊断 --- 快速检查单(10个命令) 监控
  12. EL表达式和JSTL的介绍以及基本使用
  13. EXCEL,去掉1列中的重复数据的 公式方法
  14. 06.Spring Cloud OpenFeign:基于Ribbon和Hystrix的声明式服务调用
  15. 解决:Field xxMapper in xx.service.impl.xxServiceImpl required a bean of type 'xx.mapper.xxMapper'...
  16. form中action属性
  17. chmod u+s权限理解
  18. CSS进阶之关于网格布局(Grid) 你了解哪些
  19. 【莹伙丛】Dependencies should no longer be declared using the compile and runtime configurations
  20. 隐藏进程命令行参数,例如输入密码等高危操作

热门文章

  1. A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues论文笔记
  2. C# 证书 .cer, .pfx 创建,加解密 导出为 Base64编码文件
  3. pq下垂控制单相逆变器matlab仿真,学习下垂控制的逆变器并联原理,如何实现仿真P1?-控制器/处理器-与非网...
  4. unity3d 锁定鼠标
  5. VR视频为什么都是弯的?
  6. 上岸快手,我选择一条不一样的路
  7. 如何切换电脑当前登录账户,独家讲解在这里,怎么在WIN10系统里切换电脑当前登录账户
  8. 曾国藩《挺经》卷七英才
  9. android中点击空白处隐藏软键盘
  10. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066