纪念平时一天的研究成果,本人学了那么多技术从未写过文章,今儿想贡献一下,望大家笑纳,多多指教
1、基于FMJ实现
FMJ是一个Java开源项目它是JMF(Java Media Framework)的一个"替代品"并能够使用现存的第三方插件如jffmpeg和IBM的MPEG-4。
它不需要给JRE安装任东西,还提供一些JMF没有的特性如:SWT支持等。
项目主页:http://www.open-open.com/lib/view/home/1325062025468
测试成功,兼容Window32、Linux32/64 由于官方未提供Window64的DLL支持,不能够在64下运行,期待官方早日更新
所需Lib:fmj.jar、ffmpeg-java.jar、gstreamer-java.jar、jdom.jar、jheora-patch.jar、jl1.0.jar、jna.jar、jogg-0.0.7.jar、jorbis-0.0.15.jar、jspeex.jar、lti-civil-no_s_w_t.jar、
mp3spi1.9.4.jar、theora-java.jar、tritonus_share.jar、vorbisspi1.0.2.jar
所需Dll:Window32【civil.dll、jdshow.dll】 Linux32/64 【libcivil.so】这些置于项目根目录
实现代码:
package xs.camera.view;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.media.MediaLocator;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import net.sf.fmj.ui.application.CaptureDeviceBrowser;
import net.sf.fmj.ui.application.ContainerPlayer;
import net.sf.fmj.ui.application.PlayerPanelPrefs;
public class Camera extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel cameraPanel=null;//摄像头面板
private static int num=0;
public Camera() throws Exception{
this.setTitle("摄像头截图工具");
this.setSize(480, 500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.cameraPanel=new JPanel();
this.getContentPane().setLayout(new BorderLayout());
this.getCont