高清音视频流采集处理 DirectShow流媒体体系结构
九视电子视频采集卡系列产品中有多款针对专业流媒体高清领域打造的音视频采集卡,其能直接兼容各种DirectShow标准开发的视频应用软件,无需开发便能直接进行应用
视频信号源输出的模拟视频信号通过视频采集卡数字化之后,数字视频和声音传输所涉及到的一个重要概念是"流媒体"(StreamMedia)。说起视频捕捉/视频采集处理问题,我们先要来看一下基于DirectShow流媒视频采集卡。目前九视推出的高清音视频流媒体采集卡,支持DirectShow标准开发,提供完整的二次开发包SDK.对于多媒体视频应用程序二次开发,给视频捕获编程带来了很大的方便,DirectShow是一种windows平台上的流媒体体系结构。DirectShow提供了多媒体流的高质量捕获和回放机制,特别是许多关于流媒体视频的软件(如视频会议、可视电话等)开发都应用于视频捕获技术。视频捕获与实时处理是目前视频处理系统中最关键的技术之一。
DirectShow简化了媒体回放,格式转换和捕捉任务。它是基于控件对象模型(com)的。要写DirectShow应用,就必须理解com客户编程。就绝大多数应用而言,不必实现com对象。DirectShow提供了你需要的控件。(如果要通过写自己的控件来扩展DirectShow的功能,必须把他们作为com对象来实现。)
DirectShow采用了一种标准化结构体系。在DirectShow标准结构体系中,DirectShow过滤器与控制、多样化的设备、本地文件系统、TV调频和视频捕获卡、VFW编码器、视频显示卡(通过DirectDraw)和显卡进行交互。 为了完成所需的音视频流的处理,DirectShow应用了DirectDraw和DirectSound技术。这些技术可以有效率将数据图像和音频还原(render)到用户的显卡和声卡上去。
流媒体DirectShow技术主要是软件应用技术和开发技术,COM技术在DirectShow技术当中,一般也把COM组件叫做Filter,它一般分成三类:源过滤器(Source filter)、转换过滤器(Transform filter)、提交过滤器(Rendering filter),用来处理流媒体数据。Filter带有输入、输出针角(pin),或二者兼而有之。Filter通过向文件读写、修改数据和显示数据到输出设备上来操作流媒体。为了完成整个任务,必须要将所有的Filter连接起来,这三种Filter组成了过滤器图表管理器(Filter graph manager)。源过滤器、转换过滤器、提交过滤器分别完成数据提供、数据格式转换(压缩编码等)和数据渲染和回放功能。所以,为了实现在WIN32系统下的视频采集,我们首先要构造出一个适当的过滤器图表,然后通过应用程序对过滤器图表的管理来完成视频采集的功能。
开发DirectShow技术的软件较多,程序语言也较多,在一般的软件开发工具中(比如VB,VC)都可以直接调用windows系统下的MCI控制接口)函数或者媒体播放控件(WMP等),设定相关的文件名等属性就可以实现视频的捕捉或回放。随着多媒体技术的迅速发展,各种压缩算法在该领域的应用,MCI技术越来越显的力不从心,最明显的是它不支持可变比特率的压缩算法,对于处理DVD等近年出现的多种新的媒体格式已显得无能为力。随后,微软又适时推出了建立在DirectX之上的DirectShow技术,它也是一种API(应用程序接口),每个DirectX部件都是用户可调用的API的总和,通过它应用程序可以直接访问计算机的硬件。支持来自本地或网络的各种视频、音频压缩格式的媒体文件的解码和回放,可以从设备上捕捉多媒体流,也可以处理各种压缩算法处理的流媒体。这些格式包括:MPEG的音频和视频标准、音频和视频交互标准(AVI)、WAVE、MIDI和高级流格式ASF。DirectShow的基本原理是多媒体数据在过滤器图表中流动,通过过滤器图表中各过滤器(Filter)实现在功能,最终实现多媒体数据在提交过滤器中的显示和回放。
目前,国内研究此类项目已经相对成熟,主要用C 编程工具对其进行开发。一般用Filter来完成各种功能。Filter是一种进程内的COM组件。DirectShow SDK提供了一套基类源代码,这些源代码可以大大降低开发Filter的难度。DirectShow位于应用层中,它使用Filter Graph的模型来管理整个数据流的处理过程;参与数据处理的各个功能模块是Filter;各个Filter 在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。源过滤器主要负责取得数据,数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等,然后将数据往下传输;转换过滤器主要负责数据的格式转换、传输;提交过滤器主要负责数据的最终去向,最终可以将数据送给声卡、显卡进行多媒体的演示,也可以输出到文件进行存储。
与国内相同,许多国外的软件设计师也是利用Filter来实现各种功能。DirectShow最初是为C 应用程序设计的(也可以使用C语言)使用微软的Visual Basic语言,可以访问DirectShow API的一个很大的子集,但对VB的支持并不完全,如使用微软的JScript,DirectShow也支持基于script的DVD应用程序。使用 Borland Delphi书写DirectShow应用程序也是可能的,但是,微软的软件开发包(SDK)文档没有关于该部分的参考资料。
DirectShow流媒体体系结构支持基于WDM(Windows Driver Model)和VFW(Video for Windows)数字和模拟设备的捕获。DirectShow与其他DirectX技术集成在一起。它支持多种格式,包括ASF(Advanced System Format),MPEG(Motion Picture Expert Group),AVI(Audio-Video Interleaved),MP3(MPEG Audio Layer-3)和WAV声音文件DirectShow中的视频捕获描述了任何从硬件接收视频的应用程序,捕获的视频可以存储在磁盘上或者实时预览。
随着多媒体技术的不断发展,与之相关的软件与硬件层出不穷,现在与多媒体视频会议(Video Conference)、视频对话相关的软硬件正成为人们关注的热点应用。而在这些应用中无不涉及视频数据的采集。传统的VFW视频采集技术存在诸多的局限性,无法很好地应用于当前的各类视频系统。虽然使用VFW(Video for Windows)驱动程序的视频图像采集卡现在已经过时了,但是DirectShow仍然通过VFW捕获filter来支持它们。现在的视频采集卡,一般都是采用了WDM驱动程序,所以大多数新的视频捕获设备使用WDM(Windows Driver Model)驱动程序。在WDM体系结构中,微软提供了一套独立于硬件的驱动程序,叫做类驱动程序,硬件供应商提供硬件相关的迷你驱动程序。迷你驱动程序实现任何设备相关的功能。利用DirectShow与WDM视频采集卡的良好集成特性,采用组件对象模型的系统架构,克服了传统VFW视频采集技术的不足,在实际应用中取得了满意的效果。
九视视频采集卡系列产品中有多款针对专业流媒体高清领域打造的音视频采集卡,其能直接兼容各种Direct Show标准开发的视频应用软件,无需开发便能直接进行应用,九视T200E升级版高清VGA采集卡、T220E高清DVI/HDMI/VGA采集卡、 T320 音视频流媒体采集卡、T230E高清DVI/HDMI采集卡、 T620E双路高清DVI/HDMI/VGA采集卡等支持标准的DIRECT SHOW API进行开发的第三方软件,如完全兼容微软Direct Show, 支持多数流行视频编辑软件. 如Adobe Flash Media Live Encoder,Microsoft Media Encoder,AMCap ,VLC Media Player等视频软件等。对于市面上的如深圳网动视频会议、深圳世纪葵花直播点播软件、威速视频会议、纳加切换台、红杉树、LED控制软件LEDShowT9和灵星雨LEDStudio等软件都能直接兼容。