1. 关于DirectShow
1.1
DirectX是微软公司开发的一套基于Windows平台的编程接口(API);它能出色地完成高速的实时动画渲染、交互式音乐和环境音效、高效多媒体数据处理等一般API很难完成的任务。
DirectShow是DirectX大家族中的一位成员。DirectX的家族成员很多,而且各有各的本领,就如DirectDraw和Direct3D负责二维图形图像/三维动画加速、DirectMusic和DirectSound负责交互式音乐/环境音效处理一样,DirectShow为Windows平台上处理各种格式的媒体文件播放、音视频采集等高性能要求的多媒体应用,提供了完整的解决方案。
DirectShow是一个开放性的应用框架,也是一套基于COM的编程接口。DirectShow的系统功能参见图1.1。可以看到,图中最大的一块即是DirectShow系统,它的基本工作原理就是“流水线”:将单元组件——Filter——串联在一起,交由Filter Graph Manager统一控制。系统的输入可以是本地文件系统、硬件插卡、因特网等,系统的输出可以是声卡(声音再现)、显卡(视频内容显示)、本地文件系统,当然也可以最终将数据向网络发送。
事实上,计算机应用领域中的很多模块都可以和DirectShow系统交互。也就是说,DirectShow的应用范畴很广。单纯从本地系统来说,DirectShow可以实现不同格式的媒体文件的解码播放、或格式之间的相互转换,可以从本地机器中的采集设备采集音视频数据并保存为文件,可以接收、观看模拟电视等。而从网络应用的角度来说,DirectShow更可用于视频点播、视频会议、视频监控等领域。其实,广义上来说,DirectShow系统适合于一切流式数据的处理,这些数据可以是音频、视频这样的多媒体数据,但又不局限于多媒体数据。
随着信息技术的发展,多媒体技术迎来新的挑战:
(1)多媒体流包含了大量的数据,这些数据要求被迅速处理以达到实时性。
(2)视频流和音频流的同步。
(3) 流的来源非常复杂,包括本地文件、Internet 网络、摄像头、视频卡和电视广播网等。
(4)流的格式也多种多样,包括Audio2Video Interleaved(AVI) ,Advanced Streaming Format (ASF) , Motion Picture Experts Group (MPEG) ,and Digital Video (DV)等。
(5)开发人员事先并不知道终端用户的硬件设备。
Microsoft的DirectShow正是为了适应以上的挑战而设计的多媒体开发工具, Microsoft 设计它的意图就是简化多媒体应用程序的开发,使开发者不必考虑复杂的流数据格式和不同的终端设备,以及数据同步的问题。
Microsoft 通过DirectShow给多媒体程序开发员提供了标准的、统一的、高效的API接口。DirectShow技术是建立在DirectX的DirectDraw和DirectSound 的基础之上的,它通过 DirectDraw 对显卡进行控制以显示视频,通过DirectSound 对声卡进行控制以播放声音。DirectX为了最大限度提高效率而允许用户直接访问硬件,如允许用户直接读写显存,因此,DirectShow也同样具有快速的优势。
为了实现对多种对象(不同流格式和不同的终端设备)的处理,DirectShow使用了组件(COM)封装的实现方法,在DirectShow中组件称为滤波器(Filter) 。
图1为用户程序与DirectShow及外部对象的关系框
图1 DirectShow系统框图
从图1 中可以看到,DirectShow的滤波器支持多种外部设备,包括本地文件系统、视频采集卡、有线电视接口、视频播放卡(通过 DirectDraw 或 Graphic Dev
DirectShow概述
最新推荐文章于 2022-03-23 09:05:23 发布