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;
}
}
分享到:
相关推荐
在Java Applet中,我们可以通过JMF来访问和控制用户的摄像头设备。 1. **初始化JMF**: 在Applet中,首先要进行JMF的初始化。这通常涉及注册系统中的媒体服务提供商,以便JMF可以找到并使用可用的硬件设备,如摄像头...
JMF插件可以通过Oracle官方网站免费获取。下载链接可能会变动,但通常可以在Java SE技术页面找到。下载的文件通常是`.exe`扩展名,例如`jmf-2_1_1.e-windows-i586.exe`,然后按照标准的Windows软件安装步骤进行操作...
3. 具有音频和视频捕获功能,可以从麦克风和摄像头等设备获取数据并保存为多媒体文件。 4. 提供多媒体文件的处理和格式转换能力。 5. 支持向网络发送音频和视频流,以及在网络上广播音频和视频内容。 JMF的架构可以...
### JAVA读取摄像头...通过上述分析,我们可以看到通过 JMF 在 Java 中实现摄像头捕获和图像处理等功能的具体实现方法和技术细节。这不仅适用于开发桌面应用,还可以扩展应用于服务器端或其他复杂的多媒体处理场景。
- `getControl()`方法用于获取这些控制对象,并且它们的可视化组件可以通过`getControlComponent()`方法获取,以便在Applet或应用程序中展示,让用户与控制对象交互。 4. **RTP流媒体处理** - JMF支持RTP(Real-...
例如,可以通过CaptureDevice从麦克风或摄像头获取数据,并将其转换成可用于播放的媒体数据流。 ##### 播放器(Player) 播放器(Player)是负责播放媒体数据的核心组件。Player可以根据不同的数据源创建并播放...
JMF(Java Media Framework)是由Sun Microsystems开发的一套多媒体处理API集合,允许开发者在Java Applet和应用程序中实现多媒体功能。自推出以来,JMF已经成为处理多媒体内容的标准工具之一。 #### 三、JMF的核心...
1. **间接创建**:通过`Media Manager`来间接创建播放器,首先获取播放器的组件,并将其添加到Applet或Application中。 2. **直接创建**:从`Manager`类中调用`createPlayer`或`createProcessor`方法来创建一个新的...
Java Media Framework (JMF) 是一个开源的Java平台,用于处理多媒体数据,包括音频、视频以及流媒体。在本文中,我们将深入探讨如何利用JMF来调用USB摄像头进行程序开发,以及与之相关的技术要点。 首先,让我们...
标题中提到的“java_JMF的配置汇编”涉及到Java Media Framework(JMF),这是一个已废弃的Java API,它被用于在Java应用程序中播放和处理多媒体数据。JMF支持多种媒体格式,包括音频和视频,并允许开发者集成多媒体...
Java媒体框架(JMF,Java Media Framework)是由Sun Microsystems公司推出的一种开放式的API,它为Java应用程序和Applet提供了一种处理音频、视频和其他时间基础媒体的能力。JMF的主要目标是为开发者提供一种简单而...
- **BufferToImage类**:从Buffer中提取图像数据。 - **ImageIcon类**:用于创建图标,此处用于显示捕获的图像。 - **resize方法**:实现图像的缩放功能,支持按比例缩放。 ##### 3. 用户界面交互 - **JButton类**...
通过学习和分析Java WebCam Player的源代码,你可以深入了解Java Applet的开发过程,以及如何处理网络摄像头流和多媒体数据。虽然Java Applet现在已不再主流,但它的原理和技术仍然对理解现代Web开发技术,如WebRTC...
3. **流媒体数据的实时传输与播放**:通过JMF开发的Java Application和Java Applet程序,能够实现在网络中传输和播放流媒体数据,测试结果表明,无论是独立应用还是嵌入网页的小程序,均能实现高质量的多媒体数据...
JMF是由SUN公司推出的,旨在将音视频等媒体内容集成到Java程序和Applet中的一套应用程序接口(API),它为Java程序增添了捕捉、处理、存储、播放和传输多媒体数据的功能。 JMF框架由两个核心部分构成:JMFAPI和...
JMF 是Java平台上的多媒体处理框架,它提供了捕获、播放、处理和控制多媒体数据的功能。该框架支持多种媒体格式,包括音频、视频和流媒体,通过注册插件(称为“处理器”或“传输器”)来处理不同的文件类型。JMF...
`jmf-2_1_1e-windows-i586`是Java Media Framework(JMF)的一个版本,它是Java平台上处理多媒体数据的核心库。以下是关于这些知识点的详细说明: 1. **Java Web**: Java Web是指使用Java技术构建的Web应用程序。它...
Applet播放音频的实例通常需要通过Applet类的getAudioClip()方法来获取音频文件,并通过界面按钮触发播放、循环或停止事件。 5. Application中播放音频: 在Application中播放音频时,不能使用java.applet的...