最近一個月一直要研究基於MSMediaServer與DRM 結合的問題,主要用途為架設一個流媒體網站,網站最重要的功能為對視頻的保護。
於由我開始研究何種技術能對視頻加密與解密。最初我確定的三種方案:
第一種:種用微軟的DRM加密方式,該方式需要架設專門的認證伺服器,其原理為用認證對視頻進行加密打包,因為打包後的視頻會在視頻的頭部加一個校正頭,可以到固定的認證分發頁面請求認證,這種方式原於很多年前算是一種過時了的技術,而且需要每年夠買微軟的認證,但對了視頻的保護算是一種比較好的解決方式。不足之處是只能使用Media Player播放器,播放視頻。
第二種:採用微軟的PlayReadly方式,該方式應該是DRM的升級版。該服務比較強大可以支援移動視頻加密而且可以和Silverlight完美結合。但是可惜的是目前我也沒有看見過這東西。至少中國微軟這邊還沒有開始買這東西,之前聽說微軟研究院那邊之前用它為電信做了一個解決方案。
第三種:基於自己編碼編碼解碼器,這種方式需要通過C或純語言編寫編碼解碼器,另外需要配合ActiveX讓用戶端在瀏覽器中能夠解碼。但是由於開發工期短,沒有選擇這種方式。
最終由於種種原因我們選擇第一種方式:
在實施過程我們發現一個比較大的問題DRM認證伺服器在分布認證回應時間是一個比較慢長的過程,應該是在S級吧。所以在一個大型視頻網站同,這種的影響速度是肯定不行的,我通過做LB也不行,因為認證的加密解密是對稱的,你通過那個認證加密就只能通過那個認證解密,解密的過程與解密伺服器是有關係的。所以對於做LB是一個比較大的挑戰。
最後我們分析DRM整個過程
打包:原始視頻-》打包(添加認證的Challege到視頻頭部)-》產生DRM加密視頻
解密:DRM加密視頻通過Media Player播放器請求解密頁面-》頁面接收Challege字串-》通過本地認證解密並產生Public Licesen-》返回用戶端-》通過JS安裝認證-》播放
由於我們開始在產生認證環節開始作文章,我用採用的預發認證方式與實施認證分發方式。
預發認證方式:我們通過Windows Services方式將認證預產生並存放在資料庫中。使用者訪問時從資料讀取。
即時方式:使用者請求一次,分發一種認證方式。
最後通過這種方式解決了使用者的需求與大用量的需求。