俗话说工欲善其事必先利其器,而我们在尝试使用摄像头前,要导入相应的包,才可完成。

  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();

自己试一试吧!