一、視頻格式:
1. 推薦格式:HLS(HTTP Live Streaming)
- 優勢?:
- ?自適應碼率?:根據用戶網絡狀況自動切換清晰度,避免卡頓。
- ?廣泛兼容性?:iOS/macOS 原生支持,Android 和 Web 端可通過?hls.js?播放。
- ?分片傳輸?:視頻被切割為多個小文件(
.ts
),天然支持加密和防盜鏈。
- ?缺點?:相比 MP4 文件,存儲和 CDN 成本略高(但可控)。
2. 備選格式:DASH(Dynamic Adaptive Streaming over HTTP)?
- ?優勢?:標準化更高,支持更復雜的自適應邏輯。
- ?缺點?:需配合?dash.js?使用,對老舊設備兼容性稍差。
二、加密方案
?1. 基礎方案:AES-128 加密(HLS 原生支持)?
- ?適用場景?:中小型課程平臺,預算有限。
- ?實現方式?:
- ?加密視頻?:使用?
ffmpeg
?生成 AES-128 加密的 HLS 文件。openssl rand 16 > enc.key ffmpeg -i input.mp4 -c:v h264 -hls_key_info_file enc.keyinfo -hls_time 10 output.m3u8
2、動態密鑰分發?:結合用戶權限驗證,通過后端接口返回密鑰。
- ?加密視頻?:使用?
-
// Egg.js 密鑰接口示例 router.get('/hls/key', async (ctx) => {const { token } = ctx.query;const isValid = await checkUserPermission(token); // 驗證用戶權限if (!isValid) ctx.throw(403);ctx.body = fs.readFileSync('enc.key'); });
- ?優點?:成本低,開發簡單,兼容性強。
- ?缺點?:密鑰可能被逆向破解(需配合其他防護手段)。
2. 進階方案:DRM(數字版權管理)?
- ?適用場景?:高價值課程或對安全性要求極高的平臺。
- ?推薦方案?:
- ?Widevine(Google)?:支持 Android、Chrome、Firefox。
- ?FairPlay(Apple)?:支持 iOS/macOS。
- ?PlayReady(Microsoft)?:支持 Edge、Windows。
- ?實現方式?:
- ?加密視頻?:使用 DRM 服務商工具(如?Google Widevine 加密工具)。
- ?集成 DRM License Server?:驗證用戶權限后發放解密許可證。
- ?優點?:安全性極高,密鑰與設備綁定,無法逆向。
- ?缺點?:成本高(需購買 DRM 服務),開發復雜度高。
?三、防盜鏈與權限控制
?1. 動態 Token 驗證?
- ?實現邏輯?:
- 用戶購買課程后,后端生成一個帶時效的 Token。
- 播放時,前端請求的?
m3u8
?文件需攜帶 Token: -
#EXT-X-KEY:METHOD=AES-128,URI="/key?token=abcd1234",IV=0x...
- 后端驗證 Token 有效性后返回密鑰。
- ?優勢?:防止未授權用戶直接訪問視頻 URL。
?2. 防盜鏈措施
?Referer 校驗?:限制視頻文件僅允許從課程網站域名請求。
ngnix
location ~ \.(m3u8|ts|key)$ {valid_referers yourdomain.com;if ($invalid_referer) { return 403; }
}
- ?IP 限制?:限制單個 IP 的并發請求量,防止爬蟲下載。
3. 視頻水印?
- ?動態水印?:在播放時疊加用戶 ID、昵稱等動態信息。
- ?工具?:使用 FFmpeg 或云端處理服務(如阿里云、騰訊云)生成水印。
四、技術架構示例
1. 上傳與處理流程?
- 用戶上傳 MP4 視頻。
- 云端轉碼(HLS + 加密):
- 工具:FFmpeg、阿里云媒體處理(MPS)。
- 存儲加密后的 HLS 文件到 CDN。
?2. 播放流程?
- 用戶進入課程頁,后端校驗權限并生成 Token。
- 前端播放器(如?Video.js)加載帶 Token 的?
m3u8
。 - 播放器請求密鑰接口,驗證通過后解密播放。
五、成本與工具推薦
1. 自建方案(低成本)?
- ?工具鏈?:FFmpeg + Egg.js + Redis(Token 管理)。
- ?存儲/CDN?:七牛云、阿里云 OSS + CDN。
?2. 云服務方案(省時省力)?
- ?視頻處理?:阿里云 MPS、騰訊云點播(VOD)。
- ?DRM 服務?:阿里云 DRM、騰訊云 DRM。
六、總結?
- ?推薦組合?:
- ?視頻格式?:HLS(自適應碼率 + 分片加密)。
- ?加密方案?:AES-128 + Token 動態驗證(中小平臺) 或 DRM(高價值課程)。
- ?必做防護?:
- HTTPS 全站加密。
- 動態 Token + 防盜鏈。
- 視頻水印(威懾泄露行為)。