1. 程式人生 > >[hls]m3u8視訊如何處理成加密?

[hls]m3u8視訊如何處理成加密?

作者:深藍加菲
連結:https://www.zhihu.com/question/20697986/answer/128433075
來源:知乎
著作權歸作者所有,轉載請聯絡作者獲得授權。
 

HLS的加密 , 這個有兩種方式: 
1. 常見的一種是防盜鏈(嚴格來講這不屬於加密) , 也就是說給 m3u8 和 ts 檔案的url動態生成一個 token , 比如這個:
http://www.cuplayer.com/m3u8/hunan/desc.m3u8?stream_id=hunan<m=1410595018&lkey=8bc1e0fe35f6321ef560f8ccffb70e5d&path=59.49.42.14,58.59.3.9,58.59.3.51&platid=10&splatid=1015&tag=live&cips=127.0.0.1&ext=m3u8&sign=live_tv

這個url是隨著很多引數動態變化的,比如時間,使用者id、ip地址,內容id , 導致你無法使用這個url盜鏈,這種方式可以防止其他網站直接使用你的url來觀看或者一般使用者的下載。

而ts檔案的url 也需要加請求token , 會變化成類似 http://server/file.ts?token=xxxx 的方式, 這樣的話, ts檔案的磁碟儲存位置不用變化,但是url是可以變化的(可以用query string方式,也可以用 url rewrite 方式), 注意因為url是m3u8生成的,意味著m3u8檔案是動態生成而並非靜態檔案

關於CDN快取的問題, 首先m3u8檔案肯定不能快取, 否則ts分片的動態url怎麼辦?
然後動態url的 ts分片CDN預設是肯定不快取的,但是可以稍微定製一下讓CDN忽略URL中的token部分。很多CDN都有自己的防盜鏈方案。

2. DRM加密。防盜鏈的方式是一種一般性的保護, 假如你想完全保護你的內容,必須給ts內容加密, m3u8有這個tag: #EXT-X-KEY , 一般來說會提供一個url獲取加密key, 然後對ts片段解密來播放檔案

演示:http://www.cuplayer.com/cu/Encrypt/Polyv.html