最近在做jmf的视频通信项目,于是先找了个代码连接下摄像头;
要求:jmf包(最好包含5个原始包)
jmf安装(没有测试这个条件是否必要,我直接先安装了)
eclipse下运行
代码如下
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.imageio.ImageIO;
import javax.media.Buffer;
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.media.control.FrameGrabbingControl;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import com.sun.media.protocol.vfw.DataSource;
public class FirstCapture extends JPanel implements ActionListener{ private CaptureDeviceInfo captureDeviceInfo=null;
private MediaLocator mediaLocator=null;
private static Player player=null;
//private ImagePanel imagePanel=null;
private JButton capture;
private Buffer buffer=null;
private VideoFormat videoFormat=null;
private BufferToImage bufferToImage=null;
private Image image=null;
public FirstCapture()
{
setLayout(new BorderLayout());
setSize(320,550); captureDeviceInfo=CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0"); //这里放置的是视频驱动
mediaLocator=new MediaLocator("vfw://0"); //这里是视频地址
//imagePanel=new ImagePanel();
capture=new JButton("拍照");
capture.addActionListener(this);
DataSource ds = new DataSource();
ds.setLocator(mediaLocator);
try {
player=Manager.createRealizedPlayer(mediaLocator);
player.start();
Component comp;
Component comp1;
if((comp=player.getVisualComponent())!=null)
add(comp,BorderLayout.NORTH);
// if((comp1=player.getControlPanelComponent())!=null)
// add(comp1,BorderLayout.CENTER);
} 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();
System.out.println("ioe");
}
//add(imagePanel,BorderLayout.SOUTH);
add(capture,BorderLayout.CENTER);
}
@Override
public void print(Graphics g) {
// TODO Auto-generated method stub
super.print(g);
g.setColor(new Color(255,0,0));
g.drawLine(0, 0, 100, 100);
} public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f = new JFrame("FirstCapture");
FirstCapture cf = new FirstCapture();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
player.close();
System.exit(0);}});
f.add("Center",cf);
f.pack();
f.setSize(new Dimension(320,550));
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
FrameGrabbingControl fgc=(FrameGrabbingControl)player.getControl("javax.media.control.FrameGrabbingControl");
buffer=fgc.grabFrame();
bufferToImage=new BufferToImage((VideoFormat)buffer.getFormat());
image=bufferToImage.createImage(buffer);
try {
ImageIO.write((RenderedImage) image, "jpg", new File("F:\\test.jpg"));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
// public static void saveImage(Image image,String path)
// {
// BufferedImage bi=new BufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);
// Graphics2D g2 = bi.createGraphics();
// g2.drawImage(image, null, null);
// FileOutputStream fos=null;
// try {
// fos=new FileOutputStream(path);
//
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }
}
- 大小: 3.5 KB
- 大小: 36.5 KB
分享到:
相关推荐
java调用摄像头拍照录像 实用 副源码
如果是调用usb的摄像头,需要把本地的禁用。资源里有两个功能,查看图像和拍照。
java opencv 调用摄像头实现拍照及本地保存 支持上传FTP 可以配置本地路径及FTP路径
java调用摄像头保存图片,通过Face++和Javacv判断如果视频中含有人脸,保存图片到本地指定路径!
使用java技术实现调用电脑摄像头拍照,适用与聊天室、人脸识别、拍照、人脸支付、监控等需要调摄像头获取照片的场景
用java编写一个关于jmf调用摄像头拍照的源代码
参照webcam-capture开源项目,我实际写了个java调用摄像头拍照的例子 在以下环境中测试通过: java 1.8 Windows7 64
Java调用电脑摄像头拍照实现例子,运用的是开源项目webcam-capture实现的;详情看这里:https://blog.csdn.net/qq_22078107/article/details/85927626
java调用摄像头实例,包含所需要的jar文件,下载即可运行。
js调用本地摄像头拍照并上传到web服务器。后台使用java实现图片的接收和存储,上传的图片默认保存到项目下的images文件夹中。
使用Java调用摄像头进行拍照源码。 JMF安装文件下载地址: http://www.blackswansoft.com/songhaikang/files/myfile/Java Media Framework (JMF) API播放.rar
javacv 的开发jar,及简单demo,0.8版本免安装,支持windows-32位,及64位。其实和jdk安装版本有关,64位系统装32位jdk,或者32位系统可直接用opencv-2.4.9-0.8-windows-x86.jar 的dll;如64位系统装了64位jdk可直接...
java的JFrame中调用摄像头进行拍照的实例,内有说明文档,附有源码和jmf的插件
flash调用摄像头拍照
jsp调用摄像头拍照,控制摄像头操作 其中包括asp、php调用控件的实现例子,
java swing opencv调用摄像头实现拍照及本地保存支持上传FTP路径配置(内附源代码)
javaWeb调用摄像头拍照,有两种解决方案:一种是使用ActiveX控件调用摄像头实现拍照上传功能,这种方式只能在ie浏览器下有效,限制非常大;另一种是调用flash实现拍照功能,源码主要介绍下如果通过调用flash插件实现...
jsp+servlet实现,包括后台保存为图片代码。 两种模式: 1:直接修改网上图片 ...2:接用本地摄像头,拍照后处理上传。 整个工程,源码一起上传,下载eclipse导入后直接可以测试。 flash为:AvatarEditor.swf
兼容性不是很高。大家可以帮忙完善。哈哈。
使用java实现快照存储,程序员也需要自拍吧。