【騰訊課堂】視頻點播上雲實踐

本文首發於 IMWeb 社區網站 imweb.io。點擊閱讀原文查看 IMWeb 社區更多精彩文章。前端

整體介紹

騰訊課堂是一款經過線上的直播與點播向用戶提供在線教育服務的產品,從 2014 年成立至今,已累計存儲了 250 萬個視頻,共 600 TB,累計時長 150 萬小時。以前一直採用的是騰訊視頻的方案,但使用的是 MP4 格式,用戶拿到了播放連接以後很容易盜版,因此趁着上雲的潮流,咱們將視頻點播遷移到了騰訊雲 - 雲點播上,本文主要會講一講咱們總體的方案、Web 接入的方法和遇到的一些問題web

視頻點播分爲視頻上傳和視頻播放兩個部分,下面的表格整理了上雲先後的部分數據對比:瀏覽器


騰訊視頻 騰訊雲
Web 視頻上傳成功率 92% 99.5%
視頻轉碼速度(兩小時左右的視頻) > 60 分鐘 < 20 分鐘
播放成功率 - PC 99% 98.7%
播放成功率 - H5 97% 97.1%

能夠看出來上傳成功率和視頻轉碼速度有了極大的提高,PC 和 H5 側的播放成功率雲和騰訊視頻基本持平。服務器

總體方案

考慮到存量視頻較多,無法短期內所有從騰訊視頻遷移至騰訊雲,同時遷移過程當中用戶可能繼續使用老的方式向騰訊視頻上傳,因此整個點播上雲分爲兩期進行:網絡

  1. 第一期主要工做是接入騰訊雲的上傳、轉碼和播放功能,確保用戶新上傳的視頻均走雲的流程,同時後臺將新上傳的視頻旁路一份到騰訊視頻,這樣既能夠在用戶播放雲視頻失敗時前端降級至騰訊視頻播放,也方便出現重大問題時快速切回至老的騰訊視頻方案。app

  2. 第二期工做則是將存量的騰訊視頻所有遷移至騰訊雲上,同時接入雲的 AI 功能,進行鑑黃、鑑暴和鑑政。待現網數據穩定且達到預期後,便可完全摒棄老的方案。ide

圖片

視頻上傳流程

圖片

視頻上傳總體方案如上圖所示,主要涉及三塊:測試

  1. 向業務後臺獲取簽名網站

  2. 調用雲SDK 進行視頻上傳加密

  3. 雲服務器進行視頻轉碼

上面三塊中最重要也最容易出問題的是"調用 SDK 上傳"這一部分,直接決定了上傳成功率,但也很容易受用戶網絡情況的影響,須要重點關注,建議記錄詳細的用戶日誌以便進行問題定位與排查。

另外,其實上述流程圖與騰訊雲文檔給出的客戶端上傳指引略微有點差異,主要在於第 4 步通知業務後臺上傳完成這裏,官方文檔中是雲後臺來通知,咱們實際採用的方式是 Web 側來通知,從而避免出現 Web 側調後臺接口出錯提示用戶上傳失敗後,雲後臺又通知業務後臺保存相關數據的狀況。

視頻播放流程

在之前使用騰訊視頻的方案時,出於種種考慮,咱們並未對視頻作加密處理,致使有些課程被他人惡意盜錄。目前上雲以後,咱們使用的是加密 HLS 的方案,經過雲提供的 Key 防盜鏈 和 DRM(數字版權管理)方案,咱們對視頻作了加密處理,就算被拿到了視頻地址,也沒法進行盜錄,進一步打擊了惡意行爲,保護了老師的版權。

圖片

用戶瀏覽器在播放視頻時主要流程如上圖所示,其中依靠第 1 步獲取 Token 和第 3 步獲取 DK 進行版權的保護,他們的做用分別爲:

  • Token 用於防盜鏈,能夠 限制視頻 URL 的過時時間、最大容許播放 IP 數等,具體的計算方法和驗證邏輯由業務方自定義。

  • DK 用於對視頻的加密切片進行解密,用戶直接獲取到的視頻分片均經過 AES-128 進行了加密,其值由騰訊雲密鑰管理服務(KMS)提供。

Web 接入的流程

視頻上傳

接入方法

視頻上傳主要依賴雲提供的 vod-js-sdk-v6,用 TypeScript 編寫,具備較爲完善的的測試用例,代碼質量很高

相關文章
相關標籤/搜索