基于VC++和WMF SDK的视频播放器的实现

(整期优先)网络出版时间:2019-05-26
/ 2
摘 要:WMF SDK是微软Windows Media技术的重要组成部分,它基于COM技术,可以方便地开发具有高性能要求的多媒体应用程序。对WMF SDK关键技术作了概括介绍,并给出了采用Visual C++编程语言开发视频播放器的软件实现过程。
  关键词:WMF SDK;视频播放器;Visual C++
  
  1 WMF SDK简介
  
  Windows Media是Microsoft公司开发的流媒体技术,已经成为一个数字媒体的专业平台。Windows Media Format SDK是一组底层应用程序编程接口 (API),它处理使用 ASF 结构的数据。Windows Media Format SDK 是 Windows Media 的核心,Windows Media Player、Windows Media Encoder 和 Windows Media Services 均使用它来提供核心文件 I/O、联网和数字版权管理 (DRM) 支持。
  
  2 WMF SDK体系结构
  
  WMF SDK采用了面向对象的设计,是一套完全基于COM组件模型的高级开发包。它引入的生成器,读取器,编辑器等对象屏蔽了ASF数据格式、网络传输控制等较为底层的流媒体技术实现细节,留下比较上层的编程接口给开发者使用。
  Windows Media Format SDK 具有许多处理 ASF 文件的功能,但其核心功能是读写文件。本文主要介绍这两大基本任务体系结构。
  
  2.1 生成器结构
  使用 Windows Media Format SDK 构建的应用程序将源媒体样本传递给生成器。生成器使用配置文件对象中指定的设置对文件进行编码。配置文件对象定义已编码文件的格式,包括每个流的详细信息以及应如何处理流的信息。大多数音频和视频流由一种 Windows Media 编码解码器来处理。但是,编码管理器首先用一种转换器来处理数据,为压缩做准备。当样本可以放入文件时,先传递给多路复用器,多路复用器根据演示时间从所有流中隔行扫描样本并将数据打包。多路复用器创建的位流被传送到一个接收器,接收器为最终目的地处理 I/O,不管它是磁盘上的文件还是 Internet 或其他网络广播。
  
  2.2 读取器结构
  读取过程与数据写入过程基本上相同,不过顺序是相反的。读取器连接到源,源可以是文件、网络连接或自定义源。拆分器处理文件的数据部分,将数据分成单个流样本,然后将样本解压缩(如果启用了 DRM 保护),并通过相应的 Windows Media 编码解码器来处理。默认情况下,读取器内部会自动选择合适的解码器对ASF流数据进行解压缩。 3 WMF SDK编程开发环境配置
  
  WMF SDK仅适合C/C++编程语言,开发平台可以是VC++6.0或Visual Studio.NET.本文介绍VC6.0的设置方法。
  打开VC++6.0,选择菜单命令的Tools→Options,单击Directories,在Show directories for下拉菜单中选择 Include files,然后将SDK的安装路径放在VC标准路径之前。
  在开发应用程序项目时,对VC6.0 Debug版本还需要如下设置:选择菜单命令Project中的settings,进入标签link,在Category下拉列表中选择General,把winmm.lib和 wmvcore.lib文件添加到Object/library modules中,并选中Ignore all default libraries。
  
  4 流媒体播放器的设计
  
  ①用VC++6.0应用程序向导建立一个基于对话框的MFC程序,取名MyMediaPlayer,其它选项都基于默认设置。
  ②向对话框中添加控件,调整对话框布局。
  ③在Project菜单中选择Setting命令,选择Link选项卡,在Object/Library modules输入winmm.lib,wmvcore.lib文件,这是编译使用MCI接口的多媒体程序所必须的。
  ④在编程时,要添加工程文件wmsdk.h。wmsdk.h定义了SDK中的接口,常量,数据结构,枚举变量和GUID等。
  ⑤向该工程的各个成员函数添加代码。主要有主程序类的初始化函数OnInitDialog(),功能按钮Open()(打开),OnPlay()(播放)、OnPause()(暂停)、OnStop()(停止)、和GetHeaderAttribute(),RetrieveAttributes()
  
  5 结束语
  
  应用Windows Media Format SDK技术可以快速、稳定地开发具有高性能要求的多媒体程序,是非常行之有效的方法。本文分析了WMF SDK关键技术的结构和功能,介绍了SDK开发环境的配置,并采用Visual C++编程语言和SDK技术开发了一个多媒体视频播放器,实现了较好的视频播放效果。

  
  参考文献
  [1]李博轩. Visual C + + 多媒体开发指南[M]. 北京:清华大学出版社, 2000.
  [2]GEORGE SHEPHERD,SCOT WINGO著, 赵剑云,卿瑾译. 深入解析MFC[M].北京:中国电力出版社,2003.