视频的捕获与音频的捕获很类似。
创建 Player 有两种方式:MediaLocator的实例作为参数或者使用 DataSource的实例作为参数。
先用DataSource的实例作为参数来创建Player:
视频采集,必须要有视频采集设备,在安装JMF后,Registry中 Detect Capture Devices以后,可以发现在Capture Devices多了一个设备名称:vfw:Microsoft WDM Image Capture (Win32):0。
什么是vfw?
VFW 是Microsoft公司为开发Windows平台下的视频应用程序提供的软件工具包,提供了一系列应用程序编程接口(API),用户可以通过它们很方便地实现视频捕获、视频编辑及视频播放等通用功能,还可利用回调函数开发更复杂的视频应用程序。
JMF和VFW的关系:
只要是vfw开头的设备信息,就能为JMF架构识别并加以使用。可以编写代码来识别此设备。
CaptureDeviceInfo capturedeviceInfo = CaptureDeviceManager.getDevice("vfw:Microsoft WDM Image Capture (Win32):0");
MediaLocator mediaLocator = capturedeviceInfo.getLocator();
DataSource source = Manager.createDataSource(mediaLocator);
DataSource cloneSource = Manager.createCloneableDataSource(source);
Player player = Manager.createRealizedPlayer(((SourceCloneable) cloneableSource).createClone());
FormatControl formatControl = (FormatControl)player.getControl("javax.media.control.FormatControl");
Format defaultFormat = formatControl.getFormat();
FileTypeDiscriptor outputType = new FileTypeDiscriptor(FileTypeDescriptor.MSVIDEO);//定义媒体输出类型
ProcessorModel processorModel = new ProcessorModel(cloneSource,new Format[]{defailtFormat},outputType);//数据媒体格式转换
Processor processor = Manager.createRealizdProcessor(processorModel);
至此处理器创建完毕,
怎样把视频显示出来那?
通过Component visualComponent = player.getVisualComponent();获得player的可是组件,
将其添加到面板中即可,显示出视频。
ok,程序写完了,测试: