視頻加密旨在通過對視頻內容進行深度安全處理,確保視頻資料不被非法擷取和傳播,可有效防止視頻泄露和盜鏈問題,廣泛用於線上教育及財經等對Alibaba Content Security Service性要求高的領域。本文提供Python SDK建立HLS標準加密工作流程相關功能的範例程式碼。
簡介
樣本調用API,建立HLS標準加密工作流程。建立HLS標準加密工作流程到播放加密視頻的完整步驟,參見HLS的加密與播放。MPS SDK,詳情參見安裝。
範例程式碼
import os
import json
from urllib.parse import quote
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcore.auth.credentials import AccessKeyCredential
from aliyunsdkmts.request.v20140618.AddMediaWorkflowRequest import AddMediaWorkflowRequest
# 讀取環境變數中設定的ACCESS_KEY ACCESS_KEY_SECRET資訊
credentials = AccessKeyCredential(os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'])
# region_id 為調用的服務地區ID,支援的地區參考 https://www.alibabacloud.com/help/zh/mps/product-overview/regions-and-endpoints
client = AcsClient(region_id = 'cn-shanghai', credential = credentials)
request = AddMediaWorkflowRequest()
request.set_Name("hls-transcode-workflow")
startActivity = {
"Type": "Start",
"Parameters": {
"InputFile": {
"Bucket": "<your input bucket>",
"Location": "oss-cn-shanghai",
"ObjectPrefix": "media/"
},
"PipelineId": "<PipelineId>"
}
}
transcodeActivity = {
"Type": "Transcode",
"Parameters": {
"Outputs": [
{
"OutputObject": quote("transcode/{ObjectPrefix}/{FileName}.{ExtName}"),
"TemplateId": "<hls TemplateId>",
"Encryption": {
"Type": "hls-aes-128",
"KeyUri": "<解密密鑰的URI #如http://example.aliyundoc.com>"
}
}
],
"OutputLocation": "oss-cn-shanghai",
"OutputBucket": "<your output bucket>"
}
}
reportActivity = {
"Type": "Report",
"Parameters": {
}
}
topology = {
"Activities": {
"Act-Start": startActivity,
"transcodingNode": transcodeActivity,
"reportNode": reportActivity
},
"Dependencies": {
"Act-Start": ["transcodingNode"],
"transcodingNode": ["reportNode"],
"reportNode": []
}
}
request.set_Topology(topology)
response = client.do_action_with_exception(request)
# 輸出列印
print(str(response, encoding='utf-8'))