`
linsl
  • 浏览: 71706 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

jmf简单例子

    博客分类:
  • java
阅读更多
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.Panel;
import java.awt.Rectangle;
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.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

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.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
 * @author 
 * @version 创建时间:Apr 28, 2008 8:02:26 PM
 * 类说明:
 */
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;
	/**
	 * @param args
	 */
	public FirstCapture()
	{
		 setLayout(new BorderLayout());
		 setSize(320,550);
		String str="vfw:Microsoft WDM Image Capture (Win32):0";
		captureDeviceInfo=CaptureDeviceManager.getDevice(str);
		mediaLocator=new MediaLocator("vfw://0");
		imagePanel=new ImagePanel();
		 capture=new JButton("拍照");
		 capture.addActionListener(this);
		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();
		}
		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);
	}
	@Override
	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);
		imagePanel.setImage(image);
		saveImage(image,"D:/test.jpg");
	}
	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();
		}
		JPEGImageEncoder je=JPEGCodec.createJPEGEncoder(fos);
		JPEGEncodeParam jp=je.getDefaultJPEGEncodeParam(bi);
		jp.setQuality(0.5f, false);
		je.setJPEGEncodeParam(jp);
		try {
			je.encode(bi);
			fos.close();
		} catch (ImageFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	class ImagePanel extends Panel 
	  {
	    public Image myimg = null;
	    
	    public ImagePanel() 
	    {
	      setLayout(null);
	      setSize(320,240);
	    }
	    
	    public void setImage(Image img) 
	    {
	      this.myimg = img;
	      repaint();
	    }
	    
	    public void paint(Graphics g) 
	    {
	      if (myimg != null) 
	      {
	        g.drawImage(myimg, 0, 0, this);
	      }
	      
	    }
	  }
	
}
 

 

分享到:
评论
1 楼 allenlinrui 2008-08-07  
很不错~我参考参考

相关推荐

    JMF教程详解及简单例子分析

    ### JMF教程详解及简单例子分析 #### 一、关于此指南 本指南旨在帮助读者了解Java Media Framework(简称JMF)的基础知识及其在实际应用中的实现方式。JMF是Sun Microsystems开发的一个Java API,用于处理多媒体...

    JMF播放MP3简单例子,JMF免安装

    JMF播放MP3简单例子,Eclipse项目,免安装JMF,但是要将JMF安装时产生的20个dll文件拷贝在jre\bin下面才能正常运行。 关于20个dll的详情,可以下载我的JMF版音乐播放器,里面有文档说明: ...

    java 通过jmf播放视频简单demo

    在这个“java 通过jmf播放视频简单demo”中,我们将探讨如何利用JMF在Java应用程序中实现视频播放功能。 首先,我们要了解JMF的基本概念。JMF是一种可扩展的平台,它提供了媒体数据的捕捉、处理、显示和传输的能力...

    JMF使用实例

    ### JMF使用实例详解 #### 一、引言 JMF(Java Media Framework)是用于处理音频和视频的Java API集合。自1997年左右发布以来,它经过了一系列改进,目前广泛使用的版本为JMF 2.1.1。尽管JMF具有许多便捷的功能,...

    jmf rtp 传输视频例子

    在这个"jmf rtp 传输视频例子"中,我们将探讨如何使用JMF和RTP来实现实时视频传输。 首先,我们需要理解JMF的基本工作原理。JMF提供了一个服务接口,允许开发者注册媒体处理器、捕获设备以及播放器。通过这些接口,...

    JMF安装程序+基础教程+项目实例

    这个“JMF安装程序+基础教程+项目实例”压缩包提供了一个全面的入门指南,帮助用户了解并掌握JMF的使用。下面我们将深入探讨JMF的核心概念、安装过程、基础教程以及项目实例。 一、JMF核心概念 1. **组件体系**:...

    简单的jmf搞笑程序

    **标题解析:** "简单的jmf搞笑程序" 这个标题暗示了...综上所述,这个“简单的jmf搞笑程序”提供了一个学习和实践JMF的实例,同时也可能是一个有趣的娱乐工具,有助于开发者提升其在多媒体处理和Java编程方面的技能。

    基于JAVA JMF 的MP3播放器及简单视频播放器

    本项目是基于JMF构建的一个简单但功能完备的MP3播放器,同时也包含了基本的视频播放功能。这个软件包的焦点在于理解和实现多媒体数据处理的Java编程技术。 首先,我们来深入理解JMF。JMF允许开发者处理多种媒体格式...

    jmf调用摄像头成功例子

    这个简单的示例展示了JMF如何与摄像头交互,但实际应用可能需要更复杂的处理,例如调整帧率、处理视频流的编码和解码等。此外,由于JMF的维护和支持已经停止,现代Java应用程序可能考虑使用其他库,如OpenCV、JavaCV...

    JMF的相关资料和实例程序

    7. **实例程序**:压缩包中的源代码实例可能涵盖了多种应用场景,如简单的播放器、复杂的流媒体服务器、媒体转换工具等。通过分析和运行这些示例,可以深入理解JMF的实践应用。 8. **问题解决**:在实际开发中可能...

    JMF基础技术.doc

    本文档将深入讲解JMF的基础技术,包括如何安装JMF,以及如何使用它来创建一个简单的音频播放器。 首先,安装JMF通常涉及双击安装程序并选择将库文件移动到系统目录,比如Windows下的`Windows/Systemdirectory`,...

    java jmf 例子

    在这个“java jmf 例子”中,我们将探讨如何利用JMF进行多媒体编程。 首先,JMF的安装至关重要。在开始任何编程之前,你需要从官方或可靠的第三方源下载JMF的安装包,并按照指示完成安装过程。安装后,JMF的库文件...

    JMF2.1 下载 最新版本*(只有安装包)

    JMF2.1 Java媒体框架(JMF)使你能够...它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。

    JMF.zip_JMF W_Java 播放器_hookqq_jmf_jmf-2_0-spec

    JMF提供了丰富的API,使得在Java应用程序中集成多媒体功能变得简单。"JMF.zip_JMF W_Java 播放器_hookqq_jmf_jmf-2_0-spec"这个压缩包包含了一个基于Java开发的媒体播放器示例,适用于初学者学习和理解JMF的用法。 ...

    sun官网JMF包

    7. **示例代码**:下面是一个简单的JMF播放音频文件的示例: ```java import javax.media.Manager; import javax.media.MediaLocator; import javax.media.Player; public class JmfPlayer { public static ...

    JMF介绍及实例.doc

    ### JMF介绍及实例 #### 一、JMF概述 JMF(Java Media Framework)是Sun Microsystems(现已被Oracle收购)推出的一个强大的多媒体框架,它为Java开发人员提供了一套全面的API,用于处理音频、视频和其他形式的时...

    JMF安装,配置,全教程(有例子)

    4. **验证安装**:通过编写一个简单的Java程序,尝试导入JMF相关的类并运行,如果能正常运行,说明JMF已经成功安装。 ### JMF的配置 1. **注册组件**:JMF需要注册支持的媒体格式和设备。在`%JAVA_HOME%\lib\jmf....

    JMF教程和深入理解

    Player用于简单的播放任务,而Processor则提供了更高级的功能,如剪辑、转码和混音。 在JMF的入门教程中,你会学习到如何使用基本的API来创建和控制媒体播放。这包括如何加载媒体文件,如何启动、暂停和停止播放,...

    JAVA 使用JMF调用摄像头

    在这个例子中,我们首先创建了一个`Manager`实例,然后通过`locateDevice`方法找到一个可用的视频输入设备(即摄像头)。接着,我们设置捕获的视频格式为YUV,然后打开设备获取`DataSource`。实际应用中,你需要添加...

    java JMF音乐播放器

    要创建一个简单的音乐播放器,首先需要在项目中引入JMF的库文件。这通常意味着将JMF的jar文件添加到项目的类路径中。接着,可以创建一个JMF的Player对象,这个对象负责加载、解码和播放媒体文件。例如,可以使用`...

Global site tag (gtag.js) - Google Analytics