使用JMF(Java Media Framework)使用电脑摄像头 何天贵 何天贵 发布时间: 2013/05/24 16:18 阅读: 9873 收藏: 14 点赞: 1 评论: 3 JMF(J

 使用JMF(Java Media Framework)使用电脑摄像头
  • 发布时间: 2013/05/24 16:18 
  • 阅读: 9873 
  • 收藏: 14 
  • 点赞: 1 
  • 评论: 3

JMF(Java Media Framework)是Java媒体框架,包含了许多用于处理多媒体的API可以让基于JAVA的应用实现音频、视频的捕捉、处理、播放、传输等功能。利用它,可以实现音、视频播放,网络视频聊天、视频会议等功能。不说了,开讲:

1、下载地址:http://www.oracle.com/technetwork/java/javase/download-142937.html ,自从sun被oracle 收购后,网址都改成oracle.com了,网上的 sun.com的网址都不对;我下载的版本是:jmf-2_1_1e-windows-i586

2、安装:按提示一步步安装下去就可以了,安装后要重启;安装完毕后,在你的JDK安装目录\jre\lib\ext下,会多出两个文件:jmf.jar和sound.jar

3、测试摄像头:安装完毕后,在桌面会多一个"JMStudio"的快捷方式,运行它,点击"File->Capture"菜单,如果启动摄像头成功,说明你安装jmf成功。如果失败的话,按网上的说法,必须是安装32位的JDK才可以,因为JMF只支持32位JDK。由于我本机没有安装64位JDK,所以这点没有验证。

4、编写JAVA代码打开电脑摄像头,以下代码也是从网上修改而来,但是必须做以下修改才运行正常:

a、必须先初始化摄像头、再设置Jframe的一些属性并显示,如果先后顺序颠倒的话,则窗体上不会正确显示摄像头。(我本机64位win7 +jdk1.6 );

b、在eclipse中选择jdk的时候,最好选择安装jmf时所识别的jdk,否则可能报错。网上的解决方式:将jmf安装目录\lib目录下的jmf.jar,sound.jar,mediaplayer.jar三个文件导入工程,目的是要引入该目录下的jmf.properties

ok,上代码,我本机测试通过的:


import java.awt.BorderLayout; 
import java.awt.Component; 
import java.util.Vector;

import javax.media.CaptureDeviceInfo; 
import javax.media.CaptureDeviceManager; 
import javax.media.Manager; 
import javax.media.MediaLocator; 
import javax.media.Player; 
import javax.swing.JFrame;

public class CameraTest extends JFrame { 

public CameraTest() throws Exception { 
//先启动摄像头,再做后续的初始化窗体,可保证正确显示摄像头 
initCapture(); 

//设置窗体的一些属性 
this.setTitle("CaptureTest"); 
this.setBounds(500, 100, 800, 500); 
this.setVisible(true); 
this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
}

/** 
* 初始化摄像头 
*/ 
private void initCapture() throws Exception { 
//获取所有音频、视频设备 
Vector<javax.media.CaptureDeviceInfo> deviceList = javax.media.CaptureDeviceManager.getDeviceList(null);

//获取视频设备,视频设备以vfw打头 
CaptureDeviceInfo cameraDevice = null; 
for(CaptureDeviceInfo cameraDeviceTmp :deviceList){ 
if (cameraDeviceTmp.getName().startsWith("vfw")) { 
cameraDevice = cameraDeviceTmp; 
break; 



if(cameraDevice == null){ 
throw new Exception("找不到摄像头设备"); 
}

//创建视频播放器 
MediaLocator ml = cameraDevice.getLocator(); 
Player player = Manager.createRealizedPlayer(ml);

if (player == null){ 
throw new Exception("创建摄像头播放器失败"); 


//播放视频 
player.start(); 


//将播放器加入窗体 
Component comp = null; 
if ((comp = player.getVisualComponent()) != null) 
add(comp, BorderLayout.CENTER); 

}

public static void main(String[] args) { 
try {

CameraTest mc = new CameraTest(); 
} catch (Exception e) { 
e.printStackTrace(); 


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值