俗话说工欲善其事必先利其器,而我们在尝试使用摄像头前,要导入相应的包,才可完成。
http://webcam-capture.sarxos.pl/ 这里下载好开发所需要的驱动 jar包(webcam-capture-0.3.10-dist.zip)
至于导入过程,网上具有教程可以自行搜索。
现在开始写摄像头代码,录制你的美:
1.写好所需界面。
2.在监听器上加上摄像头相关代码:
创建对象:Webcam webcam= null;
然后在actionPerformed方法中,加载并启动摄像头:
public void
actionPerformed
(
ActionEvent
e
){
String
str
=
e
.
getActionCommand
();
if
(
str
.
equals
(
"
启动
"
)){
//
加载摄像头
webcam
=
Webcam
.
getDefault
();
//
启动
webcam
.
open
();
关键来了,由于屏幕的不断刷新,我们会发现如果只是绘制
BufferedImage
image
=
webcam
.
getImage
();
g
.
drawImage
(
image
,
50
,
50
,
null
);
那么根本无法形成视频,而这时我们需要借助一个我们司空见惯的错误了——利用死循环,不断绘制图片。
但是我们会产生疑问,如果一直死循环,那么这个程序后续就无法操作了。
故我们要求助一个强力工具,多线程!!!(其实之前都算是为了这里铺垫)
3.完成多线程操作:
创建一个类来实现 Runnable接口。
public void open
(){
flag
=
true
;
}
public void
close
(){
flag
=
false
;
}
设置开关,方便后续操作,毕竟我们始终是要关闭的。
public void
run
(){
while
(
flag
){
BufferedImage
image
=
webcam
.
getImage
();
g
.
drawImage
(
image
,
50
,
50
,
null
);
}
}
开启后,不断循环,形成视频。
4.修改监听器逻辑:
值得强调的是,只有当我们摄像头以及多线程同时打开时,才可以录制视频。
多线程打开:
先创建对象,然后交给
Thread
对象去启动
RunVideoAble rvt = new RunVideoAble();
Thread t = new Thread(rvt);
t.start();
自己试一试吧!