千家信息网

用JMF打开摄像头获取图像

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,今天学习用JAVA中的JMF来打开摄像头,这个小程序对我来说还是有点难度的。然后我在网上找的一些资料,网上的资料很多而且比较杂,对于我们新人来说,没有分辨能力,走了很多弯路。下面我把我的学习过程展示出
千家信息网最后更新 2024年11月30日用JMF打开摄像头获取图像


今天学习用JAVA中的JMF来打开摄像头,这个小程序对我来说还是有点难度的。然后我在网上找的一些资料,网上的资料很多而且比较杂,对于我们新人来说,没有分辨能力,走了很多弯路。下面我把我的学习过程展示出来。

1.搭建环境

我的电脑是win7 64位的;然后在orcale 官网下载JDK (在百度搜索JDK下载)jdk-8u92-windows-i586.exeJDK必须是32位的,至少在我电脑上是这样的,我安装64位的始终没有成功,最后找出问题来就是JMF 32位的,配套的JDK也必须是32位的。我是这样理解的.呵呵);然后下载JMF(直接在百度搜索JMF下载,能直接跳转到oracle官网的JMF下载,比直接在oracle官网上去找方便很多)jmf-2_1_1e-windows-i586.exeJMF建议安装在jdk下,这样免去了配置环境变量。


2.环境配置与测试

JDK和JMF安装完毕,然后就是JDK环境变量配置,依次打开:计算机右键属性>高级系统设置>环境变量>系统变量 1)新建JAVA_HOME变量 就是刚才jdk的安装路径D:\Application\java\jdk1.6.0_25

2)PATH变量 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

3)CLASSPATH变量 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (要加.表示当前路径) 检验:WIN+R > CMD > javac java java -version 代表配置成功

然后就是JMF : 打开JMF安装目录下的jmfregistry.exe程序

安装后都需要重新启动电脑才可以用;会在桌面生成一个JMStudio的快捷方式,打开它

File > Capture 安装成功会有音频视频等,然后就可以通过摄像头看见自己了;到这里我们的运行环境就安装好了,接下来我们就是写代码来调用摄像头了;

3. 代码

用记事本或者notepad++ 就可以的,notepad++ 有一个插件NppAStyle插件可以格式化java代码。

JMF摄像头基本原理及过程

获取摄像头信息 》 创建摄像头和捕捉数据流 》 创建窗体及面板 》 把捕捉的数据流加载到窗体中播放

import java.awt.BorderLayout;

import java.awt.Component;

import javax.media.*;//包含所有media代码

import javax.swing.JFrame; //通过JFrame来创建窗体

import javax.swing.JPanel; //一个容器类

public class Camera extends JFrame { //继承窗体的框架


public static Player player = null; //定义一个player变量。 playermedia包中的一个类

private CaptureDeviceInfo deviceInfo = null; //定义管理器的截取设备注册信息

private MediaLocator mediaLocator = null;

private Component component = null;

private JPanel vedioPanel = null;

String str = "vfw:Microsoft WDM Image Capture (Win32):0"; //获取本地摄像头的字符串

public Camera() {

init();

}

public void init() {

deviceInfo = CaptureDeviceManager.getDevice(str); //根据字符串获取采集设备(摄像头)的引用

mediaLocator = deviceInfo.getLocator(); //CaptureDevicesInfo对象中获取MediaLocator对象,然后用它来创建一个DataSource数据源对象;

//获取采集设备的定位器的引用,需要根据此引用来创建视频播放器

try {

player = Manager.createRealizedPlayer(mediaLocator);// 利用mediaLocator 获取一个player ,创建一个player对象

component = player.getVisualComponent(); //player 对象的图像部件,在此部件上可以播放多媒体图像

if (component != null) {

/*

设置窗体的一些属性

*/

vedioPanel = new JPanel();//面板容器

vedioPanel.add(component, BorderLayout.NORTH);

this.add(vedioPanel);

this.pack(); // 自动分配窗体大小

this.setResizable(false);

this.setDefaultCloseOperation(EXIT_ON_CLOSE); //设置窗体的关闭

this.setVisible(true);

player.start(); //播放捕获来的数据流

}

} catch(Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {//主函数

new Camera();

}

}



为了把这个东西搞懂,大哥建议我把这个程序拆分开了,用小程序测试,由于基础有限,我最终只弄出来一个设备信息获取的小程序,窗口的还有点难度。


import javax.media.*;

public class INFO {

public static void main(String[] args) {

CaptureDeviceInfo deviceInfo = null;

String str2 = "vfw:Microsoft WDM Image Capture (Win32):0"; //获取本地摄像头的字符串

deviceInfo = CaptureDeviceManager.getDevice(str2);

System.out.println("本地摄像头的信息:"+deviceInfo);

}

}



虽然这是一个比较简单的小程序,但是我花了很多时间来弄,在这过程中也学会了一些东西,刚开始的时候什么都不会,陪伴我的还好有电脑,一些不懂的问题都是在google&百度上找的,以至于源码也是。这是的第一篇博文,上述中肯定会有很多错误,欢迎大家指出;



摄像头 摄像 变量 窗体 环境 程序 对象 就是 代码 信息 数据 电脑 设备 配置 成功 字符 字符串 数据流 过程 图像 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 两个数据库同步sql工具 软件开发管理制度模板 什么是客户端软件开发 朔州网络安全知识竞赛获奖名单 深圳软件开发人员工资标准 服务器系统运维费用标准 裸金属服务器常见行业场景 我的世界rpg服务器刷物 网络安全手抄报简笔画儿童 数据库系统设计文档的目的 卫星电视显示服务器失败 洪恩识字什么软件开发 三级网络技术讲义 漳平市网络安全宣传周 灵武办公软件开发哪家做的好 北京租服务器 数据库程序设计基础ppt 智慧屏畅连无法连接服务器 互联网技术是科技技术嘛 够快下载软件开发 硬件能直接连接数据库吗 手游服务器怎么鉴定 数据库 精品课程 炉石传说数据库手机版下载 初中毕业能不能学网络技术 胶州ios软件开发公司有哪些 互联网网络安全与信息化 服务器的安全组可以关闭吗 微信添加好友数据库设计 奉化企业软件开发极速建站
0