專利名稱:一種流媒體視頻內(nèi)容版權保護中的編碼和解碼方法
技術領域:
本發(fā)明涉及一種流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,屬于視頻內(nèi)容版權保護 技術領域。
背景技術:
對視頻內(nèi)容進行加密保護是對流媒體應用進行版權保護的一種有效手段。然而,視 頻流媒體應用系統(tǒng)由多個模塊組成,目前的視頻內(nèi)容保護方式單一, 一般只對某個模塊 提供保護,而沒有針對整個系統(tǒng)進行考慮。視頻流媒體應用系統(tǒng)中每個模塊的保護措施 也還不夠完善,出現(xiàn)這些問題主要是由以下幾個困難所造成
(1) 目前對視頻內(nèi)容進行加密保護都采用高級加密解密標準(以下簡稱AES)加密
算法,主要是因為AES算法對窮舉攻擊、已知明文攻擊和選擇明文攻擊具有很高強度, 使得視頻加密系統(tǒng)具有較高的安全性。但是AES要求加密數(shù)據(jù)塊是其基本加密單位的整 數(shù)倍,而幀內(nèi)容大小是不固定的,因而現(xiàn)有的視頻內(nèi)容保護方法都采用安全等級低一些 的部分加密算法。
(2) 由于流媒體服務器發(fā)送到應用端的視頻幀數(shù)據(jù)解密后是標準的視頻編碼數(shù)據(jù), 如果存在于內(nèi)存中的應用端數(shù)據(jù)被非法用戶拷貝,非法用戶將可以拷貝的標準視頻幀數(shù) 據(jù)解碼播放。
由于上述原因,流媒體視頻應用系統(tǒng)中對視頻內(nèi)容的保護是個系統(tǒng)過程,任何一個 保護模塊的安全性都可能成為系統(tǒng)安全性的瓶頸,而且片面強調(diào)單個模塊的安全性并不 能提供整個系統(tǒng)的安全。只有系統(tǒng)中各個模塊的安全性得到保證,對流媒體視頻應用系 統(tǒng)中對視頻內(nèi)容的保護才算是成功的。而現(xiàn)有的解決方案都是考慮視頻內(nèi)容保護系統(tǒng)中 某個模塊的安全性,而且保護方法方案也不完善,存有安全隱患。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,對視頻內(nèi) 容從幀編碼、幀加密、RTP包發(fā)送、應用端解密以及幀解碼整個過程進行有效的控制, 最終達到對原始視頻內(nèi)容進行保護的目的。
本發(fā)明提出的流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,包括以下步驟
(1) 對采集到的視頻內(nèi)容進行編碼,得到離散余弦變換系數(shù)矩陣A,并對矩陣A進 行量化操作得到矩陣B,對矩陣B進行置亂變換得到矩陣C,對矩陣C進行熵編碼,生 成視頻幀H,將先后生成的多個視頻幀按照3GP容器標準生成3GP文件T;
(2) 根據(jù)上述3GP文件T中的控制信息,分別計算出各視頻幀H的大小s,對s進 行模b運算,b為高級加密解密標準算法中加密塊的大小,若計算結(jié)果w不為0,則在相
應視頻幀結(jié)尾填充bl+b個字節(jié),若計算結(jié)果w為0,則填充b個字節(jié),填充字節(jié)初始化 為0,并在最后b字節(jié)中記錄填充的字節(jié)數(shù)b-w+b或b,得到3GP文件T',填充字節(jié)后的 視頻幀為H';
(3) 采用高級加密解密標準算法對視頻幀H'進行加密,得到3GP文件T",視頻 幀H'加密后轉(zhuǎn)化為H";
(4) 向上述3GP文件T"中加入加密算法名稱、視頻內(nèi)容標識符和視頻內(nèi)容權限發(fā) 布者地址信息,得到打包的數(shù)字權限管理內(nèi)容格式文件P,在文件P中添加自定義指令, 以構(gòu)成說明流媒體實時傳輸協(xié)議格式數(shù)據(jù)包的傳輸方式的索引盒子,得到支持流媒體應 用的打包的數(shù)字權限管理內(nèi)容格式文件P';
(5) 將上述打包的數(shù)字權限管理內(nèi)容格式文件P'輸入到流媒體服務器,流媒體服 務器從上述文件P'中取出相關字段,得到會話描述協(xié)議文件,流媒體服務器在接收到用 戶的播放視頻內(nèi)容請求后,對上述文件P'進行打包,得到符合實時傳輸協(xié)議格式的第一 種數(shù)據(jù)包,同時對上述會話描述協(xié)議文件打包,得到符合實時傳輸協(xié)議格式的第二種數(shù) 據(jù)包,并將第一種數(shù)據(jù)包和第二種數(shù)據(jù)包發(fā)送到流媒體客戶端;
(6) 流媒體客戶端對上述接收到的數(shù)據(jù)包進行解包,得到上述加密的視頻幀H"和 上述加密算法名稱,根據(jù)加密算法名稱對H"解密,得到視頻幀H',根據(jù)視頻幀H'的 最后b個字節(jié)中包含的填充字節(jié)數(shù),去除填充字節(jié),得到視頻幀H;
(7) 對上述視頻幀H進行與上述熵編碼相對應的熵解碼,得到矩陣C,對矩陣C進 行反置亂變換,得到矩陣B,對矩陣B進行反量化,得到矩陣A',對矩陣A'進行反離 散余弦變換,得到視頻數(shù)據(jù),用于視頻播放。
本發(fā)明提出的流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,具有以下優(yōu)點
(1) 通過一種基于離散余弦變換(以下簡稱DCT)系數(shù)置亂的加密技術,采用本方 法的流媒體視頻應用系統(tǒng)中視頻內(nèi)容解密后依然處于信息模糊狀態(tài),因此對視頻內(nèi)容起 到了保護的作用,加強了視頻內(nèi)容的版權保護。而傳統(tǒng)的視頻加密算法只采用AES算法 對視頻內(nèi)容進行加密,視頻解密后數(shù)據(jù)仍然受到非法盜版的威脅。
(2) 本方法中,通過高級數(shù)據(jù)加密解密標準對視頻幀內(nèi)容進行完全加密后,視頻內(nèi) 容具有可靠的安全性。由于打包的數(shù)字權限管理內(nèi)容格式(以下簡稱PDCF)中包含了可 以指定多種加密算法的自定義信息,使得系統(tǒng)加密策略選擇多樣化,增強了系統(tǒng)中流媒 體與應用端的交互性,同時提高了系統(tǒng)的安全性。
圖1是本發(fā)明方法的原理框圖。
圖2是本發(fā)明方法中編碼的流程框圖。
圖3是本發(fā)明方法中解碼的流程框圖。
具體實施例方式
本發(fā)明提出的流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,其原理框圖如圖1所
示,包括以下步驟
1、對采集到的視頻內(nèi)容進行編碼,生成離散余弦變換系數(shù)矩陣A,并對矩陣A進行
量化操作得到矩陣B,對矩陣B以固定大小的宏塊數(shù)據(jù)進行置亂變換得到矩陣C,按照 標準熵編碼表對C進行熵編碼,生成視頻幀H,使用開源工具Yamb MP4Tools將先后生 成的多個視頻幀按照3GP容器標準生成3GP文件T。
2、根據(jù)上述3GP文件T中的控制信息,分別計算出各視頻幀H的大小s,對s進行模b運 算,b為高級加密解密標準(AES)算法中加密塊的大小,若計算結(jié)果w不為0,則在相應視 頻幀結(jié)尾填充bi+b個字節(jié),若計算結(jié)果w為0,則填充b個字節(jié)。填充字節(jié)初始化為0,并 在最后b字節(jié)的第一個字節(jié)記錄填充的字節(jié)數(shù)bi+b或b,得到3GP文件T',填充字節(jié)后的視 頻幀為H'。
在本發(fā)明的一個實施例中,計算各視頻幀H的大小的過程如下sfopen打開文件T,先 后讀入4個字節(jié)到變量boxsize和變量boxname中,比較變量boxname中的內(nèi)容與字符串 moov,如果不匹配,則將文件指針向前移動boxsize-8個字節(jié),再先后讀入4個字節(jié)到變量 boxsize和變量boxname中, 一直循環(huán)這個過程直到變量boxname和字符串moov匹配。此時 文件指針指向了moov盒子(以下簡稱Box)在文件中的絕對位置。先后讀入4個字節(jié)到變 量boxsize和變量boxname中,比較變量boxname中的內(nèi)容與字符串trak,如果不匹配,貝!j將 文件指針向前移動boxsize-8個字節(jié),再先后讀入4個字節(jié)到變量boxsize和變量boxname中, 一直循環(huán)這個過程直到變量boxname和字符串trak匹配。此時文件指針指向了文件T中第一 個軌道(以下簡稱track)的物理地址,并將其保存到長整型變量tracl^loc中,同時將變量 boxsize的內(nèi)容復制到變量track—size中。將此尋找指定Box的過程應用到尋找mdia、 hdlr Box 中。此過程結(jié)束后,指針將指向hdlrBox,將文件指針前移8個字節(jié),以跳過hdlrBox中的 字段version和字段pre一defined,其中字段version和字段pre—defmed分別占4字節(jié)。讀入4個 字節(jié)到變量trakjype。并比較變量trak—type和vide字符串。如果相等,則說明找到了視頻 track,把當前文件指針賦給變量track—loc,否則將文件指針移到此track—loc指定的文件位 置,跳過track—size-8個字節(jié),并進行下一輪比對,直到找到視頻track,此時文件指針將定 位在視頻track位置上。
在定位了視頻track后,按照定位視頻track的方法,可以定位stco Box,只不過將定位 視頻track過程中的Box嵌套trak、 mdia和hdlr改成mdia、 minf、 stbl和stco,當變量boxname 內(nèi)容與字符串stco匹配時,返回指向stcoBox位置的文件指針。
先后讀入4個字節(jié)到變量conversion和變量cocount中,創(chuàng)建cocount個chunkoffset類實 例。其中chunkoffset類包含整型字段chunkID以及chunk中第l段(以下簡稱sample)在文件 中的長整型絕對位置chunkloc。讀入4個字節(jié)到第l個chunkoffset實例的chunklD字段,然后 讀入4字節(jié)的文件位置信息到第l個chunkoffset實例的成員變量chunkloc中。將上述的讀入 變量chunkID和變量chunkloc的過程循環(huán)cocount遍,則文件中8^ocount字節(jié)的數(shù)據(jù)塊(以 下簡稱chunk)信息都存入了cocount個chunkoffset實例中。
按照定位stcoBox的方法,可以定位stszBox。只不過將定位視頻stco過程中的Box嵌套 mdia、 minf、 stbl和stco改成mdia、 minf、 stbl和stsz,當變量boxname內(nèi)容與字符串stsz匹配
時,返回指向stszBox位置的文件指針。然后分別讀入4個字節(jié)到變量szversion、變量szsize 和變量szcount中,并創(chuàng)建大小為szcount的長整型數(shù)組frame。讀入4個字節(jié)的內(nèi)容到數(shù)組 frame的第l個元素中,并將此過程循環(huán)szcount次。過程結(jié)束后,frame數(shù)組中按序存儲了 此3GP文件中所有視頻幀的大小信息。
按照定位stcoBox的方法,可以定位stsdBox。只不過將定位視頻stco過程中的Box嵌套 mdia、 minf、 stbl和stco改成mdia、 minf、 stbl和stsd,當變量boxname內(nèi)容與字符串stsd匹配 時,返回指向stsd Box位置的文件指針。分別讀入4字節(jié)到變量version和變量entry—count。 創(chuàng)建entry—count個類SampleEntry對象。SampleEntry對象主要包括表示分辨率大小的成員 變量width和成員變量height、表示每個sample中有多少幀的成員變量frame—count。將文件 指針前移12字節(jié),以跳過保留字節(jié)。再分別讀入2字節(jié)到第l個SampleEntry對象的成員變 量width和成員變量height中。將文件指針前移12字節(jié),然后讀入2字節(jié)內(nèi)容到第1個 SampIeEntry對象的成員變量frame—count中,再將文件指針前移8字節(jié)以跳過無關信息,并 將此讀取信息過程循環(huán)entry—coimt遍,則文件中每個sample中包含有多少視頻幀的信息就 保存在SampleEntry對象數(shù)組中。
按照定位stco Box的方法,可以定位stscBox。只不過將定位視頻stco過程中的Box嵌套 mdia、 minf、 stbl和stco改成mdia、 minf、 stbl和stsc,當變量boxname內(nèi)容與字符串stsc匹配 時,返回指向stsc位置的文件指針。先后讀入4個字節(jié)到變量scversion、奪量sccount中并創(chuàng) 建sccount個chuiik—sample—frame類型的實例。類型chunk—sample—frame有個字段,分另ll存 儲chunk在文件中的絕對位置和每個chunk中含有sample的幀數(shù)目。先后讀入4個字節(jié)的信 息到第1個chunk—sample—frame對象的成員變量first—chunk和成員變量samplesj)er—chunk 中,并將此過程循環(huán)sccount次。過程結(jié)束后,chunk—sample—frame實例中按序存儲了此3GP 文件中chunk的絕對位置以及每個sample包含的幀數(shù)信息。創(chuàng)建新的類型Chunk—frame。 Chunk一frame類中包含3個字段,分別為chunk的ID號,chunk的起始物理地址、chunk中包 含的幀數(shù)目。根據(jù)SampleEntry類型數(shù)組中存有的每個sample中包含的幀個數(shù)信息以及 chunk—sample_frame數(shù)組中存有的每個chunk含有的sample個數(shù)信息,可以計算出每個 chunk中有多少個幀,并將數(shù)據(jù)保存在chunk—frame的frameNum字段中。至此,chunk—frame 數(shù)組中保存了chunk的所有信息,包括chunk的ID號,chunk的起始物理地址、chunk中包含 的幀數(shù)。通過chunk—frame數(shù)組以及數(shù)組frame就能夠準確定位每一幀在文件中的絕對位置。
3、 采用高級加密解密標準算法對視頻幀H'進行加密,得到3GP文件T",視頻幀 H'轉(zhuǎn)化為H"。
4、 向上述3GP文件T"中加入加密算法名稱、視頻內(nèi)容標識符和視頻內(nèi)容權限發(fā)布 者地址信息,得到打包的數(shù)字權限管理內(nèi)容格式文件P,在文件P中添加自定義指令,以 構(gòu)成說明流媒體實時傳輸協(xié)議格式數(shù)據(jù)包的傳輸方式的索引盒子,得到支持流媒體應用 的打包的數(shù)字權限管理內(nèi)容格式文件P'。具體實現(xiàn)過程為.-
遵照ISO IEC 14496-12標準向3GP文件中加入sinf Box信息。遵循3GPP TS 26.244 700和ISO IEC 14496-12標準設計sinfBox,其內(nèi)容主要包括加密算法名稱、視頻內(nèi)容標 識符和視頻內(nèi)容權限發(fā)布者地址信息。fopen打開T",遵循ISO正C 14496-12標準中關
于meta Box的定義并采用上述定位Box的方法搜索T"中的meta Box。如果T"中沒有 meta Box,則將文件指針指向文件結(jié)尾,按照3GPP TS 26.244 700和ISO IEC 14496-12 標準添加包含meta Box及其子Box sinf Box的字節(jié)信息。如果T"中含有meta Box,則 讀出meta Box信息到臨時變量t中,將自定義信息加密算法名稱、視頻內(nèi)容標識符和視 頻內(nèi)容權限發(fā)布者地址信息按照上述定位Box的方法添加到sinf Box中,并將使用t覆蓋 T"中原有的meta Box信息。通過向上述3GP文件T"中加入加密算法名稱、視頻內(nèi)容 標識符和視頻內(nèi)容權限發(fā)布者地址信息,得到了打包的數(shù)字權限管理內(nèi)容格式(PDCF) 文件P;通過使用開源工具QuickTime流化功能,生成包含索引(以下簡稱hint) Box的 文件P' , hint Box由文件P中moov Box內(nèi)的音視頻的索引信息構(gòu)成,用于支持流媒體 服務器的流應用。
5、 流媒體服務器分析上述打包的數(shù)字權限管理內(nèi)容格式P',得到會話描述協(xié)議文 件(SDP)。流媒體服務器接收到播放視頻內(nèi)容請求后,對上述打包的數(shù)字權限管理內(nèi)容 格式文件P'進行打包,得到實時傳輸協(xié)議(RTP)格式數(shù)據(jù)包,同時將會話描述協(xié)議文 件也打包成實時傳輸協(xié)議格式數(shù)據(jù)包,并將這些數(shù)據(jù)包發(fā)送到流媒體客戶端。
6、 流媒體客戶端從上述接收到的實時傳輸協(xié)議格式數(shù)據(jù)包中,解析出加密后的幀H" 和加密算法名稱,采用高級加密解密標準算法對H"解密,得到視頻幀H',根據(jù)視頻幀 H'的最后b個字節(jié)中第l個字節(jié)內(nèi)容計算出填充字節(jié)數(shù),去除幀尾部的填充字節(jié),得到 視頻幀H。 —
7、 對上述視頻幀H進行熵解碼,得到矩陣C,對矩陣C進行反置亂變換,得到矩陣B, 對矩陣B進行反量化,得到矩陣A',對矩陣A'進行反離散余弦變換,得到可用于播放的 RGB或YUV數(shù)據(jù),直接用于視頻播放。
權利要求
1、一種流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,其特征在于包括以下步驟(1)對采集到的視頻內(nèi)容進行編碼,得到離散余弦變換系數(shù)矩陣A,并對矩陣A進行量化操作得到矩陣B,對矩陣B進行置亂變換得到矩陣C,對矩陣C進行熵編碼,生成視頻幀H,將先后生成的多個視頻幀按照3GP容器標準生成3GP文件T;(2)根據(jù)上述3GP文件T中的控制信息,分別計算出各視頻幀H的大小s,對s進行模b運算,b為高級加密解密標準算法中加密塊的大小,若計算結(jié)果w不為0,則在相應視頻幀結(jié)尾填充b-w+b個字節(jié),若計算結(jié)果w為0,則填充b個字節(jié),填充字節(jié)初始化為0,并在最后b字節(jié)中記錄填充的字節(jié)數(shù)b-w+b或b,得到3GP文件T’,填充字節(jié)后的視頻幀為H’;(3)采用高級加密解密標準算法對視頻幀H’進行加密,得到3GP文件T”,視頻幀H’加密后轉(zhuǎn)化為H”;(4)向上述3GP文件T”中加入加密算法名稱、視頻內(nèi)容標識符和視頻內(nèi)容權限發(fā)布者地址信息,得到打包的數(shù)字權限管理內(nèi)容格式文件P,在文件P中添加自定義指令,以構(gòu)成說明流媒體實時傳輸協(xié)議格式數(shù)據(jù)包的傳輸方式的索引盒子,得到支持流媒體應用的打包的數(shù)字權限管理內(nèi)容格式文件P’;(5)將上述打包的數(shù)字權限管理內(nèi)容格式文件P’輸入到流媒體服務器,流媒體服務器從上述文件P’中取出相關字段,得到會話描述協(xié)議文件,流媒體服務器在接收到用戶的播放視頻內(nèi)容請求后,對上述文件P’進行打包,得到符合實時傳輸協(xié)議格式的第一種數(shù)據(jù)包,同時對上述會話描述協(xié)議文件打包,得到符合實時傳輸協(xié)議格式的第二種數(shù)據(jù)包,并將第一種數(shù)據(jù)包和第二種數(shù)據(jù)包發(fā)送到流媒體客戶端;(6)流媒體客戶端對上述接收到的數(shù)據(jù)包進行解包,得到上述加密的視頻幀H”和上述加密算法名稱,根據(jù)加密算法名稱對H”解密,得到視頻幀H’,根據(jù)視頻幀H’的最后b個字節(jié)中包含的填充字節(jié)數(shù),去除填充字節(jié),得到視頻幀H;(7)對上述視頻幀H進行與上述熵編碼相對應的熵解碼,得到矩陣C,對矩陣C進行反置亂變換,得到矩陣B,對矩陣B進行反量化,得到矩陣A’,對矩陣A’進行反離散余弦變換,得到視頻數(shù)據(jù),用于視頻播放。
全文摘要
本發(fā)明涉及一種流媒體視頻內(nèi)容版權保護中的編碼和解碼方法,屬于視頻內(nèi)容版權保護技術領域。對采集到的視頻內(nèi)容進行編碼、DCT、量化、置亂、熵編碼,生成并加密3GP文件;通過添加加密算法名稱、視頻內(nèi)容標識符、視頻內(nèi)容權限發(fā)布者地址信息和索引盒子得到PDCF文件以及SDP文件,并以RTP數(shù)據(jù)包方式發(fā)送。流媒體客戶端解析RTP包獲取并解密視頻幀,通過熵解碼、反置亂、反量化和反DCT,得到可播放的RGB或YUV數(shù)據(jù)。本發(fā)明方法的優(yōu)點是通過對DCT系數(shù)置亂變換再加密,使得視頻內(nèi)容解密后依然處于信息模糊狀態(tài),加強了視頻內(nèi)容的版權保護,通過自定義信息增強了系統(tǒng)中流媒體與應用端的交互性,提高了系統(tǒng)的安全性。
文檔編號H04N7/24GK101355695SQ200810119360
公開日2009年1月28日 申請日期2008年9月5日 優(yōu)先權日2008年9月5日
發(fā)明者申 何, 何顯波, 璋 劉, 王建民, 王朝坤 申請人:清華大學