没有合适的资源?快使用搜索试试~ 我知道了~
基于DirectShow的视频播放器开发
5星 · 超过95%的资源 需积分: 2 12 下载量 198 浏览量
2013-02-20
13:35:09
上传
评论 1
收藏 313KB DOC 举报
温馨提示
试读
15页
Direct Show 广泛地支持各种媒体格式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。本文主要介绍了总体思路和实现的基本代码。
资源推荐
资源详情
资源评论
DirectShow 是微软公司提供的一套在 Windows 平台上进行流媒体处理的开
发包,与 DirectX 开发包一起发布。DirectShow 为多媒体的捕捉和回放提供
了强有力的支持。运用 DirectShow 我们可以很方便地从支持 WDM 驱动模型
的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地
支持各种媒体格式,包括 Asf、Mpeg、Avi、Dv、Mp3、Wave 等等,使得多
媒体数据的回放变得轻而易举。另外,DirectShow 还集成了 DirectX 其它部
分(比如 DirectDraw、DirectSound)的技术,直接支持 DVD 播放,视频
的非线性编辑,以及与数据摄像机的交换换。更值得一提的是,DirectShow
提供的是一种开放式的开发环境,我们可以根据自己的需要定制自己的组件。
(引)
入门
DirectShow 使用一种叫做 Filter Graph 的模型来管理整个数据流的处理
过程,参与数据流处理的各个功能模块称做 Filter,各个 Filter 在 Filter
Graph 中按一定的顺序连成一条流水线协调工作,完成一些相对独立的功能,
如 Filter 可以完成如下的一些功能:
读文件
从视频设备中获取视频
对视频流进行解码
将数据送往声卡或显卡
每个 Filter 都有输入端和输出端,例如一个 MPEG-1 解码 Filter 它的输入
是 MPEG 编码的流数据,它的输出端是一解码过的流数据。DirectShow
正是通过将不同的 Filter 连接在一起完成特定的功能的,我们将这些 Filter
的连接叫做 Filter Graph,如下图 A 给出是播放 AVI 的 Filter Graph:
图 A 播放 AVI 文件的 Graph Filter 图
上图中每个模块分别代表了不同的 Filter,媒体文件 Filter 从硬盘读取 AVI
文件,AVI 分离 Filter 将文件分离为音频流和视频流,AVI 解码 Filter 对视频
流进行解码并送往 Video 表现 Filter,由后者将各帧在显示器上显示,默认的
DirectSound 设备用 DirectSound 将音频流输出。
我们的应用并不需要对这当中的所以的数据流进行管理,在 DirectShow
提供一个称做 Filter Graph 管理器的高级组件。在我们的应用中只需要调用它
的 API 即可,如 Run、Stop 等,如果你想对其中的数据流做更进一步的控制,
你可以对这些 Filter 直接通过 COM 接口进行存取。
Filter Graph 管理器同时也提供了另一个功能:应用程序可以通过管理器
控制 Filter Graph 如何生成。
DirectShow 应用
从广义上说,所有的 DirectShow 应用都必须完成三件事情,如下图 B 所
示:
图 B
1. 生成 Filter Graph 管理器的一个实例。
2. 利用 Filter Grapth 实例生成 Filter Graph,具体应该由哪些 Filter 组成
Filter Graph 视我们的应用的需要而定。
3. 通过对 Filter Graph 管理器的方法调用和来自 Filter Graph 的消息的响应
Filter Graph 和数据流进行控制。
DirectShow 是基于 COM 的,Filter Graph 管理器和 Filter 都是 COM 对
象 ,在开始着手之前你应该对 COM 有个基本的认识。
下面让我们着手开始做一个简单的 DirectShow 应用,在这个应用中我们
实现这样的功能:打开一个媒体文件,并对其进行播放。
设置环境
在利用 DirectShow 进行流媒体的处理之前,必须正确安装 DirectX 的
SDK,DirectX SDK 可以到微软的网站上下载,目前,DirectX 最新版本为
9.0。
本文将对 DirectShow 的应用进行入门级的应用。
在正确安装好 DirectX SDK 后,我们必须设置 DirectX SDK 的头文件和
库文件,使其在 Visual Studio 的搜索路径内。对于 Visual Studio .NET
2003 可如下进行设置:菜单→工具→选项→项目→VC++目录,在包含文件
中加入 D:\DXSDK\Include,在库文件中加入 D:\DXSDK\lib(我的 SDK 的安
装路径是 D:\DXSDK):
头文件
剩余14页未读,继续阅读
资源评论
- longyuan201020112013-05-24非常不错,期待下一个程序
Loongson_Henda
- 粉丝: 6
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于STM32使用HAL库实现USB组合设备之多路CDC源码+说明文档.zip
- 金融贸易项目springboot
- mybatis动态sqlSQL 映射 XML 文件是所有 sql 语句
- 基于基于STM32的智能家居系统源码+qt上位机源码.zip
- 深圳房地产资源数据报告
- 基于stm32的智能门禁系统源码+设计文档+演示视频.zip
- cef + chromium 完整源码支持h265和h264
- 基于SpringBoot的API管理平台源代码+数据库,以项目的形式管理API文档,可以进行API的编辑、测试、Mock等操作
- protobuf 3.11版本,静态编译
- 2023NOC创客智慧编程赛项真题图形化-选拔赛(有解析)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功