基于DirectShow媒体播放器的研究

基于DirectShow媒体播放器的研究干果礼品盒
齐常慧, 张林
西南石油大学计算机科学学院, 四川 成都 610500
摘  要:视频音频处理技术作为多媒体技术的一个分支,随着电子信息领域的全面数字化,原来界限分明的专业领域已经在技术层面和业务层面上出现了交叉和融合。DirectShow 是微软提供的Windows平台下的一个流媒体架构,是视频音频处理的良好的平台。它提供多媒体流高质量的捕捉与回放,支持多种格式,并与其它DirectX技术相结合。本文介绍了DirectShow技术的基本概念,阐述其处理视频音频流的基本原理,说明了选择使用这种技术的原因,介绍了设计制作媒体播放器的过程,论述了其开发背景、目的和意义以及主要的设计思路和方法。
关键词:多媒体技术;视频音频处理技术;DirectShow技术;媒体播放器
Abstract: With the digitizing of electron information field, video and audio technology, as a branch of Multimedia Technology, has been some intersects and amalgamations on the technology-layer and operation-layer. DirectShow is architecture for streaming media on the Microsoft Windows platform; it's an excellent platform for dealing with audio and video streams. DirectShow provides high-quality captur
e and playback for multimedia streams. It supports a wide variety of formats. DirectShow is integrated with other DirectX technologies. This paper will introduce the fundamental concepts on DirectShow and the theory of dealing with video and audio streams, explain the reason for choosing DirectShow technology, introduce the design and implement process of Media Player, discuss its background, purpose and meaning as well as central design and method.
Key words: Multimedia Technology; Video and Audio Technology; DirectShow Technology; Media Player
1.背景
DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。DirectX是Microsoft公司为游戏和其他高性能多媒体应用所提供的一套底层应用程序编程接口。
水管堵头
这些接口包括对二维和三维图形,声效和音乐,输入设备以及多玩家网络游戏等的支持。DirectX由DirectX Graphics、DirectInput、DirectPlay、DirectSound、DirectX Media Objects、DirectShow、DirectSetup、DirectMusic等组件构成。
DirectShow技术是建立在DirectDraw和DirectSound组件基础之上的,它通过DirectDraw对显卡进行控
制以显示视频,通过DirectSound对声卡进行控制以播放声音,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。DirectShow可提供高质量的多媒体流的捕获和回放功能;支持多种媒体格式;可以从硬件上捕获媒体数据流;可以自动检测并使用视频和音频加速硬件。因此,DirectShow可以充分发挥媒体的性能,提高运行速度,可以简化媒体播放、媒体间的格式转换和媒体捕获等工作。同时,DirectShow提供的是一种开放式的开发环境,因此它具有极大的可扩展性和灵活性,可以由用户自己创建组件,并将这个组件加入DirectShow结构中以支持新的格式或特殊的效果。DirectShow体系结构图见图1。
图1 DirectShow体系结构图电梯应急装置
图1中央最大的一块即是DirectShow系统。DirectShow使用一种叫Filter Graph的模型来管理整个数据
流的处理过程;参与数据处理的各个功能模块叫做Filter;各个Filter在Filter Graph中按一定的顺序连接成一条“流水线”协同工作。从图中可以看到,Source Filters主要负责取得数据,数据源可以是文件、因特网、或者计算机里的采集卡、数字摄像机等,然后将数据往下传输;Transform Fitlers主要负责数据的格式转换、传输;Rendering Filtes主要负责数据的最终去向,可以将数据送给声卡、显卡进行多媒体的演示,也可以输出到文件进行存储。值得注意的是,三个部分并不是都只有一个Filter去完成功能。恰恰相反,每个部分往往是有几个Fitler协同工作的。比如,Transform Filters可能包含了一个Mpeg的解码Filter、以及视频彩空间的转换Filter、音频采样频率转换Filter等等。除了系统提供的大量Filter外,用户可以定制自己的Filter,以完成需要的功能。
2.多媒体的难题及DirectShow的解决方案 2.1 多媒体的难题
(1)多媒体数据流一般包含了很大的数据信息,如何才能更好地处理这些数据。
(2)音频和视频必须同步,因此它们必须在同一时间开始或停止,并以同一速率播放。 (3)数据流可以来自很多地方,如本地文件,网络,电话广播和数码相机等。如何解决它们,使其能够同样地播放和处理。
(4)数据流可以是不同的格式,如AVI,ASF 还可以是MPEG等。如何解决它们,使其能够同样地播放和处理。
(5)程序员无法预知最终用户使用什么样的硬件设备,如何使得应用程序具有机器无关性。
2.2 DirectShow的解决方案
DirectShow设计初衷就是要解决以上所涉及到种种技术问题。它主要设计目的是简化建立基于Windows平台的数字媒体应用程序的设计任务,并使它无需涉及数据传输,硬件通用性,媒体同步等等诸多复杂问题。
为了完成所需的音视频流的处理,DirectShow应用了DirectDraw和DirectSound技术。这些技术可以有效率将数据图像和音频还原(render)到用户的显卡和声卡上去。DirectShow通过压缩媒体流上的时间戳(time-stamped)来实现媒体同步重放。为了能够处理不同可能出现的数据源、数据格式以及硬件系统,DirectShow采用了一种标准化结构体系。在其中,应用程序可以混合和匹配不同的被称为过滤器(filter)的组件。
DirectShow提供的过滤器支持捕获和配置基于Windows驱动模型(Windows Driver Model)的设备。同样地,过滤器也支持视频捕捉卡和通过ACM和VCM接口进行编解码。
在DirectShow标准结构体系中,DirectShow过滤器与控制(control)、多样化的设备、本地文件系统、TV调频和视频捕获卡、VFW编码器、视频显示卡(通过DirectDraw或GDI、GDI+)和显卡进行交互(通信)
。因而,DirectShow可以将应用程序与前面所列出的种种复杂性因素进行隔离。DirectShow也为几种文件格式提供本地压缩和解压过滤器。
2.3 DirectShow支持的格式
DirectShow是一个开放的框架,因此只要有合适的filter来分析和解码,它可以支持任何格式。DirectShow默认支持以下的文件类型和压缩格式:
注:打*号的需要Windows Media Format SDK 支持
文件类型:
Windows Media Audio (WMA)*
Windows Media Video (WMV)*
Advanced Systems Format (ASF)*
频闪灯
Motion Picture Experts Group (MPEG)  Audio-Video Interleaved (AVI)
QuickTime (version 2 and lower)
WAV
AIFF
AU
SND
MIDI
压缩格式:
Windows Media Video*
ISO MPEG-4 video version 1.0*
Microsoft MPEG-4 version 3*
Sipro Labs ACELP*
Windows Media Audio*
MPEG Audio Layer-3 (MP3) (decompression only)
Digital Video (DV)
MPEG-1 (decompression only)
directdrawMJPEG
Cinepak
2.4 DirectShow提供的功能
(1)数字媒体文件和流媒体的高级播放功能
(2)使用播放列表的功能
(3)播放 DVD 和 CD 的功能
(4)访问 Windows Media Player 中的 Media
Library(媒体库)
(5)处理元数据的功能
(6)支持字幕
(7)支持多种语言的音频
(8)控制网络连通性和访问相关统计信息的
功能
2.5 DirectShow开发的一般流程
(1)DirectShow播放文件过程
图2为一条典型的Avi文件回放Filter Graph链路:
图2 播放AVI文件的Filter Graph
1)首先从一个文件中读取AVI数据,形成字节流。(这个工作由源Filter完成)
2) 检查AVI数据流的头格式,然后通过AVI分割Filter将视频流和音频流分开。
3) 解码视频流,根据压缩格式的不同,选取不同的decoder filters 。通过Renderer Filter重画视频图像。
4) 音频流送到声卡进行播放,一般采用缺省的 DirectSound Device Filter。 (2)DirectShow使用步骤
1)由于会使用到COM,因此一开始必须先呼叫WINDOWS初始化COM  Library的API,然后产生一个Filter Graph Manager Component。
书立2)要产生完整的Filter Graph 有两种方法:一是自动产生符合多媒体的Filter Graph(由Filter Graph Manager来做这项工作),另一种是手动产生需要的Filter Component 并将图建立起来给Filter Graph Manager 管理。
3)控制Media Stream的动作,此时需要一个Media Control Component 来做管理,
其中控制了Media Stream的Stop、Pause、Start 等动作。还有Media Stream 可能会产生某些事件(如播放完毕),这时可以产生一个Media Event Component 来做管理事件的动作。
(3)DirectShow应用程序开发的一般过程及
开发方法
DirectShow应用程序开发的一般流程见图3。
图3  DirectShow应用程序开发的一般流程
在DirectShow系统之上即是应用程序(Application)。应用程序要按照一定的意图建立起相应的Filter Graph,然后通过Filter Graph Manager来控制整个的数据处理过程。DirectShow能在Filter Graph运
行的时候接收到各种事件,并通过消息的方式发送到应用程序。这样,就实现了应用程序DirectShow系统之间的交互。
从广义上说,所有的DirectShow应用都必须完成三件事情,
1) 生成Filter Graph管理器的一个实例。
2) 利用Filter Grapth实例生成Filter Graph,具体应该由哪些Filter组成Filter Graph视应用的需要而定。 3) 通过对Filter Graph管理器的方法调用和使用来自Filter Graph的消息的响应对Filter Graph和数据流进行控制。
3.多媒体播放器系统设计
3.1 播放器所在视频音频处理系统框图
本地文件或者网络文件通过播放器的处理分别以声音或者图像的方式显示出来,从视频文件中处理出来的图像或者小段视频又可以保存为本地文件。在这个框图中播放器是作为视频、音频处理的核心部件而存在(图4)。
3.2 播放器的特点
(1)友好、简单的界面,可以更好地体现播放器与用户之间的交互;
(2)较好的兼容性,无论是与计算机硬件还是与计算机软件都应该有较好的兼容性,而且对于硬件的配置要求不应过高;
(3)对于不同格式文件的适应性。随着视频音频处理技术的发展,今后还会陆续出现其
图4 播放器所在视频音频处理框图

本文发布于:2024-09-22 17:34:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/336963.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:视频   处理   音频   技术   媒体   数据   进行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议