快速业务通道

JMF捕获音频和视频(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

JMF捕获音频和视频(一)

时间:2011-03-13 51cto博客 zhangjunhd

相关文章:JMF捕获音频和视频(二)

1.捕获媒体数据的步骤:

l 查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。

l 得到此设备的CaptureDeviceInfo实例。

l 从此CaptureDeviceInfo实例获得一个MediaLocator,并通过它来创建一个DataSource。

l 用此DataSource创建一个Player或Processor。

l 启动此Player或Processor开始捕获媒体数据。

2.CaptureDeviceManager、CaptureDeviceInfo、MediaLocator

在JMF中,CaptureDeviceManager也是一个manager类,它提供给了一个列表,这个列表显示当前系统可以被使用的设备名称。同时CaptureDeviceManager可以通过查询的方法对设备进行定位并返回设备的配置信息对象CaptureDeviceInfo,它也可以通过注册的方法向列表加入一个新的设备信息,以便为JMF使用。

设备可通过CaptureDeviceManager的getDevice()方法直接获得设备控制权,设备的控制权一旦得到,就可以以此设备作为一个MediaLocator,可以通过CaptureDeviceInfo的getLocator()方法得到。

3.JMF识别的音频采集设备

JMF捕获音频和视频(一) - 编程入门网

4.一个实例实现音频捕获

实例有两个文件组成。CaptureAudio.java实现

①查询、获得音频采集设备。

②捕获音频。

③将音频保存到本地文件foo.wav。

StateHelper实现处理器(processor)的状态控制管理。以下为流程图:

JMF捕获音频和视频(一) - 编程入门网

JMF捕获音频和视频(一)(2)

时间:2011-03-13 51cto博客 zhangjunhd

5.音频捕获代码实例:

CaptureAudio.java

import java.io.IOException; import java.util.Vector; import javax.media.CaptureDeviceInfo; import javax.media.CaptureDeviceManager; import javax.media.DataSink; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoDataSinkException; import javax.media.NoProcessorException; import javax.media.Processor; import javax.media.control.StreamWriterControl; import javax.media.format.AudioFormat; import javax.media.protocol.DataSource; import javax.media.protocol.FileTypeDescriptor; public class CaptureAudio {     /**      * Writing captured audio to a file with a DataSink.      */     public static void main(String[] args) {         CaptureDeviceInfo di = null;       Processor p = null;       StateHelper sh = null; //查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。       Vector deviceList = CaptureDeviceManager.getDeviceList(new                  AudioFormat(AudioFormat.LINEAR, 44100, 16, 2));         if (deviceList.size() > 0){ //得到此设备的CaptureDeviceInfo实例。           di = (CaptureDeviceInfo)deviceList.firstElement();           }         else           // 找不到满足(linear, 44100Hz, 16 bit,stereo audio.)音频设备,退出。           System.exit(-1);         try {        //获得MediaLocator,并由此创建一个Processor。            p = Manager.createProcessor(di.getLocator());           sh = new StateHelper(p);         } catch (IOException e) {            e.printStackTrace();           System.exit(-1);         } catch (NoProcessorException e) {            e.printStackTrace();           System.exit(-1);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号