简单使用JMF调用摄像头

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuruiqun/article/details/49107257

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

本次主要是初步学习如何使用JMF调用摄像头,简单步骤记录如下:

1、下载JMF

用到的JMF版本为 jmf-2_1_1e-windows-i586,已上传资源至CSDN下载,点击链接即可。点击下载JMF

2、运行 jmf-2_1_1e-windows-i586

运行 jmf-2_1_1e-windows-i586.exe 文件,主要会在选定目录下生成bin、dos、lib等三个文件夹。

(运行结束,会提示重启生效。其实不重启也没有关系~)

3、在 myeclipse 中导入相应 JAR 文件

build path -> configure build path -> libraries -> add external JARs

找到 jmf-2_1_1e-windows-i586.exe 安装目录,导入 lib 中相关 jar 文件(用到的主要是jmf.jar、mediaplayer.jar、sound.jar)

4、源程序

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

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

public class CameraCapture extends JFrame {

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

		//设置窗体的一些属性
		this.setTitle("CameraCapture");
		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 {
	
				CameraCapture mc = new CameraCapture();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}


猜你喜欢

转载自blog.csdn.net/liuruiqun/article/details/49107257
今日推荐