闲来无事,便想到研究一下JMF。
首先,下载JMF,安装。
打开eclipse,新建工程,注意要将你的JMF引入到工程的classpath中。
(在你的工程上右键->Build Path->Configure Build Path,在弹出的对话框中,选择Libraries->Add External JARs,在弹出的对话框中,选择JMF安装目录下的\lib,我是全部将下面的jar都选中了。)
新建一个类。加入如下方法(此代码网上有)。
唯一需要注意的是:
Format videoFormat = new VideoFormat(VideoFormat.RGB);
Vector<CaptureDeviceInfo> deviceList = CaptureDeviceManager
.getDeviceList(null);
我之前是按照网上的写法:
Format videoFormat = new VideoFormat(VideoFormat.RGB);
Vector<CaptureDeviceInfo> deviceList = CaptureDeviceManager
.getDeviceList(videoFormat);
可是无论如何也取不到设备列表,后经多方查找,有人说将
getDeviceList()的参数设为null即可,一试果然如此。但尚不知道原因,麻烦大家告知我一声吧。
public CaptureDeviceInfo getCaptureDeviceInfo() {
Format videoFormat = new VideoFormat(VideoFormat.RGB);
Vector<CaptureDeviceInfo> deviceList = CaptureDeviceManager
.getDeviceList(null);
if (deviceList.size() < 1) {
JOptionPane.showMessageDialog(null, "No capture device be found",
"Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
String[] deviceNames = new String[deviceList.size()];
for (int i = 0; i < deviceNames.length; i++) {
deviceNames[i] = deviceList.get(i).getName();
}
String deviceName = (String) JOptionPane
.showInputDialog(null, "Pls choose video input device",
"Please Choose", JOptionPane.QUESTION_MESSAGE, null,
deviceNames, deviceNames[0]);
if (deviceName == null) {
return null;
} else {
CaptureDeviceInfo deviceInfo;
for (int i = 0; i < deviceNames.length; i++) {
deviceInfo = deviceList.get(i);
if (deviceName.equals(deviceInfo.getName())) {
return deviceInfo;
}
}
}
return null;
}
分享到:
相关推荐
以下是一段简单的代码示例,展示了如何使用JMF获取麦克风输入: ```java import javax.media.*; import javax.media.control.*; public class MicrophoneCapture { public static void main(String[] args) { ...
- **视频捕获**:JMF提供了VideoInput类,用于从摄像头或其他视频输入设备获取原始视频数据。 - **视频编码**:捕获的视频数据需要经过编码才能在网络上传输。JMF支持多种编码标准,如MPEG-1、H.263等。 - **网络...
2. **查找摄像头设备**: 使用 `Manager.createCaptureDevice()` 方法来获取摄像头设备列表。选择合适的设备后,可以创建一个 `Player` 对象来控制摄像头。 3. **启动摄像头**: 调用 `Player.start()` 方法开始...
1. **JMF组件**: - **MediaLocator**:用于定位媒体资源的接口,它可以是本地文件、URL或者网络流。 - **Player**:播放媒体内容的核心组件,它根据MediaLocator加载媒体并进行播放。 - **Processor**:对媒体...
1. **JMF基础**:JMF是Sun Microsystems开发的一个开源库,主要用于处理多媒体数据,包括音频和视频。它提供了一种标准的方式来注册、管理和控制媒体播放器,支持多种媒体格式,并且可以扩展以支持新的媒体类型。 2...
这里使用`CaptureDeviceManager.getDevice()`方法来获取指定的视频捕获设备信息。`"vfw:MicrosoftWDMImageCapture(Win32):0"`是一个设备定位器字符串,指定了要使用的具体视频捕获设备。 ```java mediaLocator = ...
`AudioDeviceUnavailableEvent` 类是 `ControllerEvent` 的子类,表示控制器无法获取音频设备。这可能是由于设备被其他进程占用或者硬件问题导致的。 `AudioFormat` 类是 `Format` 类的子类,提供了关于压缩音频...
1. **组件体系结构**:JMF基于组件化的架构,由多个可插拔的媒体处理器(称为“处理器链”)组成,这些处理器负责解码、播放、捕获等任务。开发者可以扩展或替换这些组件以适应特定的多媒体格式。 2. **注册服务...
1. **设备访问**:JMF提供对本地硬件资源,如摄像头和麦克风的访问,通过`MediaLocator`对象指定设备的URL或端口。 2. `CaptureDevice`:使用JMF的`CaptureDevice`类,可以获取和控制摄像头的输入源。 3. **预览与...
1. “访问我们.url”是一个链接快捷方式,可能是开发者或制造商提供的网站链接,用户可以通过这个链接获取更多关于JMF608MP工具的信息、技术支持或者更新。 2. “U盘量产网.url”同样是一个网址链接,可能指向一个...
可以通过`getDeviceDescriptions()`方法获取设备列表,并根据需求选择合适的设备。 4. **创建捕捉会话**: 创建一个`CaptureSession`,这是捕获图像的核心部分。你需要指定视频格式,如分辨率、帧率等,然后调用`...
6. **Capture Device**:捕获设备接口允许JMF获取来自硬件输入的多媒体数据,例如摄像头或麦克风。 通过研究这些组件的实现,开发者不仅可以掌握JMF的工作流程,还能了解到如何处理多媒体数据的挑战,如同步问题、...
在JMF中,媒体捕获是指从外部设备(如摄像头或麦克风)获取音频或视频数据。这些数据可以被实时处理,比如调整音量、裁剪画面等,也可以存储到本地文件中。媒体流传输则涉及将这些数据发送到网络,使远程用户可以...
1. **Media Manager**: 这是JMF的入口点,负责管理所有媒体资源的加载、播放和控制。它可以根据媒体类型和可用的硬件资源来选择合适的播放器。 2. **Player**: JMF中的Player类是媒体播放的核心,它可以解析媒体...
JMF 的CaptureDeviceManager.getDeviceList(null)获取不到设备列表,返回值为空,的解决方法;
JMF602B完全符合SATA I/II规范,确保了与各种SATA设备的兼容性。 #### CPU与Flash管理 它内建有强大的CPU,能够高效处理复杂的指令,并支持多种闪存类型,包括NAND Flash,提供灵活的存储解决方案。 #### 系统集成...
4. **RESTful API**:为了实现跨平台的访问,项目可能提供了RESTful接口,便于其他应用或设备获取和上传音乐数据。 5. **安全性**:使用Java的安全特性,如SSL/TLS加密,防止未授权访问,保护用户数据。 6. **测试...
1. **视频采集**:JMF通过`CaptureDevice`接口来获取视频源,通常是摄像头。开发者首先需要注册并初始化设备,然后创建一个`Player`实例来播放捕获的视频。在这个过程中,可能需要设置各种参数,如帧率、分辨率和...
2. **捕获视频流**:使用JMF的CaptureDevice接口从摄像头获取视频流。这通常涉及到选择合适的设备,设置捕获格式,然后启动捕获。 3. **创建RTP会话**:使用JMF的RTPManager类创建一个RTP会话,这将处理RTP包的发送...
在音频捕获方面,JMF支持从麦克风或其他音频输入设备获取声音数据。AudioSystem类是音频捕获的关键,它可以创建并管理音频输入流。通过设置适当的采样率、位深度和声道数,开发者可以定制音频捕获的质量。 播放视频...