首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

DirectShow Filter 开发典型事例分析 ——字幕叠加 (FilterTitleOverlay)1

2013-10-10 
DirectShow Filter 开发典型例子分析 ——字幕叠加 (FilterTitleOverlay)1本文分析一下《DirectShow开发指南》

DirectShow Filter 开发典型例子分析 ——字幕叠加 (FilterTitleOverlay)1

本文分析一下《DirectShow开发指南》中的一个典型的Transform Filter的例子:字幕叠加(FilterTitleOverlay)。通过分析该例子,我们可以学习到DirectShow Transform Filter 开发的方式。

直接打开项目工程(我这里是VC2010),看到项目的结构如下图所示:

DirectShow Filter 开发典型事例分析 ——字幕叠加 (FilterTitleOverlay)1


先看一下运行的结果:

注意,DirectShow的Filter是不可以直接运行进行调试的。一般情况下需要借助于Graphedit.exe这个程序进行调试。当然这不是绝对的,也可以用graph-studio-next这样的开源程序。


选择右键点击工程->属性->调试->命令。在栏中输入Graphedit.exe的路径,如图所示

DirectShow Filter 开发典型事例分析 ——字幕叠加 (FilterTitleOverlay)1

这样就可以调试Filter了。

拖入一个文件"五月天 咸鱼.mp4",然后插入本工程的Filter,如图所示。

DirectShow Filter 开发典型事例分析 ——字幕叠加 (FilterTitleOverlay)1

播放视频,效果如图,可见左上角显示出 "Hello, DirectShow!" 的字样。

DirectShow Filter 开发典型事例分析 ——字幕叠加 (FilterTitleOverlay)1

看完了结果,就要开始分析代码了~

回顾一下工程结构图:

DirectShow Filter 开发典型事例分析 ——字幕叠加 (FilterTitleOverlay)1

先看一下CFilterTitleOverlay.h(已经在重要的地方加了注释):

STDMETHODIMP CFilterTitleOverlay::get_Title(char * outBuffer, int * outLength){CAutoLock   lockit(&mITitleOverlaySync);*outLength = mOverlayController->GetTitle(outBuffer);return NOERROR;}

暂且分析到这里。

书上提供的代码有误,这是经过修改后,添加了注释的代码:

http://download.csdn.net/detail/leixiaohua1020/6371819

热点排行