java实现摄像头调用,处理视频流

java实现摄像头调用,处理视频流

package com.xuggler;

import javax.imageio.ImageIO;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import javax.swing.Icon;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;

import javax.swing.JButton;

import com.xuggle.xuggler.ICodec;
import com.xuggle.xuggler.IContainer;
import com.xuggle.xuggler.IContainerFormat;
import com.xuggle.xuggler.IError;
import com.xuggle.xuggler.IMetaData;
import com.xuggle.xuggler.IPacket;
import com.xuggle.xuggler.IPixelFormat;
import com.xuggle.xuggler.IStream;
import com.xuggle.xuggler.IStreamCoder;
import com.xuggle.xuggler.IVideoPicture;
import com.xuggle.xuggler.IVideoResampler;
import com.xuggle.xuggler.Utils;

import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import javax.swing.JTextField;

public class WebCamDialog extends JDialog {
   

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private static WebCamDialog instance = null;

    public static WebCamDialog getInstance() {
        if (instance == null) {
            instance = new WebCamDialog(null);
            instance.setModal(true);
            instance.setLocationRelativeTo(null);
        }
        return instance;
    }

    private void doPackDialog() {
        if (FORMAT_BIG.equals(usingFormat)) {
            getPanelCenter().setPreferredSize(new Dimension(1280, 1024));
        } else {
            getPanelCenter().setPreferredSize(new Dimension(800, 600));
        }
        pack();
        this.setLocationRelativeTo(null);
    }

    /**
     * @param owner
     */
    private WebCamDialog(Frame owner) {
        super(owner);
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setContentPane(getJContentPane());
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        this.setSize(new Dimension(521, 239));
        this.setTitle("webcamdialog");
    }

    @Override
    public void dispose() {
        super.dispose();
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getPanelEast(), BorderLayout.EAST);
            jContentPane.add(getPanelCenter(), BorderLayout.CENTER);
        }
        return jContentPane;
    }

    private File recentCaptureFile = null;
    private JPanel panelEast = null;
    private JButton jButtonCaptureAndReturn = null;
    private JButton jButtonExit = null;
    private JPanel panelCenter = null;
    private JButton jButtonCapture = null;
    private JButton jButtonOpenFolder = null;
    private BufferedImage javaImage = null;

    private Thread th = null; // @jve:decl-index=0:

    public File init() {
        doOpen();
        this.setVisible(true);
        return recentCaptureFile;
    }

    private void doOpen() {
        doClose = false;
        if (th != null && th.isAlive() && container != null && container.isOpened()) {

        } else {
            th = getNewThread();
            th.start();
        }
    }

    private String deviceName = "0"; // @jve:decl-index=0:
    private String driverName = "vfwcap"
  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值