JMF开启摄像头
来源:互联网 发布:天猫双11晚会网络直播 编辑:程序博客网 时间:2024/05/01 16:06
使用JMF可以同时提取视频流和音频流,然后通过数据源的混合,可以达到视频音频同时收集和播放的功能。其中主
要是通过数据源的混合,也就是视频流和音频流的数据源的混合。下面我们来写一个例子。通过开启摄像头的麦克风实
现同时收集视频和音频。
- package com.bird.test;
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Frame;
- import java.awt.event.WindowAdapter;
- import java.awt.event.WindowEvent;
- import javax.media.ControllerEvent;
- import javax.media.ControllerListener;
- import javax.media.EndOfMediaEvent;
- import javax.media.Manager;
- import javax.media.MediaLocator;
- import javax.media.Player;
- import javax.media.PrefetchCompleteEvent;
- import javax.media.RealizeCompleteEvent;
- import javax.media.Time;
- import javax.media.protocol.DataSource;
- public class MyVideoPlayer implements ControllerListener{
- public static void main(String[] args) {
- MyVideoPlayer sp = new MyVideoPlayer();
- sp.play();
- }
- private Frame f;
- // private Player videoplayer;
- // private Player audioplayer;
- private Player dualPlayer;
- private Component visual;
- private Component control = null;
- private MediaLocator mediaLocator;
- private MediaLocator audioLocator;
- public void play() {
- f = new Frame("MyPlayer");
- f.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent we) {
- if (dualPlayer != null) {
- dualPlayer.close();
- }
- System.exit(0);
- }
- });
- f.setSize(500, 400);
- f.setVisible(true);
- try {
- mediaLocator = new MediaLocator("vfw://0");// 此类描述媒体目录的地址????
- audioLocator = new MediaLocator("javasound://44100");
- } catch (Exception e) {
- System.out.println(e.toString());
- }
- try {
- DataSource[] dataSources = new DataSource[2];
- dataSources[0] = Manager.createDataSource(mediaLocator);
- dataSources[1] = Manager.createDataSource(audioLocator);
- DataSource ds = Manager.createMergingDataSource(dataSources);
- dualPlayer = Manager.createPlayer(ds);
- } catch (Exception e1) {
- e1.printStackTrace();
- }
- dualPlayer.realize();
- dualPlayer.addControllerListener(this);
- }
- private int videoWidth = 0;
- private int videoHeight = 0;
- private int controlHeight = 30;
- private int insetWidth = 10;
- private int insetHeight = 30;
- // 监听player的相关事件
- public void controllerUpdate(ControllerEvent ce) {
- if (ce instanceof RealizeCompleteEvent) {
- // player实例化完成后进行player播放前预处理
- dualPlayer.prefetch();
- } else if (ce instanceof PrefetchCompleteEvent) {
- if (visual != null)
- return;
- // 取得player中的播放视频的组件,并得到视频窗口的大小
- // 然后把视频窗口的组件添加到Frame窗口中,
- if ((visual = dualPlayer.getVisualComponent()) != null) {
- Dimension size = visual.getPreferredSize();
- videoWidth = size.width;
- videoHeight = size.height;
- f.add(visual);
- } else {
- videoWidth = 320;
- }
- // 取得player中的视频播放控制条组件,并把该组件添加到Frame窗口中
- if ((control = dualPlayer.getControlPanelComponent()) != null) {
- controlHeight = control.getPreferredSize().height;
- f.add(control, BorderLayout.SOUTH);
- }
- // 设定Frame窗口的大小,使得满足视频文件的默认大小
- f.setSize(videoWidth + insetWidth, videoHeight + controlHeight
- + insetHeight);
- f.validate();
- // 启动视频播放组件开始播放
- dualPlayer.start();
- } else if (ce instanceof EndOfMediaEvent) {
- // 当播放视频完成后,把时间进度条恢复到开始,并再次重新开始播放
- dualPlayer.setMediaTime(new Time(0));
- // videoplayer.start();
- // audioplayer.start();
- dualPlayer.start();
- }
- }
- }
其实代码中很多的GUI编程和监听器,真正的JMF的东西并不是很多,主要是注意Player的状态问题。由realizing变成
relized;
- 顶
- 14
- 踩
0 0
- JMF开启摄像头
- # JMF摄像头
- jmf摄像头applet
- 利用JMF进行摄像头拍照:)
- 利用JMF进行摄像头拍照:
- 利用JMF进行摄像头拍照
- [转]调用jmf打开摄像头
- JMF调用USB摄像头程序
- 简单使用JMF调用摄像头
- 【Java】【JMF】在win7下面使用jmf测试摄像头 windows7 jmf 摄像头
- 利用JMF进行摄像头拍照(转抄)
- 利用JMF进行摄像头拍照(转载)
- JAVA操作摄像头拍照的例子-JMF
- 用JMF写摄像头拍照程序(转)
- JMF 摄像头 视频捕捉拍照 源代码
- jmf实现调用笔记本摄像头并拍照
- (转)JMF找不到摄像头的解决方法
- 用JAVA中的JMF来打开摄像头
- Xcode几个常用的插件
- iOS UIAlertController上修改标题(title) 消息(message) 按钮 的字体大小及颜色
- PHP调用JS验证弹出框无法显示的问题
- test dword ptr [eax],eax ; probe page.
- 高德地图V3.3.2在非arm64-v8a,armeabi的CPU架构手机上运行奔溃的问题
- JMF开启摄像头
- 使用OkHTTP来调用restful接口上传文件
- IntelliJ IDEA WEB项目的部署配置
- 麒麟开源堡垒机安装部署测试及优缺点总结
- C++归并排序代码
- 【bzoj1398】Vijos1382寻找主人 Necklace
- xshell连接linux中文编码问题
- Android传感器(一):传感器列表
- android listview系列之初步接触listview(一)