专利名称:一种流媒体视频内容版权保护中的编码和解码方法
技术领域:
本发明涉及一种流媒体视频内容版权保护中的编码和解码方法,属于视频内容版权保护 技术领域。
背景技术:
对视频内容进行加密保护是对流媒体应用进行版权保护的一种有效手段。然而,视 频流媒体应用系统由多个模块组成,目前的视频内容保护方式单一, 一般只对某个模块 提供保护,而没有针对整个系统进行考虑。视频流媒体应用系统中每个模块的保护措施 也还不够完善,出现这些问题主要是由以下几个困难所造成
(1) 目前对视频内容进行加密保护都采用高级加密解密标准(以下简称AES)加密
算法,主要是因为AES算法对穷举攻击、已知明文攻击和选择明文攻击具有很高强度, 使得视频加密系统具有较高的安全性。但是AES要求加密数据块是其基本加密单位的整 数倍,而帧内容大小是不固定的,因而现有的视频内容保护方法都采用安全等级低一些 的部分加密算法。
(2) 由于流媒体服务器发送到应用端的视频帧数据解密后是标准的视频编码数据, 如果存在于内存中的应用端数据被非法用户拷贝,非法用户将可以拷贝的标准视频帧数 据解码播放。
由于上述原因,流媒体视频应用系统中对视频内容的保护是个系统过程,任何一个 保护模块的安全性都可能成为系统安全性的瓶颈,而且片面强调单个模块的安全性并不 能提供整个系统的安全。只有系统中各个模块的安全性得到保证,对流媒体视频应用系 统中对视频内容的保护才算是成功的。而现有的解决方案都是考虑视频内容保护系统中 某个模块的安全性,而且保护方法方案也不完善,存有安全隐患。
发明内容
本发明的目的是提出一种流媒体视频内容版权保护中的编码和解码方法,对视频内 容从帧编码、帧加密、RTP包发送、应用端解密以及帧解码整个过程进行有效的控制, 最终达到对原始视频内容进行保护的目的。
本发明提出的流媒体视频内容版权保护中的编码和解码方法,包括以下步骤
(1) 对采集到的视频内容进行编码,得到离散余弦变换系数矩阵A,并对矩阵A进 行量化操作得到矩阵B,对矩阵B进行置乱变换得到矩阵C,对矩阵C进行熵编码,生 成视频帧H,将先后生成的多个视频帧按照3GP容器标准生成3GP文件T;
(2) 根据上述3GP文件T中的控制信息,分别计算出各视频帧H的大小s,对s进 行模b运算,b为高级加密解密标准算法中加密块的大小,若计算结果w不为0,则在相
应视频帧结尾填充bl+b个字节,若计算结果w为0,则填充b个字节,填充字节初始化 为0,并在最后b字节中记录填充的字节数b-w+b或b,得到3GP文件T',填充字节后的 视频帧为H';
(3) 采用高级加密解密标准算法对视频帧H'进行加密,得到3GP文件T",视频 帧H'加密后转化为H";
(4) 向上述3GP文件T"中加入加密算法名称、视频内容标识符和视频内容权限发 布者地址信息,得到打包的数字权限管理内容格式文件P,在文件P中添加自定义指令, 以构成说明流媒体实时传输协议格式数据包的传输方式的索引盒子,得到支持流媒体应 用的打包的数字权限管理内容格式文件P';
(5) 将上述打包的数字权限管理内容格式文件P'输入到流媒体服务器,流媒体服 务器从上述文件P'中取出相关字段,得到会话描述协议文件,流媒体服务器在接收到用 户的播放视频内容请求后,对上述文件P'进行打包,得到符合实时传输协议格式的第一 种数据包,同时对上述会话描述协议文件打包,得到符合实时传输协议格式的第二种数 据包,并将第一种数据包和第二种数据包发送到流媒体客户端;
(6) 流媒体客户端对上述接收到的数据包进行解包,得到上述加密的视频帧H"和 上述加密算法名称,根据加密算法名称对H"解密,得到视频帧H',根据视频帧H'的 最后b个字节中包含的填充字节数,去除填充字节,得到视频帧H;
(7) 对上述视频帧H进行与上述熵编码相对应的熵解码,得到矩阵C,对矩阵C进 行反置乱变换,得到矩阵B,对矩阵B进行反量化,得到矩阵A',对矩阵A'进行反离 散余弦变换,得到视频数据,用于视频播放。
本发明提出的流媒体视频内容版权保护中的编码和解码方法,具有以下优点
(1) 通过一种基于离散余弦变换(以下简称DCT)系数置乱的加密技术,采用本方 法的流媒体视频应用系统中视频内容解密后依然处于信息模糊状态,因此对视频内容起 到了保护的作用,加强了视频内容的版权保护。而传统的视频加密算法只采用AES算法 对视频内容进行加密,视频解密后数据仍然受到非法盗版的威胁。
(2) 本方法中,通过高级数据加密解密标准对视频帧内容进行完全加密后,视频内 容具有可靠的安全性。由于打包的数字权限管理内容格式(以下简称PDCF)中包含了可 以指定多种加密算法的自定义信息,使得系统加密策略选择多样化,增强了系统中流媒 体与应用端的交互性,同时提高了系统的安全性。
图1是本发明方法的原理框图。
图2是本发明方法中编码的流程框图。
图3是本发明方法中解码的流程框图。
具体实施例方式
本发明提出的流媒体视频内容版权保护中的编码和解码方法,其原理框图如图1所
示,包括以下步骤
1、对采集到的视频内容进行编码,生成离散余弦变换系数矩阵A,并对矩阵A进行
量化操作得到矩阵B,对矩阵B以固定大小的宏块数据进行置乱变换得到矩阵C,按照 标准熵编码表对C进行熵编码,生成视频帧H,使用开源工具Yamb MP4Tools将先后生 成的多个视频帧按照3GP容器标准生成3GP文件T。
2、根据上述3GP文件T中的控制信息,分别计算出各视频帧H的大小s,对s进行模b运 算,b为高级加密解密标准(AES)算法中加密块的大小,若计算结果w不为0,则在相应视 频帧结尾填充bi+b个字节,若计算结果w为0,则填充b个字节。填充字节初始化为0,并 在最后b字节的第一个字节记录填充的字节数bi+b或b,得到3GP文件T',填充字节后的视 频帧为H'。
在本发明的一个实施例中,计算各视频帧H的大小的过程如下sfopen打开文件T,先 后读入4个字节到变量boxsize和变量boxname中,比较变量boxname中的内容与字符串 moov,如果不匹配,则将文件指针向前移动boxsize-8个字节,再先后读入4个字节到变量 boxsize和变量boxname中, 一直循环这个过程直到变量boxname和字符串moov匹配。此时 文件指针指向了moov盒子(以下简称Box)在文件中的绝对位置。先后读入4个字节到变 量boxsize和变量boxname中,比较变量boxname中的内容与字符串trak,如果不匹配,贝!j将 文件指针向前移动boxsize-8个字节,再先后读入4个字节到变量boxsize和变量boxname中, 一直循环这个过程直到变量boxname和字符串trak匹配。此时文件指针指向了文件T中第一 个轨道(以下简称track)的物理地址,并将其保存到长整型变量tracl^loc中,同时将变量 boxsize的内容复制到变量track—size中。将此寻找指定Box的过程应用到寻找mdia、 hdlr Box 中。此过程结束后,指针将指向hdlrBox,将文件指针前移8个字节,以跳过hdlrBox中的 字段version和字段pre一defined,其中字段version和字段pre—defmed分别占4字节。读入4个 字节到变量trakjype。并比较变量trak—type和vide字符串。如果相等,则说明找到了视频 track,把当前文件指针赋给变量track—loc,否则将文件指针移到此track—loc指定的文件位 置,跳过track—size-8个字节,并进行下一轮比对,直到找到视频track,此时文件指针将定 位在视频track位置上。
在定位了视频track后,按照定位视频track的方法,可以定位stco Box,只不过将定位 视频track过程中的Box嵌套trak、 mdia和hdlr改成mdia、 minf、 stbl和stco,当变量boxname 内容与字符串stco匹配时,返回指向stcoBox位置的文件指针。
先后读入4个字节到变量conversion和变量cocount中,创建cocount个chunkoffset类实 例。其中chunkoffset类包含整型字段chunkID以及chunk中第l段(以下简称sample)在文件 中的长整型绝对位置chunkloc。读入4个字节到第l个chunkoffset实例的chunklD字段,然后 读入4字节的文件位置信息到第l个chunkoffset实例的成员变量chunkloc中。将上述的读入 变量chunkID和变量chunkloc的过程循环cocount遍,则文件中8^ocount字节的数据块(以 下简称chunk)信息都存入了cocount个chunkoffset实例中。
按照定位stcoBox的方法,可以定位stszBox。只不过将定位视频stco过程中的Box嵌套 mdia、 minf、 stbl和stco改成mdia、 minf、 stbl和stsz,当变量boxname内容与字符串stsz匹配
时,返回指向stszBox位置的文件指针。然后分别读入4个字节到变量szversion、变量szsize 和变量szcount中,并创建大小为szcount的长整型数组frame。读入4个字节的内容到数组 frame的第l个元素中,并将此过程循环szcount次。过程结束后,frame数组中按序存储了 此3GP文件中所有视频帧的大小信息。
按照定位stcoBox的方法,可以定位stsdBox。只不过将定位视频stco过程中的Box嵌套 mdia、 minf、 stbl和stco改成mdia、 minf、 stbl和stsd,当变量boxname内容与字符串stsd匹配 时,返回指向stsd Box位置的文件指针。分别读入4字节到变量version和变量entry—count。 创建entry—count个类SampleEntry对象。SampleEntry对象主要包括表示分辨率大小的成员 变量width和成员变量height、表示每个sample中有多少帧的成员变量frame—count。将文件 指针前移12字节,以跳过保留字节。再分别读入2字节到第l个SampleEntry对象的成员变 量width和成员变量height中。将文件指针前移12字节,然后读入2字节内容到第1个 SampIeEntry对象的成员变量frame—count中,再将文件指针前移8字节以跳过无关信息,并 将此读取信息过程循环entry—coimt遍,则文件中每个sample中包含有多少视频帧的信息就 保存在SampleEntry对象数组中。
按照定位stco Box的方法,可以定位stscBox。只不过将定位视频stco过程中的Box嵌套 mdia、 minf、 stbl和stco改成mdia、 minf、 stbl和stsc,当变量boxname内容与字符串stsc匹配 时,返回指向stsc位置的文件指针。先后读入4个字节到变量scversion、奪量sccount中并创 建sccount个chuiik—sample—frame类型的实例。类型chunk—sample—frame有个字段,分另ll存 储chunk在文件中的绝对位置和每个chunk中含有sample的帧数目。先后读入4个字节的信 息到第1个chunk—sample—frame对象的成员变量first—chunk和成员变量samplesj)er—chunk 中,并将此过程循环sccount次。过程结束后,chunk—sample—frame实例中按序存储了此3GP 文件中chunk的绝对位置以及每个sample包含的帧数信息。创建新的类型Chunk—frame。 Chunk一frame类中包含3个字段,分别为chunk的ID号,chunk的起始物理地址、chunk中包 含的帧数目。根据SampleEntry类型数组中存有的每个sample中包含的帧个数信息以及 chunk—sample_frame数组中存有的每个chunk含有的sample个数信息,可以计算出每个 chunk中有多少个帧,并将数据保存在chunk—frame的frameNum字段中。至此,chunk—frame 数组中保存了chunk的所有信息,包括chunk的ID号,chunk的起始物理地址、chunk中包含 的帧数。通过chunk—frame数组以及数组frame就能够准确定位每一帧在文件中的绝对位置。
3、 采用高级加密解密标准算法对视频帧H'进行加密,得到3GP文件T",视频帧 H'转化为H"。
4、 向上述3GP文件T"中加入加密算法名称、视频内容标识符和视频内容权限发布 者地址信息,得到打包的数字权限管理内容格式文件P,在文件P中添加自定义指令,以 构成说明流媒体实时传输协议格式数据包的传输方式的索引盒子,得到支持流媒体应用 的打包的数字权限管理内容格式文件P'。具体实现过程为.-
遵照ISO IEC 14496-12标准向3GP文件中加入sinf Box信息。遵循3GPP TS 26.244 700和ISO IEC 14496-12标准设计sinfBox,其内容主要包括加密算法名称、视频内容标 识符和视频内容权限发布者地址信息。fopen打开T",遵循ISO正C 14496-12标准中关
于meta Box的定义并采用上述定位Box的方法搜索T"中的meta Box。如果T"中没有 meta Box,则将文件指针指向文件结尾,按照3GPP TS 26.244 700和ISO IEC 14496-12 标准添加包含meta Box及其子Box sinf Box的字节信息。如果T"中含有meta Box,则 读出meta Box信息到临时变量t中,将自定义信息加密算法名称、视频内容标识符和视 频内容权限发布者地址信息按照上述定位Box的方法添加到sinf Box中,并将使用t覆盖 T"中原有的meta Box信息。通过向上述3GP文件T"中加入加密算法名称、视频内容 标识符和视频内容权限发布者地址信息,得到了打包的数字权限管理内容格式(PDCF) 文件P;通过使用开源工具QuickTime流化功能,生成包含索引(以下简称hint) Box的 文件P' , hint Box由文件P中moov Box内的音视频的索引信息构成,用于支持流媒体 服务器的流应用。
5、 流媒体服务器分析上述打包的数字权限管理内容格式P',得到会话描述协议文 件(SDP)。流媒体服务器接收到播放视频内容请求后,对上述打包的数字权限管理内容 格式文件P'进行打包,得到实时传输协议(RTP)格式数据包,同时将会话描述协议文 件也打包成实时传输协议格式数据包,并将这些数据包发送到流媒体客户端。
6、 流媒体客户端从上述接收到的实时传输协议格式数据包中,解析出加密后的帧H" 和加密算法名称,采用高级加密解密标准算法对H"解密,得到视频帧H',根据视频帧 H'的最后b个字节中第l个字节内容计算出填充字节数,去除帧尾部的填充字节,得到 视频帧H。 —
7、 对上述视频帧H进行熵解码,得到矩阵C,对矩阵C进行反置乱变换,得到矩阵B, 对矩阵B进行反量化,得到矩阵A',对矩阵A'进行反离散余弦变换,得到可用于播放的 RGB或YUV数据,直接用于视频播放。
权利要求
1、一种流媒体视频内容版权保护中的编码和解码方法,其特征在于包括以下步骤(1)对采集到的视频内容进行编码,得到离散余弦变换系数矩阵A,并对矩阵A进行量化操作得到矩阵B,对矩阵B进行置乱变换得到矩阵C,对矩阵C进行熵编码,生成视频帧H,将先后生成的多个视频帧按照3GP容器标准生成3GP文件T;(2)根据上述3GP文件T中的控制信息,分别计算出各视频帧H的大小s,对s进行模b运算,b为高级加密解密标准算法中加密块的大小,若计算结果w不为0,则在相应视频帧结尾填充b-w+b个字节,若计算结果w为0,则填充b个字节,填充字节初始化为0,并在最后b字节中记录填充的字节数b-w+b或b,得到3GP文件T’,填充字节后的视频帧为H’;(3)采用高级加密解密标准算法对视频帧H’进行加密,得到3GP文件T”,视频帧H’加密后转化为H”;(4)向上述3GP文件T”中加入加密算法名称、视频内容标识符和视频内容权限发布者地址信息,得到打包的数字权限管理内容格式文件P,在文件P中添加自定义指令,以构成说明流媒体实时传输协议格式数据包的传输方式的索引盒子,得到支持流媒体应用的打包的数字权限管理内容格式文件P’;(5)将上述打包的数字权限管理内容格式文件P’输入到流媒体服务器,流媒体服务器从上述文件P’中取出相关字段,得到会话描述协议文件,流媒体服务器在接收到用户的播放视频内容请求后,对上述文件P’进行打包,得到符合实时传输协议格式的第一种数据包,同时对上述会话描述协议文件打包,得到符合实时传输协议格式的第二种数据包,并将第一种数据包和第二种数据包发送到流媒体客户端;(6)流媒体客户端对上述接收到的数据包进行解包,得到上述加密的视频帧H”和上述加密算法名称,根据加密算法名称对H”解密,得到视频帧H’,根据视频帧H’的最后b个字节中包含的填充字节数,去除填充字节,得到视频帧H;(7)对上述视频帧H进行与上述熵编码相对应的熵解码,得到矩阵C,对矩阵C进行反置乱变换,得到矩阵B,对矩阵B进行反量化,得到矩阵A’,对矩阵A’进行反离散余弦变换,得到视频数据,用于视频播放。
全文摘要
本发明涉及一种流媒体视频内容版权保护中的编码和解码方法,属于视频内容版权保护技术领域。对采集到的视频内容进行编码、DCT、量化、置乱、熵编码,生成并加密3GP文件;通过添加加密算法名称、视频内容标识符、视频内容权限发布者地址信息和索引盒子得到PDCF文件以及SDP文件,并以RTP数据包方式发送。流媒体客户端解析RTP包获取并解密视频帧,通过熵解码、反置乱、反量化和反DCT,得到可播放的RGB或YUV数据。本发明方法的优点是通过对DCT系数置乱变换再加密,使得视频内容解密后依然处于信息模糊状态,加强了视频内容的版权保护,通过自定义信息增强了系统中流媒体与应用端的交互性,提高了系统的安全性。
文档编号H04N7/24GK101355695SQ200810119360
公开日2009年1月28日 申请日期2008年9月5日 优先权日2008年9月5日
发明者申 何, 何显波, 璋 刘, 王建民, 王朝坤 申请人:清华大学