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源代码。解压后点击里面的网页文件就可以直接执行,并且提供了源代码。播放的声音文件也在压缩包里面。如果需要播放其他的文件,则需要修改源代码的URL地址。
利用JMF实现客户端摄像头拍照,然后将图片发送到服务器端
用JMF编写的视频播放程序.是初学者学习JAVA不错的范例
基于JMF的内外网多媒体数据传输技术 基于JMF的内外网多媒体数据传输技术 基于JMF的内外网多媒体数据传输技术
JMF605开卡教程
程序描述:用JMF2.0做的调用摄像头 进行视屏录制,是 医学上“内镜”影像学录像和截图的简单DEMO。 完整的MyEclipse项目,含有源码和所需的JAR包,编译完成有直接运行com.jake.camera.LocalVideoTest就可出现录制...
jmf中文开发指导,jmf中文开发指导,jmf中文开发指导
java 通过jmf播放视频简单demo
JMF 最新安装包 jmf-2_1_1e-windows-i586.exe JMF 2.0 API
jmf.jar jmf.jar jmf包 不错的东西
详细说明:usb 摄像头视频采集,开发工具:java jmf-usb video camera acquisition, development tools : java jmf audio 播放 和 video Camera数据采集 一个完整的MyEclipse项目 JDK1.4.2以上版本
固态硬盘DIY,JMF605方案,可以学习下
智微固态硬盘主控制器 用户闪存颗粒支持列表 JMF608 JMF609
JMF667主控SSD开卡工具
jmf jar包
JMF播放MP3简单例子,Eclipse项目,免安装JMF,但是要将JMF安装时产生的20个dll文件拷贝在jre\bin下面才能正常运行。 关于20个dll的详情,可以下载我的JMF版音乐播放器,里面有文档说明: ...
JAVA读取摄像头(JMF)成功 保存图像,拍照完成后显示照片的组件,可以拖动范围框,选择要截取的部分 关闭摄像头
经典Java媒体框架JMF,可以在Java Applet和应用程序中播放各种媒体文件,例如AU、AVI、MIDI、MPEG、QuickTime和WAV等文件
JMF2.1 Java媒体框架(JMF)使你能够...它是一个相当复杂的系统,完全了解这个系统可能需要花上几周的时间,但是这篇文章将主要介绍JMF的几个核心接口和类,然后通过一个简单的例子向你展示如何利用该接口进行编程。
java多媒体框架JMF2.1java多媒体框架JMF2.1java多媒体框架JMF2.1java多媒体框架JMF2.1java多媒体框架JMF2.1