JMF(二) 之 捕获音频

此日志完全是个人理解,若有不正确之处,请指正!!!

几个重要的类:

CaptureDeviceManager:也是一个manager类,它提供给了一个列表,这个列表显示当前系统可以被使用的设备名称。  

CaptureDeviceInfo: 同时CaptureDeviceManager可以通过查询的方法对设备进行定位并返回设备的配置信息对象                  CaptureDeviceInfo,它也可以通过注册的方法向列表加入一个新的设备信息,以便为JMF使用。

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

 捕获媒体数据的步骤:

        1、查询CaptureDeviceManager,来定位你需要使用的媒体采集设备。
        2、得到此设备的CaptureDeviceInfo实例。
        3、从此CaptureDeviceInfo实例获得一个MediaLocator,并通过它来创建一个DataSource。

               AudioFormat type = new AudioFormat(AudioFormat.LINEAR); //音频编码格式

                   Vector deviceList = CaptureDeviceManager.getDeviceList(type);

                  if(deviceList.size() > 0){

                          CaptureDeviceInfo capturedeviceinfo = (CpatrueDeviceInfo)deviceList.firstElement();//任取一个设备即可

                           MediaLocator medialocator = captruedeviceinfo.getLocator();

                 }else{

                                System.out.println("找不到音频采集设备");

                }
        4、用此MediaLocator创建一个Player或Processor。

              Processor process = Manager.createProcessor(medialocator);

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

             在启动Processor之前,需要configure、定义待存储该媒体的内容类型、prefetch、realiz、等几个步骤。

 Processor.configure()、  

FileTypeDescirptor type = new FileTypeDescriptor(FileTypeDescriptor.WAVE);//当然这里也可以选择别的编码格式

processor.prefetch()、

processor.realiz()、

在处理器进入realizing状态之前,具有两个附加的准备状态:confiigaring和configured。

当配置被调用时,处理器进入configuring状态,进行与DataSource联络、去多路化和识别输入数据格式的操作。

当与DataSource的相连接并识别出数据格式后,出路器进入configured状态。

当Realized被调用后,处理器进入realized状态。

此时处理器完全创建完毕了。

DataSource source = audioprocessor.getDataOutput();

datasink = Manager.createDataSink(source, dest);//创建一个数据池

datasink.start();

 state.playToEndOfMedia(100);//开始捕获媒体数据

 state.close();//关闭Player

datasink.close();//关闭datasink


 到此,音频捕获成功,并保存到本工程的一个目录中。

发现问题:

          1、 保存的的文件几分钟的音频就有二十多兆,在保存音频时是否需要压缩!!!???

          2、捕获的音频文件中,杂音太大。这个问题不知道怎么解决???

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值