本来就是想在自己写的java里面加入实习的摄像头监控,然后个各种百度了一下,就用JMF来弄了,不过这个东西貌似比较旧,网上的资料虽然说有,但是也不是太多,并且遇到的一下问题也不能解决,总之经过了一天的百度,终于搞定了,其实最大的问题就是安装和设置这方面。
首先就是下载,csdn也有得下载,不过觉得要积分的不太好,毕竟oracle官网有得下:http://www.oracle.com/technetwork/java/javase/download-142937.html 然后就是安装了,这里我之前百度过说安装在java sdk1.6文件夹下,然后我就这样处理了,但是似乎没有成功,虽然用jmstudio能够进行摄像头监控,但是Eclipse的测试代码就没有成功,都是NullPointerException ,百度了很久都没有成功,差点想放弃了!
然后我就将JMF卸载了,然后重装,这次根据百度上说,我直接装在c/jmf.2.1e这里,这是第n次装也遇到了些问题这个点了安装包都有的应该,我就点yes to all ,然后没有任何反应,后台进程还是有的,所以没办法直接重启后就可以了,安装成功!
安装之后可以打开JMStudio试试能不能成功,一般都可以,然后打开JMF Registry弄一下这个是用来检查本地的硬件信息的摄像头和音频。
安装了之后,还有配置环境变量:JMFHOME=C:\jmf2.1.1e 和 CLASSPATH=%JMFHOME%\lib; 这样就行了
Eclipse中将%JMFHOME%\lib下的jar全部加入到项目的classpath之中就可以了,然后我测试了一下也·成功了,下面是截图
附上测试代码:
import java.awt.BorderLayout; import java.awt.Component; import java.io.IOException; import javax.media.CannotRealizeException; import javax.media.CaptureDeviceInfo; import javax.media.CaptureDeviceManager; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoPlayerException; import javax.media.Player; import javax.swing.JFrame; public class camera_test extends JFrame{ public camera_test(){ this.setTitle("MyCapture"); this.setBounds(500,100,800,500); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void start(){ String str2 = "vfw:Microsoft WDM Image Capture (Win32):0"; CaptureDeviceInfo di = null; MediaLocator ml = null; Player player=null; di=CaptureDeviceManager.getDevice(str2); ml = di.getLocator(); System.out.println(di); System.out.println(ml); try { player=Manager.createRealizedPlayer(ml); } catch (NoPlayerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CannotRealizeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(player!=null) player.start(); Component comp = null; if((comp=player.getVisualComponent())!=null) add(comp,BorderLayout.CENTER); } public static void main(String[] args){ camera_test mc = new camera_test(); mc.start(); System.out.println("sss"); } }
时间: 2024-10-07 23:04:26