`
pan_java
  • 浏览: 286075 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JMF 通过 Applet 获取数据

    博客分类:
  • java
阅读更多

import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Component;
import java.util.Vector; // JMF相关的类
import javax.media.CaptureDeviceInfo;
import javax.media.CaptureDeviceManager;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.media.format.VideoFormat;

import javax.swing.JPanel;
import javax.swing.JApplet;

public class VApplet extends JApplet {

	private JPanel jContentPane = null;

	private Choice choice = null;

	public VApplet() {
		super();
	}

	public void init() {
		this.setSize(320, 240);
		this.setContentPane(getJContentPane());
		this.setName("VApplet");
	}

	// 取系统所有可采集的硬件设备列表
	private CaptureDeviceInfo[] getDevices() {
		Vector devices = CaptureDeviceManager.getDeviceList(null);
		CaptureDeviceInfo[] info = new CaptureDeviceInfo[devices.size()];
		for (int i = 0; i < devices.size(); i++) {
			info[i] = (CaptureDeviceInfo) devices.get(i);
		}
		return info;
	}

	// 从已知设备中取所有视频设备的列表
	private CaptureDeviceInfo[] getVideoDevices() {
		CaptureDeviceInfo[] info = getDevices();
		CaptureDeviceInfo[] videoDevInfo;
		Vector vc = new Vector();
		for (int i = 0; i < info.length; i++) {
			// 取设备支持的格式,如果有一个是视频格式,则认为此设备为视频设备
			Format[] fmt = info[i].getFormats();
			for (int j = 0; j < fmt.length; j++) {
				if (fmt[j] instanceof VideoFormat) {
					vc.add(info[i]);
				}
				break;
			}
		}
		videoDevInfo = new CaptureDeviceInfo[vc.size()];
		for (int i = 0; i < vc.size(); i++) {
			videoDevInfo[i] = (CaptureDeviceInfo) vc.get(i);
		}
		return videoDevInfo;
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			BorderLayout borderLayout = new BorderLayout();
			jContentPane = new JPanel();
			jContentPane.setLayout(borderLayout);

			MediaLocator ml = null;
			Player player = null;
			try {
				// 这里我只有一个视频设备,直接取第一个
				// 取得当前设备的MediaLocator
				ml = getVideoDevices()[0].getLocator();
				// 用已经取得的MediaLocator得到一个Player
				player = Manager.createRealizedPlayer(ml);
				player.start();
				// 取得Player的AWT Component
				Component comp = player.getVisualComponent();
				// 如果是音频设备这个方法将返回null,这里要再判断一次
				if (comp != null) {
					// 将Component加到窗体
					jContentPane.add(comp, BorderLayout.EAST);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return jContentPane;
	}
}
分享到:
评论

相关推荐

    利用JMF,applet实现客户端拍照,然后上传到服务器图片

    在Java Applet中,我们可以通过JMF来访问和控制用户的摄像头设备。 1. **初始化JMF**: 在Applet中,首先要进行JMF的初始化。这通常涉及注册系统中的媒体服务提供商,以便JMF可以找到并使用可用的硬件设备,如摄像头...

    JMF下载和安装教程

    JMF插件可以通过Oracle官方网站免费获取。下载链接可能会变动,但通常可以在Java SE技术页面找到。下载的文件通常是`.exe`扩展名,例如`jmf-2_1_1.e-windows-i586.exe`,然后按照标准的Windows软件安装步骤进行操作...

    JMF 介绍及API

    3. 具有音频和视频捕获功能,可以从麦克风和摄像头等设备获取数据并保存为多媒体文件。 4. 提供多媒体文件的处理和格式转换能力。 5. 支持向网络发送音频和视频流,以及在网络上广播音频和视频内容。 JMF的架构可以...

    JAVA读取摄像头(JMF)

    ### JAVA读取摄像头...通过上述分析,我们可以看到通过 JMF 在 Java 中实现摄像头捕获和图像处理等功能的具体实现方法和技术细节。这不仅适用于开发桌面应用,还可以扩展应用于服务器端或其他复杂的多媒体处理场景。

    关于JMF系统的详细说明

    - `getControl()`方法用于获取这些控制对象,并且它们的可视化组件可以通过`getControlComponent()`方法获取,以便在Applet或应用程序中展示,让用户与控制对象交互。 4. **RTP流媒体处理** - JMF支持RTP(Real-...

    经典Java媒体框架JMF

    例如,可以通过CaptureDevice从麦克风或摄像头获取数据,并将其转换成可用于播放的媒体数据流。 ##### 播放器(Player) 播放器(Player)是负责播放媒体数据的核心组件。Player可以根据不同的数据源创建并播放...

    java的媒体架构(JMF).docx

    JMF(Java Media Framework)是由Sun Microsystems开发的一套多媒体处理API集合,允许开发者在Java Applet和应用程序中实现多媒体功能。自推出以来,JMF已经成为处理多媒体内容的标准工具之一。 #### 三、JMF的核心...

    jmf _api 中文版

    1. **间接创建**:通过`Media Manager`来间接创建播放器,首先获取播放器的组件,并将其添加到Applet或Application中。 2. **直接创建**:从`Manager`类中调用`createPlayer`或`createProcessor`方法来创建一个新的...

    JMF调用USB摄像头程序

    Java Media Framework (JMF) 是一个开源的Java平台,用于处理多媒体数据,包括音频、视频以及流媒体。在本文中,我们将深入探讨如何利用JMF来调用USB摄像头进行程序开发,以及与之相关的技术要点。 首先,让我们...

    java_JMF的配置汇编.pdf

    标题中提到的“java_JMF的配置汇编”涉及到Java Media Framework(JMF),这是一个已废弃的Java API,它被用于在Java应用程序中播放和处理多媒体数据。JMF支持多种媒体格式,包括音频和视频,并允许开发者集成多媒体...

    基于Java的媒体框架(JMF)研究.pdf

    Java媒体框架(JMF,Java Media Framework)是由Sun Microsystems公司推出的一种开放式的API,它为Java应用程序和Applet提供了一种处理音频、视频和其他时间基础媒体的能力。JMF的主要目标是为开发者提供一种简单而...

    JMF摄像拍照程序.............

    - **BufferToImage类**:从Buffer中提取图像数据。 - **ImageIcon类**:用于创建图标,此处用于显示捕获的图像。 - **resize方法**:实现图像的缩放功能,支持按比例缩放。 ##### 3. 用户界面交互 - **JButton类**...

    Java webcam player

    通过学习和分析Java WebCam Player的源代码,你可以深入了解Java Applet的开发过程,以及如何处理网络摄像头流和多媒体数据。虽然Java Applet现在已不再主流,但它的原理和技术仍然对理解现代Web开发技术,如WebRTC...

    Java+Media+API的研究与应用.pdf

    3. **流媒体数据的实时传输与播放**:通过JMF开发的Java Application和Java Applet程序,能够实现在网络中传输和播放流媒体数据,测试结果表明,无论是独立应用还是嵌入网页的小程序,均能实现高质量的多媒体数据...

    基于JMF 的Internet 可视通话软件的设计与实现 (2005年)

    JMF是由SUN公司推出的,旨在将音视频等媒体内容集成到Java程序和Applet中的一套应用程序接口(API),它为Java程序增添了捕捉、处理、存储、播放和传输多媒体数据的功能。 JMF框架由两个核心部分构成:JMFAPI和...

    简单媒体播放器

    JMF 是Java平台上的多媒体处理框架,它提供了捕获、播放、处理和控制多媒体数据的功能。该框架支持多种媒体格式,包括音频、视频和流媒体,通过注册插件(称为“处理器”或“传输器”)来处理不同的文件类型。JMF...

    JAVA 调用摄像头

    `jmf-2_1_1e-windows-i586`是Java Media Framework(JMF)的一个版本,它是Java平台上处理多媒体数据的核心库。以下是关于这些知识点的详细说明: 1. **Java Web**: Java Web是指使用Java技术构建的Web应用程序。它...

    浅析几种Java播放音频技术及实例.pdf

    Applet播放音频的实例通常需要通过Applet类的getAudioClip()方法来获取音频文件,并通过界面按钮触发播放、循环或停止事件。 5. Application中播放音频: 在Application中播放音频时,不能使用java.applet的...

Global site tag (gtag.js) - Google Analytics