,欢迎光临!
加入收藏设为首页请您留言
您当前位置:网站首页 >> 华北地区 >> 基于DirectShow的视频过滤器版权保护的实现-上海联兵环保免费电话:400-600-5030

基于DirectShow的视频过滤器版权保护的实现-上海联兵环保免费电话:400-600-5030

2011-09-13 15:27:57 来源:中国过滤器网 浏览:1

摘 要 微软公司的DirectShow开发包为开发高质量的多媒体软件提供了一个开放的平台,过滤器是DirectShow的基本组成部分。由于DirectShow的开放性,任何过滤器在操作系统中注册后,都可以被其他程序调用。为了保护过滤器核心技术,实现了两种过滤器的保护方案,一种是严格的版权保护,未授权的就不能使用;另一种是允许使用,但在视频上叠加了提示注册的文本。
关键词 DirectShow  过滤器  版权保护
中图法分类号 TP311. 11;    文献标志码 A
1 DirectShow概述
DirectShow是微软提供的功能强大的多媒体开发技术体系,支持各种媒体类型的解码和回放。它解决了网络音频及视频信息传输中数据量大、数据源种类多、客户端软硬件环境不确定、视频音频需要同步等问题,因此有着广泛的应用[1]。
DirectShow使用模块化的体系结构,其主要的组件是过滤器(Filter)。DirectShow把一系列过滤器组合起来形成DirectShow应用程序[1]。各过滤器分别实现不同的功能,如获取数据源、编码、解码、播放等。DirectShow提供了很多标准过滤器,用户可以直接使用[2]。但由于媒体格式、压缩方式、硬件属性等方面的特殊要求,用户经常需要自行开发过滤器来满足具体需求。
2 视频流过滤器的版权保护
由于DirectShow是一个开放的系统,用户编制的过滤器在操作系统中注册后,其他程序都可以调用,所以对自开发的过滤器实现一定的版权保护功能是很必要的[1, 2]。
现开发了两个重要的过滤器,分别是H.264的编码和解码过滤器,该视频流过滤器中包含有一些核心技术,比如encode,decode的算法。为防止他人未经授权的商业应用,在过滤器中增加了版权保护功能。实现了两种过滤器的保护方案,可以分别应用于不同场合[1, 3]。
2. 1 严格的保护方案[1]
在这种方案中,过滤器只有在Graphedt和用户允许的应用程序中才能创建。问题解决的思路是,在过滤器创建实例的时候,判断一下调用过滤器的程序名,如果是允许的程序,则继续创建,否则退出程序。下面介绍程序实现的代码。
2. 1. 1 获得调用过滤器的应用程序名称
这个过程是通过调用GeMt oduleHandle函数获得,该函数获得调用过滤器的应用程序的模块句柄。同时,定义了szCreatorPath和szCreatorName这两个字符数组来保存应用程序完整路径和应用程序名称。开始的时候赋空值,然后采用GeMt odule-FileName获得程序的完整名称。代码如下:


这种方案实现简单,方便有效。但是如果用户修改文件名为允许的名称,过滤器的保护功能失去了作用。同时,在实际的应用中,常要求给用户一定的试用功能,对于某些关键功能加以限制。针对第一种方法的不足,下面实现了基于文本水印的过滤器保护方案。
2. 2 视频播放时叠加信息的保护方案
2. 2. 1 基本原理
这种方案是在未注册用户的视频播放流上叠加文字信息,提示用户注册[3]。在DirectShow平台中,Filter之间以sample的形式传送数据,解压缩的过滤器一般输入的每个视频sample都带有一帧图像数据[4]。首先在内存中建立一个要输出的文字注册信息的位图,于是就可以得到字符内容的点阵信息,比如用0表示背景用1表示图像信息,然后将图像帧指定位置的像素与字符点阵的像素一一对应,如果字符点阵的像素值为0,则保持图像帧对应的像素值不变;如果为1,则将图像对应的像素值替换。解码叠加文字是在解码过滤器中完成的,在解码过滤器中有个状态量负责记录用户是否注册,如果注册,就不调用叠加代码,否则,调用叠加代码显示相应的文本[3, 5, 6]。
2. 2. 2 产生注册信息的位图
由于注册信息的文字并不是位图,所以必须把配置的文字输出成位图,并保存在缓冲区中,这样才可能实现视频叠加[7]。这里通过调用函数产生注册信息的位图。
(1)设置文字的输出颜色风格
为了方便进行过滤器的像素替换,生成的位图应该尽可能简单,所以必须首先设置位图的缺省格式。在此设计为文字全黑,背景是纯白色,这样生成的位图只有两种颜色,处理起来比较方便。

(3)将文字输出到DIB中
首先将文字输出到DIB中,DIB是系统的显示缓冲区(DIB格式与bitmap图像的格式并不完全一样,并且DIB的数据一定是4byte的倍数,如果不是4的倍数,将会自动填充[7]),这里注意的是要给生成的DIB图像设成规定的大小,这个非常重要。简要的代码如下:


(4)将设备中的图像数据复制到位图中
设备中的图像数据拷贝到位图中是通过扫描的方式进行的。但是扫描必须是4个字节的倍数,所以这里必须进行处理,把扫描的宽度变换成4的整数倍[6]。

这样文字的图像数据就生成了。
2. 2. 3 叠加文字
在实际叠加文字的操作中,首先必须判断位图的大小是否合适;再判断叠加位置的有效性(看看位图的起始位置的坐标是否为负);然后判断对图像的扫描方向(从上往下或从下往上),把指针指向第一行图像数据;接着通过一个两层for循环扫描位图和图像并进行像素替换。
在设计过程中用不同的AVI文件做了实验,有些比较成功,但是有些输出的文字信息却是反的,这和图像的扫描方式有关[3]。图像有两种扫描方式,一种是从上往下,一种是从下往上,这两种扫描方式的决定用bHi ight值的正负来表示。正表示从下往上,负表示从上往下。通过修改变量mImage-Height的值,解决了程序中部分情况下文字颠倒的问题,较好地实现了注册信息文字的叠加。图1是叠加正常的效果图。
2. 2. 4 注册信息的输入
解码叠加文字是在解码过滤器中完成的,在解码过滤器中有个状态量负责记录用户是否注册,如果注册,就不调用叠加代码,否则,调用叠加代码显示相应的文本。部分代码如下:


同时,本设计提供了注册信息的输入功能,注册信息输入是通过提供过滤器的属性对话窗口完成的。这里的实现只是在压缩解压缩模块的对话框上面添加了两个字段,同时加入了是否注册成功的标记,在此不详细介绍了。
3 小结
设计并实现了视频流过滤器的两种版权保护方案。一种是严格的保护方案,没有使用权限的应用程序都不能使用这种保护下的过滤器;另一种是非严格的保护方案,没注册的用户可以使用此过滤器解码播放,但会在视频上显示提醒注册的文本信息。这两种方法可以实现不同需要的版权保护。

 

上海联兵环保科技有限公司
地址:上海市松江区工业区茸北分区茸阳路69号
总机:021-51691929
传真:021-57784244
免费电话:400-600-5030
技术支持:13641659499
E-mail:zhanglianbing@126.com
http://www.shlbhb.com

发表评论
网名:
评论:
验证:
共有0人对本文发表评论查看所有评论(网友评论仅供表达个人看法,并不表明本站同意其观点或证实其描述)
赞助商链接
关于我们 - 联系我们 - 咨询联兵