65.9K
CodeProject 正在变化。 阅读更多。
Home

基于 DShow 的播放器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.19/5 (16投票s)

2008年7月15日

CPOL

2分钟阅读

viewsIcon

157223

downloadIcon

627

一个基于 DShow 的媒体文件播放器

引言

这是一个简单的播放器,不要期望太多。
DirectShow 是理想的媒体引擎,如果你的唯一需求是播放的话。这里有一个基于 DirectShow 构建的示例播放器。

背景

DirectShow 由核心引擎和可选组件组成,所有组件都以 DLL 的形式存在。它们通过 COM 接口暴露。因此需要 COM 技术。此外,还需要 DirectX9.0c SDK 来编译代码。注意:9.0c 是 VC6 的最新和最佳版本。如果您不使用 VC6,可以尝试其他版本的 DXSDK。(但不能保证它能工作。)
核心引擎使用供应控制一切。可选组件按用途分类。用于读取媒体文件/源的称为解析器(Parsers)。类似地,解码器(Decoders)用于将音频/视频恢复到其原始形式。渲染器(Renderers)显示视频图像或播放音频。
通常,播放给定媒体文件所需要的只是:解码器。其他组件已经安装在 Windows 系统中。
遵循 DirectShow 的规则,媒体类型在注册表中注册为 GUID。找到合适的解析器和解码器来解析媒体文件,将媒体数据推送到渲染器,这就是播放的全部过程。听起来很简单,不是吗?

使用代码

核心引擎被封装(wrapped)成一个单独的类:CPlayer。通过创建 DirectShow 引擎来渲染媒体文件,然后您就可以播放了!
为了更好的外观,我们将视频窗口嵌入到主对话框窗口中。当前播放位置与进度条同步,并在电影持续时间的左侧以文本形式显示。

关注点

这个项目的首要目标是用于预览和截取快照,因此得名如此。如果在播放时按下 Ctrl+Print Screen 键,您会注意到视频可以粘贴到画笔(mspaint)中。而 Windows Media Player(WMP) 无法做到这一点。因为 WMP 使用以覆盖模式下的视频渲染器。

历史

首次发布

© . All rights reserved.