背景情報
API操作を呼び出すことで、HTTPライブストリーミング (HLS) 暗号化のワークフローを作成できます。 HLS暗号化のワークフローの作成から暗号化されたビデオの再生までの手順の詳細については、「ビデオの暗号化と暗号化されたビデオの再生」をご参照ください。 ApsaraVideo Media Processing (MPS) SDK for Pythonを使用することもできます。 SDKのインストール方法の詳細については、「インストール」をご参照ください。
サンプルコード
jsonのインポート
aliyunsdkmts.request.v20140618からAddMediaWorkflowRequestをインポート
aliyunsdkcoreインポートクライアントから
REGION_ID = '<region>'
ACCESS_KEY_ID = '<accessKeyId>'
ACCESS_KEY_SECRET = '<accessKeySecret>'
PIPELINE_ID = "<PipelineId>"
TEMPLATE_ID = "S00000001-100020"# M3U8形式を使用するトランスコーディングテンプレートのID。 必要に応じてこのパラメーターを設定します。
OSS_LOCATION = "<OssLocation>"
INPUT_BUCKET = "<InputBucket>"
INPUT_PATH = "<InputPath>"# 入力パス。 例: HLS-暗号化。
OUTPUT_BUCKET = "<OutputBucket>"
ENCRYPTION_TYPE = "hls-aes-128"
HLS_KEY_URI = "<復号鍵のURI>"# 例: http://example.aliyundoc.com。
ACT_START = "Act-Start"
ACT_ENCRYPTION = "Act-HLS-Encryption"
ACT_REPORT = "Act-Report"
def addMediaWorkflow():
global client
client = client.AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION_ID)
request = AddMediaWorkflowRequest.AddMediaWorkflowRequest()
request.set_Topology(buildWorkflowTopology())
request.setName (「HLS暗号化のワークフローpy」)
response = client.do_action_with_exception(request)
print json.loads (レスポンス)
def buildWorkflowTopology():
workflow = {}
workflow["Activities"] = buildActivities()
workflow["Dependencies"] = buildDependencies()
print json.dumps(workflow)
を返すjson.dumps (ワークフロー)
def buildActivities():
activities = {}
activities[ACT_START] = buildStartActivity()
activities[ACT_ENCRYPTION] = buildTranscodeActivity()
activities[ACT_REPORT] = buildReportActivity()
return activities
def buildStartActivity():
startActivity = {}
startActivity["Name"] = ACT_START
startActivity["Type"] = "Start"
startActivity["Parameters"] = buildStartParameters()
return startActivity
def buildStartParameters():
startParameters = {}
startParameters["PipelineId"] = PIPELINE_ID
startParameters["InputFile"] = buildInputFile();
return startParameters
def buildInputFile():
inputFile = {}
inputFile["Bucket"] = INPUT_BUCKET
inputFile["Location"] = OSS_LOCATION
inputFile["ObjectPrefix"] = INPUT_PATH
inputFileを返す
def buildTranscodeActivity():
transcodeActivity = {}
transcodeActivity["Name"] = ACT_ENCRYPTION
transcodeActivity["Type"] = "Transcode"
transcodeActivity["Parameters"] = buildTranscodeParameters()
transcodeActivityを返す
def buildTranscodeParameters():
transcodeParameters = {}
transcodeParameters["OutputBucket"] = OUTPUT_BUCKET
transcodeParameters["OutputLocation"] = OSS_LOCATION
transcodeParameters["Outputs"] = buildOutputsConfig()
transcodeParametersを返す
def buildOutputsConfig():
outputs = []
output = {}
output["ObjectRegex"] = ACT_ENCRYPTION + "/{RunId}/{FileName}"
output["TemplateId"] = TEMPLATE_ID
output["Encryption"] = buildEncryption()
outputs.append(output)
リターン出力
def buildEncryption():
encryption = {}
encryption["Type"] = ENCRYPTION_TYPE
encryption["KeyUri"] = HLS_KEY_URI
暗号化を返す
def buildReportActivity():
reportActivity = {}
reportActivity["Name"] = ACT_REPORT
reportActivity["Parameters"] = buildReportParameters()
reportActivity["Type"] = "Report"
reportActivityを返す
def buildReportParameters():
parameters = {}
parameters["PublishType"] = "Auto"
戻り値パラメーター
def buildDependencies():
dependencies ={}
subActivityOfStart = [ACT_ENCRYPTION]
dependencies[ACT_START] = subActivityOfStart
subActivityOfTranscode = [ACT_REPORT]
dependencies[ACT_ENCRYPTION] = subActivityOfTranscode
dependencies[ACT_REPORT] = []
リターン依存関係
if __name__ == "__main__":
addMediaWorkflow()