v-manual-encrypt
更新時間:2024-05-15 17:23:40
一、首先在【POLYV後台】——【設定】——【加密設定】進行如下設定:
二、儲存好以上設定之後,還需要在頁面的播放程式碼中加入 ts 和 sign 參數。當行動端 WEB 瀏覽器請求 m3u8 時,會在 m3u8 位址後面附帶 ts 和 sign 參數,POLYV 雲平台接收到參數後會對 ts 和 sign 參數進行驗證。若驗證通過,回傳正確的解密金鑰 key 檔案連結給客戶端。反之,非法存取 key,則會回應 400 錯誤狀態。
三、PHP 為範例程式碼
參數說明:
- $secretkey (為帳號 secretkey,可在後台 --- 設定 --- API 介面視窗中查閱)
- $vid (為影片 ID,可在影片列表中查詢)
- $ts = time()*1000; (ts 參數為 13 位的毫秒級時間戳記,或使用 10 位的秒級時間戳記,後面多加 3 個 0)
- $sign = md5($secretkey.$vid.$ts); (sign 參數為 secretkey、vid、ts 的值依序拼湊起來的字串,進行 MD5 計算得到的結果)
<?php
$vid = "e2e84a738354402a52ce81aeab4e3067_e";
$secretkey= "7UagtQOq2A";
$ts=time()*1000; //10位的秒级时间戳,后面加多3个0,最后为13位的数值
$hash = md5($secretkey.$vid.$ts);
?>
<script src='https://player.polyv.net/script/polyvplayer.min.js'></script>
<div id='plv_e2e84a738354402a52ce81aeab4e3067_e'></div>
<script>
var player = polyvObject('#plv_e2e84a738354402a52ce81aeab4e3067_e').videoPlayer({
'width':'600',
'height':'485',
'vid' : 'e2e84a738354402a52ce81aeab4e3067_e',
'ts':'<?php echo $ts; ?>',
'sign':'<?php echo $hash; ?>'
});
</script>
由於行動端 WEB 是透過 HTML5 的 video 標籤呼叫手機系統的原生播放器來播放影片,需要將解密金鑰 key 透過 http 傳輸給手機系統的原生播放器。當 key 的權限為「開放授權」時,key 永久生效,無需帶上時間戳 ts 和簽名 sign 去存取。當 key 的權限為「WEB 授權」時,則需要帶上時間戳 ts 和簽名 sign,才能正確存取到 key。web 加密的 ts 和 sign 是一次有效性的。
與行動端 WEB 網頁不同的是,PC 端 WEB 網頁播放加密影片時,無需透過 http 去傳輸 key,在播放的過程中,POLYV 的 Flash 播放器會呼叫播放器內部的解密演算法,去解密播放加密影片,無需擔心 key 傳輸和暴露的問題。
設定【WEB 授權】雖然有更多的播放選擇,可以在行動端網頁上播放,但加密強度弱於【APP 授權】。如果希望影片檔案的加密安全得到更好的保障,通常推薦行動端加密使用【APP 授權】。
四、解密金鑰的「WEB 授權」過程原理,如下圖所示:

