視頻加密簡介阿里雲ApsaraVideo for VOD具備一套完善的Alibaba Content Security Service保護機制,旨在確保視頻內容不被盜鏈、非法下載及傳播。該安全機制包括訪問限制、URL鑒權、遠程鑒權、視頻加密及安全下載等多項措施。
有關訪問限制、URL鑒權及遠程鑒權等安全機制的詳細內容請參見視頻安全概述,本文主要介紹三種視頻加密方式的視頻播放。三種視頻加密的簡介如下:
安全機制
安全手段
特點
安全等級
使用門檻
視頻加密
阿里雲視頻加密(私人加密)
雲端一體的視頻加密解決方案,採用私人密碼編譯演算法,並確保鏈路的安全傳輸。
高
較低,簡單配置並整合阿里雲播放器即可。
HLS標準加密
HLS通用加密方案,使用AES_128對內容加密,適配所有HLS播放器,但密鑰容易被竊取。
較高
高,需自建密鑰管理和令牌頒發服務,並確保鏈路傳輸安全。
商業DRM
蘋果Fairplay、GoogleWidevine的原生支援,安全層級很高,滿足大多數著作權內容供應商的要求。
高
高,按調用License次數收費,只需整合阿里雲播放器SDK。
播放器SDK加密播放相容說明說明 使用Web播放器SDK播放加密視頻之前,請先瞭解對瀏覽器及各類型加密功能的適配情況,例如:Web播放器SDK支援主流移動端瀏覽器播放私人加密視頻,詳細資料請參見瀏覽器適配說明、功能適配說明。✔️和❌分別表示支援和不支援該功能。
建議您下載最新版播放器SDK以確保功能相容性,最新版本下載請參見SDK簡介。
請注意:HLS封裝格式為M3U8。
終端
播放方式
私人加密(HLS)
License私人加密(HLS)
License私人加密(MP4)
私人加密(直播FLV)
HLS標準加密
DRM加密
Web端
點播UrlSource
❌
❌
❌
❌
✔️
❌
點播VidAuth
✔️
✔️
❌
❌
✔️
❌
點播VidSts
❌
❌
❌
❌
✔️
✔️
直播UrlSource
❌
❌
❌
❌
✔️
❌
直播LiveStsSource
✔️
✔️
❌
❌
❌
✔️
Native端(iOS/Android/Flutter)
點播UrlSource
✔️
✔️
SDK版本需為6.17.0及以上版本
✔️
SDK版本需為6.8.0及以上版本
❌
✔️
❌
點播VidAuth
✔️
✔️
❌
❌
✔️
❌
點播VidSts
✔️
✔️
❌
❌
✔️
✔️
說明 flutter端不支援。
直播UrlSource
❌
❌
❌
❌
✔️
❌
直播LiveStsSource
✔️
✔️
❌
✔️
❌
✔️
說明 flutter端不支援。
加密介紹阿里雲視頻加密(私人加密)阿里雲視頻加密通過對視頻資料進行加密,即使下載到本地,視頻仍保持加密狀態,有效防止惡意二次分發、泄露和盜鏈問題。詳情請參見相關文檔阿里雲視頻加密(私人加密)。
阿里雲播放器SDK封裝瞭解密邏輯與服務端互動,只需配置加密轉碼並整合播放器,即可低成本實現加密播放。
重要 阿里雲視頻加密(私人加密)屬於免費服務,但需通過視頻轉碼實現加密功能。轉碼操作將產生服務費用,具體計費標準請參考媒資轉碼計費。
配置私人加密
阿里雲視頻加密的詳細流程及配置,請參見如何使用。
使用限制阿里雲視頻加密(私人加密)功能支援對HLS(M3U8)、FLV和MP4格式的視頻進行加密操作。該功能僅支援通過阿里雲播放器進行播放。在Web端,僅支援HLS格式的播放,而在Native端則支援所有格式的播放。
阿里雲視頻加密(License私人加密)阿里雲視頻加密(License私人加密)在私人加密保障播放安全的基礎上,通過直接使用加密視頻URL起播,進一步提升了起播速度,適用於短視頻和短劇情境。
重要 阿里雲視頻加密(License私人加密)屬於免費服務,但需通過視頻轉碼實現加密功能。轉碼操作將產生服務費用,具體計費標準請參考媒資轉碼計費。
配置私人加密
阿里雲視頻加密的詳細流程及配置,請參見如何使用。
使用限制阿里雲視頻加密(License私人加密)功能支援對HLS和MP4格式的視頻進行加密操作。該功能僅支援通過阿里雲播放器進行播放。
HLS標準加密HLS標準加密採用AES-128對視頻內容加密,相容所有HLS播放器,支援自研或開源播放器,靈活性高但門檻更高、安全性較低。詳情請參見HLS標準加密。
重要 阿里雲視頻加密(HLS標準加密)屬於免費服務,但需通過視頻轉碼實現加密功能。轉碼操作將產生服務費用,具體計費標準請參考媒資轉碼計費。
配置HLS標準加密
HLS標準加密的詳細流程及配置,請參見接入流程。
使用限制HLS標準加密相容各類HLS播放器,使用者可自選播放器。本文以阿里雲播放器為例,介紹如何播放HLS加密視頻。阿里雲播放器支援令牌傳遞,CDN會動態調整M3U8檔案中的解密URI,並附帶使用者令牌,供業務方驗證。
DRM加密阿里雲ApsaraVideo for VOD支援行業通用DRM加密(Digital Rights Management),一站式管理著作權視頻,相容WideVine和Fairplay方案。詳情請參見DRM加密。
重要 DRM加密基於轉碼實現,但在轉碼輸出視頻時,僅產生轉碼費用,不會產生DRM加密費用;當在終端請求播放DRM加密視頻時會產生DRM加密費用,播放端根據終端DRM加密視頻License的請求次數,按次計算費用。計費詳情請參見DRM計費。
配置DRM加密
僅支援通過ApsaraVideo for VOD控制台開啟,詳細操作請參見配置DRM加密。
使用限制經過DRM加密的視頻,目前僅支援通過阿里雲播放器播放。
Web端說明 使用阿里雲Web播放器SDK之前,請先瞭解瀏覽器及阿里雲視頻加密(私人加密)視頻播放功能的適配情況,具體如下:
H5 模式支援案頭端和移動端瀏覽器環境,具體支援情況請參見功能適配說明。
出於安全考慮,阿里雲視頻加密(私人加密)不支援用真實的加密視頻調試。
操作步驟使用者可以在自己的Web頁面中嵌入Web播放器並實現播放。
請先參考快速接入,將Web播放器SDK引入到自己的頁面中。
選擇相應的加密方式並進行播放。
使用者可以在自己的Web頁面中嵌入Web播放器並實現播放。程式碼範例如下:
阿里雲視頻加密(私人加密)私人加密播放-ApsaraVideo for VODVidAuth播放(HLS格式)經過私人加密的視頻通過點播VidAuth方式播放時,與播放普通視頻相比,需額外傳入參數encryptType: 1,來啟用私人加密。
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
vid : '
playauth : '
encryptType: 1, // 必選參數,當播放私人加密流時需要設定本參數值為1。其它情況無需設定。
playConfig:{EncryptType:'AliyunVoDEncryption'}, // 當您輸出的M3U8流中,含有其他非私人加密流時,需要指定此參數。
// authTimeout: 7200, // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值7200。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
},function(player){
console.log('The player is created.')
});
私人加密播放-ApsaraVideo for LiveLiveStsSource播放(HLS格式)經過私人加密的視頻通過直播LiveStsSource方式播放時,需要傳入URL和STS臨時身份憑證等資訊,STS臨時身份憑證的產生請參見擷取STS Token。範例程式碼如下:
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isLive: true, // 直播設定為true。
source: '
accessKeyId: '
accessKeySecret: '
securityToken: '
domain: '
app:'
stream:'
regionId: '
},function(player){
console.log('The player is created.')
});
說明 如果希望支援 iOS 17.1 以下瀏覽器的點播私人加密,需要您自行部署一個額外的播放器外掛程式指令碼,具體步驟如下:
原理說明:iOS 17.1 以下私人加密需要一個額外的外掛程式,該外掛程式使用了 Service Worker 技術,由於瀏覽器的安全性原則限制,僅允許網站訪問和當前網站同源的 service worker 指令碼,因此需要您將播放器外掛程式指令碼部署到和您網站相同的網域名稱下使用。
下載指令碼:https://g.alicdn.com/apsara-media-box/imp-web-player/<版本號碼>/aliplayer-worker-min.js
部署指令碼:假設您播放私人加密視頻的網站為 https://www.aliyun.com/a/b.html,您需要將指令碼部署到 https://www.aliyun.com/a/aliplayer-worker-min.js,即和當前網站同級目錄。
初始化播放器時傳入此地址:
new Aliplayer({
// ...其它參數
swScriptURL: 'https://www.aliyun.com/a/aliplayer-worker-min.js' // 請填寫完整的外掛程式指令碼地址,確保此地址可以訪問
})注意:請確保播放器的版本和外掛程式的版本完全一致。
如果您的網頁運行在自訂打包的 iOS 應用程式中(例如 uni-app),則需要在應用的 Info.plist 檔案中將您的網站網域名稱配置到 WKAppBoundDomains,以便在 WKWebview 中啟用 Service Worker 功能。有關詳細資料,詳情請參考:App-Bound Domains。
HLS標準加密HLS標準加密播放-ApsaraVideo for VODVidAuth播放經過HLS標準加密的視頻通過點播VidAuth方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
let player = new Aliplayer({
id:'J_prismPlayer',
vid:'
playauth:'
playConfig: { // 選擇性參數
MtsHlsUriToken: '', // 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞。
EncryptType: 'HLSEncryption', // 選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
},
});HLS標準加密播放-ApsaraVideo for VODVidSts播放經過HLS標準加密的視頻通過點播VidSts方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
let player = new Aliplayer({
id: 'J_prismPlayer',
vid : '
accessKeyId: '
securityToken: '
accessKeySecret: '
region: '
playConfig: { // 選擇性參數
MtsHlsUriToken: '', // 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞。
EncryptType: 'HLSEncryption', // 選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
},
};HLS標準加密播放-UrlSource播放經過HLS標準加密的視頻通過直播或點播UrlSource方式播放時,與播放普通視頻一致,無需額外設定參數。
let player = new Aliplayer({
id:'J_prismPlayer',
source:'
isLive: true, // 是否為直播播放。
});DRM加密DRM加密播放-ApsaraVideo for VODVidSts播放經過DRM加密的視頻通過點播VidSts方式播放,與播放普通視頻相比,需要額外傳入參數isDrm: true,來啟用DRM加密。
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isDrm: true,
vid: '
accessKeyId: '
securityToken: '
accessKeySecret: '
region: '
certId: '
// authTimeout: 7200, // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值7200。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
},function(player){
console.log('The player is created.')
});
DRM加密播放-ApsaraVideo for LiveLiveStsSource播放經過DRM加密的視頻通過直播LiveStsSource方式播放,需要傳入URL和STS臨時身份憑證等資訊,STS臨時身份憑證的產生請參見擷取STS Token,範例程式碼如下:
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
isLive: true, // 直播設定為true。
isDrm: true,
source: '
accessKeyId: '
securityToken: '
accessKeySecret: '
region: '
certId: '
},function(player){
console.log('The player is created.')
});
Android端操作步驟使用者可以通過快速整合Android播放器到自己的應用中並實現播放。步驟及範例程式碼如下:
整合阿里雲Android播放器SDK。
Android播放器SDK的整合操作請參見整合SDK。
建立播放器播放視頻。
建立播放器的操作請參見建立播放器。其中,步驟3.建立DataSource的操作請根據實際需求選擇以下任一方式建立。
阿里雲視頻加密(私人加密)注意事項
經過阿里雲視頻加密(私人加密)加密過的HLS格式視頻,支援通過建立轉碼模板進行轉碼後通過URL進行播放。在進行轉碼之前,您需首先在同一帳號下完成License綁定(詳情參見管理License),然後使用EncryptType參數來建立轉碼模板組,樣本如下:
重要 建立後,您無法通過控制台對模板進行修改或儲存,否則加密方式將被覆蓋。
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS本地加密",
"Type": "Normal",
"Container": {
"Format": "m3u8"
},
"TransConfig": {
"IsCheckReso": false,
"IsCheckResoFail": false,
"IsCheckVideoBitrate": false,
"IsCheckVideoBitrateFail": false,
"IsCheckAudioBitrate": false,
"IsCheckAudioBitrateFail": false
},
"Definition": "HD",
"MuxConfig": {
"Segment": {
"Duration": 5
}
},
"EncryptSetting": {
"EncryptType": "AliyunVoDLicenseEncryption"
},
"Video": {
"Height": 720,
"Bitrate": 400,
"Codec": "H.264",
"Fps": 25,
"Gop": 250,
"Profile": "high"
},
"Audio": {
"Bitrate": 64,
"Codec": "AAC",
"Channels": 2,
"Samplerate": "44100"
}
}]私人加密播放-ApsaraVideo for VODVidAuth播放(HLS格式+MP4格式)經過私人加密輸出的HLS格式或MP4格式視頻通過點播VidAuth方式播放時,若當前視頻存在其他非私人加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為AliyunVoDEncryption來篩選私人加密流進行播放。
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// 選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
vidAuth.setPlayConfig(vidPlayerConfigGen);
vidAuth.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidAuth.setPlayAuth("
vidAuth.setRegion("接入地區");// 5.5.5.0及之後版本播放器SDK,本參數已棄用,無需設定region,播放器會自動解析region;5.5.5.0之前版本播放器SDK,本參數必選,點播服務的接入地區,預設為cn-shanghai。
// vidAuth.setAuthTimeout(3600); // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
aliPlayer.setDataSource(vidAuth);私人加密播放-ApsaraVideo for VODVidSts播放(HLS格式+MP4格式)經過私人加密輸出的HLS格式或MP4格式視頻通過點播VidSts方式播放時,若當前視頻存在其他非私人加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為AliyunVoDEncryption來篩選私人加密流進行播放。
VidSts vidSts = new VidSts();
VidPlayerConfigGen vidPlayerConfigGen = new VidPlayerConfigGen();
vidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.AliyunVoDEncryption);// 選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
vidSts.setPlayConfig(vidPlayerConfigGen);
vidSts.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidSts.setAccessKeyId("
vidSts.setAccessKeySecret("
vidSts.setSecurityToken("
vidSts.setRegion("接入地區");// 必選參數,點播服務的接入地區,預設為cn-shanghai。
// vidSts.setAuthTimeout(3600); // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
aliPlayer.setDataSource(vidSts);私人加密播放-ApsaraVideo for LiveLiveStsSource播放(HLS格式+FLV格式)經過私人加密輸出的HLS格式或者FLV格式視頻通過直播LiveStsSource方式播放時,需要傳入URL和STS憑證,並設定視頻加密類型為AliEncryption。範例程式碼如下:
建立DataSource。
需傳遞AVPLiveStsSource作為播放源。
// 建立LiveSts,EncryptionType需要設定為AliEncryption
LiveSts liveSts = new LiveSts();
liveSts.setUrl("
liveSts.setAccessKeyId("
liveSts.setAccessKeySecret("
liveSts.setSecurityToken("
liveSts.setDomain("
liveSts.setApp("
liveSts.setStream("
liveSts.setEncryptionType(LiveSts.LiveEncryptionType.AliEncryption);// 必選參數,設定加密類型為AliEncryption。
liveSts.setRegion("
// 設定播放源
aliPlayer.setDataSource(liveSts);
// 準備播放
aliPlayer.prepare();監聽STS是否無效。
加密直播播放過程中可能會有更換加密Key的過程,換Key時則會通過STS去請求到最新的Key。開發人員需要監聽STS是否有效。如果無效則會影響加密直播流的播放。
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() {
@Override
public AliPlayer.Status onVerifySts(StsInfo info) {
if(info 可以使用){
return IPlayer.StsStatus.Valid;
}
if(可以擷取有效STS){
擷取STS();// 非同步同步均可。
return IPlayer.StsStatus.Pending;
}
// 如果info無效,且無法擷取到最新的STS,那麼建議停止播放。防止出現花屏。
mAliyunVodPlayer.stop();
return IPlayer.StsStatus.Invalid;
}
@Override
public AliPlayer.Status onVerifyAuth(VidAuth auth) {
return AliPlayer.Status.Valid;
}
});說明 擷取STS成功之後,需要調用updateLiveStsInfo方法去更新STS。如果擷取失敗,則建議停止播放。如果不更新STS,逾時之後播放器會繼續使用之前的STS去擷取Key。如果STS失效,則可能會出現花屏或者播放失敗。
mAliyunVodPlayer.updateStsInfo(stsInfo);阿里雲視頻加密(License私人加密)注意事項
經過阿里雲視頻加密(License私人加密)加密過的HLS格式視頻,支援通過建立轉碼模板進行轉碼後通過URL進行播放。在進行轉碼之前,您需首先在同一帳號下完成License綁定(詳情參見管理License),然後使用EncryptType參數來建立轉碼模板組,樣本如下:
重要 建立後,您無法通過控制台對模板進行修改或儲存,否則加密方式將被覆蓋。
[{
"TranscodeTemplateId": "",
"TemplateName": "740PH264HLS本地加密",
"Type": "Normal",
"Container": {
"Format": "m3u8"
},
"TransConfig": {
"IsCheckReso": false,
"IsCheckResoFail": false,
"IsCheckVideoBitrate": false,
"IsCheckVideoBitrateFail": false,
"IsCheckAudioBitrate": false,
"IsCheckAudioBitrateFail": false
},
"Definition": "HD",
"MuxConfig": {
"Segment": {
"Duration": 5
}
},
"EncryptSetting": {
"EncryptType": "AliyunVoDLicenseEncryption"
},
"Video": {
"Height": 720,
"Bitrate": 400,
"Codec": "H.264",
"Fps": 25,
"Gop": 250,
"Profile": "high"
},
"Audio": {
"Bitrate": 64,
"Codec": "AAC",
"Channels": 2,
"Samplerate": "44100"
}
}]License私人加密播放-ApsaraVideo for VODUrlSource播放(HLS格式+MP4格式)說明 僅6.8.0及以後版本的Android播放器SDK支援通過點播UrlSource方式播放MP4格式的License私人加密視頻,6.17.0及以後的版本支援HLS格式(單碼率、多碼率)的License私人加密視頻。
經過License私人加密輸出的HLS格式或MP4格式視頻通過點播UrlSource方式播放時,可調用GetPlayInfo - 擷取音視頻播放地址介面擷取視頻的播放地址,擷取到的視頻URL需要您按協議在URL尾部自行拼接etavirp_nuyila=1(位置不限)後傳入播放器(僅MP4需此參數,HLS可直接使用原視頻URL),播放器SDK的配置與播放普通視頻配置一致,無需額外設定參數。
播放URL樣本1:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
播放URL樣本2:https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
// 播放地址
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
// 播放器
UrlSource urlSource = new UrlSource();
urlSource.setUri(playURL);// 必選參數,視頻的播放地址(URL),可調用GetPlayInfo介面擷取視頻URL
aliPlayer.setDataSource(urlSource);
aliPlayer.prepare();
// 短視頻播放器
AliListPlayer aliyunListPlayer = AliPlayerFactory.createAliListPlayer(getApplicationContext());
// 添加UrlSource播放源
aliyunListPlayer.addUrl(playURL,uid);
aliyunListPlayer.moveTo(uid);
//預先載入
MediaLoader mediaLoader = MediaLoader.getInstance();
mediaLoader.load(playURL,"duration");HLS標準加密HLS標準加密播放-ApsaraVideo for VODVidAuth播放經過HLS標準加密的視頻通過點播VidAuth方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
重要 開啟M3U8標準加密改寫後,則需要您調用setMtsHlsUriToken設定使用者令牌。
VidAuth vidAuth = new VidAuth();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
playerConfig.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);// 選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
playerConfig.setMtsHlsUriToken("token");// 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞。
vidAuth.setPlayConfig(playerConfig);
vidAuth.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidAuth.setPlayAuth("
vidAuth.setRegion("接入地區");// 5.5.5.0及之後版本播放器SDK,本參數已棄用,無需設定region,播放器會自動解析region;5.5.5.0之前版本播放器SDK,本參數必選,點播服務的接入地區,預設為cn-shanghai。
// vidAuth.setAuthTimeout(3600);// 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
aliPlayer.setDataSource(vidAuth);HLS標準加密播放-ApsaraVideo for VODVidSts播放經過HLS標準加密的視頻通過點播VidSts方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
重要 開啟M3U8標準加密改寫後,則需要您調用setMtsHlsUriToken設定使用者令牌。
VidSts vidSts = new VidSts();
VidPlayerConfigGen playerConfig = new VidPlayerConfigGen();
VidPlayerConfigGen.setEncryptType(VidPlayerConfigGen.EncryptType.HLSEncryption);//選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
playerConfig.setMtsHlsUriToken("token");// 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞。
vidSts.setPlayConfig(playerConfig);
vidSts.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidSts.setAccessKeyId("
vidSts.setAccessKeySecret("
vidSts.setSecurityToken("
vidSts.setRegion("接入地區");// 必選參數,點播服務的接入地區,預設為cn-shanghai。
// vidSts.setAuthTimeout(3600);// 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
aliPlayer.setDataSource(vidSts);HLS標準加密播放-UrlSource播放經過HLS標準加密的視頻通過直播或點播UrlSource方式播放時,可調用GetPlayInfo - 擷取音視頻播放地址介面擷取視頻的播放地址。開啟M3U8標準加密改寫後,擷取到的視頻URL需要您按協議在URL尾部自行拼接MtsHlsUriToken=
原始播放URL樣本:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8
輸入到播放器URL樣本:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=
UrlSource urlSource = new UrlSource();
urlSource.setUri("播放地址");// 必選參數,播放地址為經過HLS標準加密的直播流或點播流地址。
aliPlayer.setDataSource(urlSource);DRM加密說明 Android平台,為了保證高安全等級的視頻能正常播放,建議使用surfaceView進行播放。
DRM加密播放-ApsaraVideo for VODVidSts播放經過DRM加密的視頻通過點播VidSts方式播放時,與播放普通視頻配置一致,無需額外設定參數。
VidSts vidSts = new VidSts();
vidSts.setVid("Vid資訊");// 必選參數,視頻ID(VideoId)。
vidSts.setAccessKeyId("
vidSts.setAccessKeySecret("
vidSts.setSecurityToken("
vidSts.setRegion("接入地區");// 必選參數,點播服務的接入地區,預設為cn-shanghai。
// vidSts.setAuthTimeout(3600); // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
aliPlayer.setDataSource(vidSts);DRM加密播放-ApsaraVideo for LiveLiveStsSource播放經過DRM加密的視頻通過直播LiveStsSource方式播放時,需要傳入URL和STS憑證,並設定視頻加密類型為WideVine_FairPlay。範例程式碼如下:
建立DataSource。
需傳遞AVPLiveStsSource作為播放源。
// 建立LiveSts,EncryptionType需要設定為WideVine_FairPlay
LiveSts liveSts = new LiveSts();
liveSts.setUrl("
liveSts.setAccessKeyId("
liveSts.setAccessKeySecret("
liveSts.setSecurityToken("
liveSts.setDomain("
liveSts.setApp("
liveSts.setStream("
liveSts.setEncryptionType(LiveSts.LiveEncryptionType.WideVine_FairPlay);// 必選參數,設定加密類型為WideVine_FairPlay。
liveSts.setRegion("
// 設定播放源
aliPlayer.setDataSource(liveSts);
// 準備播放
aliPlayer.prepare();監聽STS是否無效。
加密直播播放過程中可能會有更換加密Key的過程,換Key時則會通過STS去請求到最新的Key。開發人員需要監聽STS是否有效。如果無效則會影響加密直播流的播放。
mAliyunVodPlayer.setOnVerifyTimeExpireCallback(new AliPlayer.OnVerifyTimeExpireCallback() {
@Override
public AliPlayer.Status onVerifySts(StsInfo info) {
if(info 可以使用){
return IPlayer.StsStatus.Valid;
}
if(可以擷取有效STS){
擷取STS();// 非同步同步均可。
return IPlayer.StsStatus.Pending;
}
// 如果info無效,且無法擷取到最新的STS,那麼建議停止播放。防止出現花屏。
mAliyunVodPlayer.stop();
return IPlayer.StsStatus.Invalid;
}
@Override
public AliPlayer.Status onVerifyAuth(VidAuth auth) {
return AliPlayer.Status.Valid;
}
});說明 擷取STS成功之後,需要調用updateLiveStsInfo方法去更新STS。如果擷取失敗,則建議停止播放。如果不更新STS,逾時之後播放器會繼續使用之前的STS去擷取Key。如果STS失效,則可能會出現花屏或者播放失敗。
mAliyunVodPlayer.updateStsInfo(stsInfo);iOS端操作步驟使用者可以通過快速整合iOS播放器到自己的應用中並實現播放。步驟及範例程式碼如下:
整合阿里雲iOS播放器SDK。
iOS播放器SDK的整合操作請參見整合SDK。
建立播放器(預先載入)播放(載入)視頻。
建立播放器的操作步驟請參見建立播放器。其中,步驟3.建立DataSource的操作請根據實際需求選擇以下任一方式建立。
阿里雲視頻加密(私人加密)私人加密播放-ApsaraVideo for VODVidAuth(HLS格式+MP4格式)經過私人加密輸出的HLS格式或MP4格式視頻通過點播VidAuth方式播放時,若當前視頻存在其他非私人加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為AliyunVoDEncryption來篩選私人加密流進行播放。
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid資訊"; // 必選參數,視頻ID(VideoId)。
authSource.playAuth = @"
authSource.region = @"接入地區"; // 5.5.5.0及之後版本播放器SDK,本參數已棄用,無需設定region,播放器會自動解析region;5.5.5.0之前版本播放器SDK,本參數必選,點播服務的接入地區,預設為cn-shanghai。
// authSource.authTimeout = 3600; // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
//通過VidPlayerConfigGenerator構建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; //選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
authSource.playConfig = [config generatePlayerConfig];
[self.player setAuthSource:authSource];私人加密播放-ApsaraVideo for VODVidSts(HLS格式+MP4格式)經過私人加密輸出的HLS格式或MP4格式視頻通過點播VidSts方式播放時,若當前視頻存在其他非私人加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為AliyunVoDEncryption來篩選私人加密流進行播放。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"接入地區"; // 必選參數,點播服務的接入地區,預設為cn-shanghai。
source.vid = @"Vid資訊"; // 必選參數,視頻ID(VideoId)。
source.securityToken = @"
source.accessKeySecret = @"
source.accessKeyId = @"
// source.authTimeout = 3600; // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
//通過VidPlayerConfigGenerator構建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"AliyunVoDEncryption"]; //選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
source.playConfig = [config generatePlayerConfig];
//設定播放源
[self.player setStsSource:source];私人加密播放-ApsaraVideo for LiveLiveStsSource(HLS格式+FLV格式)經過私人加密輸出的HLS格式或者FLV格式視頻通過直播LiveStsSource方式播放時,需要傳入URL和STS憑證,並設定視頻加密類型為ENCRYPTION_TYPE_ALIVODENCRYPTION。範例程式碼如下:
建立DataSource。
需傳遞AVPLiveStsSource作為播放源。
// 建立LiveSts,encryptionType需要設定為ENCRYPTION_TYPE_ALIVODENCRYPTION
AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"加密直播url"
accessKeyId:@"臨時akId"
accessKeySecret:@"臨時akId"
securityToken:@"安全token"
region:@"region值"
domain:@"url播流網域名稱"
app:@"播流應用程式名稱"
stream:@"播流流名"
encryptionType:ENCRYPTION_TYPE_ALIVODENCRYPTION];// 必選參數,設定加密類型為ENCRYPTION_TYPE_ALIVODENCRYPTION。
// 設定播放源
[self.aliPlayer setLiveStsSource:liveStsSource];
......
// 準備播放
[self.aliPlayer prepare];監聽STS是否無效。
加密直播播放過程中可能會有更換加密Key的過程,換Key時則會通過STS去請求到最新的Key。開發人員需要監聽STS是否有效。如果無效則會影響加密直播流的播放。
__weak typeof(self) weakSelf = self;
[self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) {
if (info 可以使用) {
return Valid;
}
if(可以擷取有效STS){
擷取STS();// 非同步同步均可。
return Pending;
}
[weakSelf.aliPlayer stop];
return Invalid;
}];說明 擷取STS成功之後,需要調用updateLiveStsInfo方法去更新STS。如果擷取失敗,則建議停止播放。如果不更新STS,逾時之後播放器會繼續使用之前的STS去擷取Key。如果STS失效,則可能會出現花屏或者播放失敗。
[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];阿里雲視頻加密(License私人加密)License私人加密播放-ApsaraVideo for VODUrlSource播放(HLS格式+MP4格式)說明 僅6.8.0及以後版本的iOS播放器SDK支援通過點播UrlSource方式播放MP4格式的License私人加密視頻,6.17.0及以後版本支援HLS格式(單碼率、多碼率)的License私人加密視頻。
經過License私人加密輸出的HLS格式或MP4格式視頻通過點播UrlSource方式播放時,可調用GetPlayInfo - 擷取音視頻播放地址介面擷取視頻的播放地址,擷取到的視頻URL需要您按協議在URL尾部自行拼接etavirp_nuyila=1(位置不限)後傳入播放器(僅MP4需此參數,HLS可直接使用原視頻URL),播放器SDK的配置與播放普通視頻配置一致,無需額外設定參數。
播放URL樣本1:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
播放URL樣本2:https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
//播放地址
NSString *playURL = @"https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1";
//播放器
AliPlayer *player = [[AliPlayer alloc] init];
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:playURL]; // 必選參數,視頻的播放地址(URL),可調用GetPlayInfo介面擷取視頻URL,擷取到的視頻URL(僅限MP4)需要在尾部自行拼接etavirp_nuyila=1後再傳入,樣本:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
[player setUrlSource:urlSource];
[player prepare];
//列表播放器
AliListPlayer *listPlayer = [[AliListPlayer alloc] init];
[listPlayer addUrlSource:playURL uid:UUIDString];
[listPlayer moveTo:@"uid"];
//預先載入
AliMedialoader *mediaLoader = [AliMediaLoader shareInstance];
[mediaLoader load:playURL duration:1000];HLS標準加密HLS標準加密播放-ApsaraVideo for VODVidAuth播放經過HLS標準加密的視頻通過點播VidAuth方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
重要 開啟M3U8標準加密改寫後,則需要您調用setHlsUriToken設定使用者令牌。
AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
authSource.vid = @"Vid資訊"; // 必選參數,視頻ID(VideoId)。
authSource.playAuth = @"
authSource.region = @"接入地區"; // 5.5.5.0及之後版本播放器SDK,本參數已棄用,無需設定region,播放器會自動解析region;5.5.5.0之前版本播放器SDK,本參數必選,點播服務的接入地區,預設為cn-shanghai。
// authSource.authTimeout = 3600; // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
//通過VidPlayerConfigGenerator構建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // 選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
[config setHlsUriToken: @"token"]; // 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞。
source.playConfig = [config generatePlayerConfig];
//設定播放源
[self.player setAuthSource:authSource];HLS標準加密播放-ApsaraVideo for VODVidSts播放經過HLS標準加密的視頻通過點播VidSts方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
重要 開啟M3U8標準加密改寫後,則需要您調用setHlsUriToken設定使用者令牌。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.vid = @"Vid資訊"; // 必選參數,視頻ID(VideoId)。
source.region = @"接入地區"; // 必選參數,點播服務的接入地區,預設為cn-shanghai。
source.securityToken = @"
source.accessKeySecret = @"
source.accessKeyId = @"
// source.authTimeout = 3600; // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
//通過VidPlayerConfigGenerator構建config
VidPlayerConfigGenerator* config = [[VidPlayerConfigGenerator alloc]init];
[config addVidPlayerConfigByStringValue:@"EncryptType" value:@"HLSEncryption"]; // 選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
[config setHlsUriToken: @"token"]; // 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞。
source.playConfig = [config generatePlayerConfig];
// 設定播放源
[self.player setStsSource:source];HLS標準加密播放-UrlSource播放經過HLS標準加密的視頻通過直播或點播UrlSource方式播放時,可調用GetPlayInfo - 擷取音視頻播放地址介面擷取視頻的播放地址。開啟M3U8標準加密改寫後,擷取到的視頻URL需要您按協議在URL尾部自行拼接MtsHlsUriToken=
原始播放URL樣本:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8
輸入到播放器URL樣本:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:url]; // 必選參數,播放地址為經過HLS標準加密的直播流或點播流地址。
[self.player setUrlSource:urlSource];DRM加密說明 iOS平台,需要在[self.player prepare]之前全域調用一次AliPlayerGlobalSettings中的setFairPlayCertID方法來設定認證ID。認證ID可以在ApsaraVideo for VOD控制台 > 組態管理 > ApsaraVideo for Media Processing配置 > DRM認證管理中擷取。
[AliPlayerGlobalSettings setFairPlayCertID:@"控制台擷取的認證ID"];DRM加密播放-ApsaraVideo for VODVidSts播放經過DRM加密的視頻通過點播VidSts方式播放時,與播放普通視頻配置一致,無需額外設定參數。
AVPVidStsSource *source = [[AVPVidStsSource alloc] init];
source.region = @"接入地區"; // 必選參數,點播服務的接入地區,預設為cn-shanghai。
source.vid = @"Vid資訊"; // 必選參數,視頻ID(VideoId)。
source.securityToken = @"
source.accessKeySecret = @"
source.accessKeyId = @"
// source.authTimeout = 3600; // 選擇性參數,播放地址的有效時間長度,單位:秒。該時間長度會覆蓋在ApsaraVideo for VOD控制台設定的URL鑒權的有效時間長度。如果不傳,則取預設值3600。如需設定此參數,請確保該時間大於視頻的實際時間長度,防止播放地址在播放完成前到期。
//設定播放源
[self.player setStsSource:source]DRM加密播放-ApsaraVideo for LiveLiveStsSource播放經過DRM加密的視頻通過直播LiveStsSource方式播放時,需要傳入URL和STS憑證,並設定視頻加密類型為ENCRYPTION_TYPE_FAIRPLAY。範例程式碼如下:
建立DataSource。
需傳遞AVPLiveStsSource作為播放源。
// 建立LiveSts,encryptionType需要設定為ENCRYPTION_TYPE_FAIRPLAY
AVPLiveStsSource *liveStsSource = [[AVPLiveStsSource alloc] initWithUrl:@"加密直播url"
accessKeyId:@"臨時akId"
accessKeySecret:@"臨時akId"
securityToken:@"安全token"
region:@"region值"
domain:@"url播流網域名稱"
app:@"播流應用程式名稱"
stream:@"播流流名"
encryptionType:ENCRYPTION_TYPE_FAIRPLAY];// 必選參數,設定加密類型為ENCRYPTION_TYPE_FAIRPLAY。
// 設定播放源
[self.aliPlayer setLiveStsSource:liveStsSource];
......
// 準備播放
[self.aliPlayer prepare];
監聽STS是否無效。
加密直播播放過程中可能會有更換加密Key的過程,換Key時則會通過STS去請求到最新的Key。開發人員需要監聽STS是否有效。如果無效則會影響加密直播流的播放。
__weak typeof(self) weakSelf = self;
[self.aliPlayer setVerifyStsCallback:^AVPStsStatus(AVPStsInfo info) {
if (info 可以使用){
return Valid;
}
if(可以擷取有效STS){
擷取STS();// 非同步同步均可。
return Pending;
}
[weakSelf.aliPlayer stop];
return Invalid;
}];說明 擷取STS成功之後,需要調用updateLiveStsInfo方法去更新STS。如果擷取失敗,則建議停止播放。如果不更新STS,逾時之後播放器會繼續使用之前的STS去擷取Key。如果STS失效,則可能會出現花屏或者播放失敗。
[self.aliPlayer updateLiveStsInfo:self.liveStsSource.accessKeyId accKey:self.liveStsSource.accessKeySecret token:self.liveStsSource.securityToken region:self.liveStsSource.region];Flutter端說明 Flutter端不支援DRM加密。
操作步驟使用者可以通過快速整合Flutter播放器到自己的應用中並實現播放。步驟及範例程式碼如下:
整合阿里雲Flutter播放器SDK。
Flutter播放器SDK的整合操作請參見快速整合。
建立播放器播放視頻。
建立播放器的操作步驟請參見建立播放器。其中,步驟3.建立播放源的操作請根據實際需求選擇以下任一方式建立。
阿里雲視頻加密(私人加密)私人加密播放-ApsaraVideo for VODVidAuth(HLS格式+MP4格式)經過私人加密輸出的HLS格式或MP4格式視頻通過點播VidAuth方式播放時,若當前視頻存在其他非私人加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為AliyunVoDEncryption來篩選私人加密流進行播放。
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// 選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid資訊",
region: "接入地區",// 必選參數,點播服務的接入地區,預設為cn-shanghai。
playAuth: "
playConfig: value);
});私人加密播放-ApsaraVideo for VODVidSts(HLS格式+MP4格式)經過私人加密輸出的HLS格式或MP4格式視頻通過點播VidSts方式播放時,若當前視頻存在其他非私人加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為AliyunVoDEncryption來篩選私人加密流進行播放。
FlutterAliplayer.setEncryptType(EncryptType.AliyunVoDEncryption);// 選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid資訊",
region: "接入地區",
accessKeyId: "
accessKeySecret: "
securityToken: "
playConfig: value);
});阿里雲視頻加密(License私人加密)License私人加密播放-ApsaraVideo for VODUrlSource播放(HLS格式+MP4格式)說明 僅6.8.0及以後版本的Flutter播放器SDK支援通過點播UrlSource方式播放MP4格式的License私人加密視頻,6.17.0及以後版本支援HLS格式(單碼率、多碼率)的License私人加密視頻。
經過License私人加密輸出的HLS格式或MP4格式視頻通過點播UrlSource方式播放時,可調用GetPlayInfo - 擷取音視頻播放地址介面擷取視頻的播放地址,擷取到的視頻URL需要您按協議在URL尾部自行拼接etavirp_nuyila=1(位置不限)後傳入播放器(僅MP4需此參數,HLS可直接使用原視頻URL),播放器SDK的配置與播放普通視頻配置一致,無需額外設定參數。
播放URL樣本1:https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1
播放URL樣本2:https://example.aliyundoc.com/test.mp4?auth_key=xxxxx&etavirp_nuyila=1
//播放地址
String playURL = "https://example.aliyundoc.com/test.mp4?etavirp_nuyila=1"
//建立播放器執行個體
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
fAliplayer.setUrl(playURL);
fAliplayer.prepare();
//列表播放器
FlutterAliListPlayer fAliListPlayer = FlutterAliPlayerFactory.createAliListPlayer();
fAliListPlayer.addUrlSource(playURL,uid);
fAliListPlayer.moveTo("uid");
//預先載入
FlutterAliPlayerMediaLoader fAliPlayerMediaLoader = FlutterAliPlayerMediaLoader();
fAliPlayerMediaLoader.load(playURL,"duration");HLS標準加密HLS標準加密播放-ApsaraVideo for VODVidAuth播放經過HLS標準加密的視頻通過點播VidAuth方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
重要 開啟M3U8標準加密改寫後,則需要您調用setHlsUriToken設定使用者令牌。
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// 選擇性參數,設定加密類型為HLSEncryption時,則只會返回經過HLS標準加密的視頻流。
FlutterAliplayer.setHlsUriToken("token");// 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidAuth(
vid: "Vid資訊",
region: "接入地區",// 必選參數,點播服務的接入地區,預設為cn-shanghai。
playAuth: "
playConfig: value);
});HLS標準加密播放-ApsaraVideo for VODVidSts播放經過HLS標準加密的視頻通過點播VidSts方式播放時,若當前視頻存在其他非HLS標準加密類型的加密流或普通轉碼流時,可通過設定視頻加密類型為HLSEncryption來篩選HLS標準加密流進行播放,範例程式碼如下:
重要 開啟M3U8標準加密改寫後,則需要您調用setHlsUriToken設定使用者令牌。
FlutterAliplayer.setEncryptType(EncryptType.HLSEncryption);// 選擇性參數,設定加密類型為AliyunVoDEncryption時,則只會返回經過私人加密的視頻流。
FlutterAliplayer.setHlsUriToken("token");// 選擇性參數,如需校正MtsHlsUriToken(使用者令牌),可使用此參數傳遞
FlutterAliplayer.generatePlayerConfig().then((value) {
this.fAliplayer.setVidSts(
vid: "Vid資訊",
region: "接入地區",
accessKeyId: "
accessKeySecret: "
securityToken: "
playConfig: value);
});HLS標準加密播放-UrlSource播放經過HLS標準加密的視頻通過直播或點播UrlSource方式播放時,可調用GetPlayInfo - 擷取音視頻播放地址介面擷取視頻的播放地址。開啟M3U8標準加密改寫後,擷取到的視頻URL需要您按協議在URL尾部自行拼接MtsHlsUriToken=
原始播放URL樣本:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8
輸入到播放器URL樣本:https://demo.aliyundoc.com/encrypt-stream****-hd.m3u8?MtsHlsUriToken=
//建立播放器執行個體
FlutterAliplayer fAliplayer = FlutterAliPlayerFactory.createAliPlayer();
//必選參數,播放地址為經過HLS標準加密的直播流或點播流地址。
fAliplayer.setUrl("播放地址");
fAliplayer.prepare();常見問題使用加密過程中的常見問題及解決方案,請參見視頻加密常見問題。
相關文檔阿里雲視頻加密(私人加密)
HLS標準加密
DRM加密