python工作流与业务流_如何创建Python版Widevine工作流

# -*- coding: UTF-8 -*-

import json

from aliyunsdkmts.request.v20140618 import AddMediaWorkflowRequest

from aliyunsdkcore import client

REGION_ID = "cn-shanghai";

ACCESS_KEY_ID = ''

ACCESS_KEY_SECRET = ''

ENCRYPTION_TYPE = "Widevine";

PIPELINE_ID = "";

OSS_LOCATION = "oss-" + REGION_ID;

INPUT_BUCKET = ""; #输入bucket

INPUT_PATH = ""; #如 "DRM/WidevineEncryption",视频将要上将要上传到此目录

OUTPUT_BUCKET = ""; #输出bucket

OUTPUT_PATH = ""; #输出路径

MPD_360P_TEMPLATE = "";

MPD_480P_TEMPLATE = "";

MPD_720P_TEMPLATE = "";

WORKFLOW_TEMPLATE = '''

{

"Activities": {

"video-group": {

"Name": "video-group",

"Parameters": {

"AdaptationSet": "{\\"Group\\":\\"VideoGroup\\"}"

},

"Type": "VideoGroup"

},

"act-start": {

"Name": "act-start",

"Parameters": {

"PipelineId": "PIPELINE_ID",

"InputFile": "{\\"Bucket\\":\\"INPUT_BUCKET\\",\\"Location\\":\\"OSS_LOCATION\\",\\"ObjectPrefix\\":\\"INPUT_PATH/\\"}"

},

"Type": "Start"

},

"audio-cn-group": {

"Name": "audio-cn-group",

"Parameters": {

"AdaptationSet": "{\\"Lang\\":\\"chinese\\", \\"Group\\":\\"AudioGroupChinese\\"}"

},

"Type": "AudioGroup"

},

"audioCNTransNode": {

"Name": "audioCNTransNode",

"Parameters": {

"Outputs": "[{\\"TemplateId\\":\\"MPD_360P_TEMPLATE\\",\\"AudioStreamMap\\":\\"0:a:0\\",\\"Video\\":{\\"Remove\\":\\"true\\"},\\"Encryption\\":{\\"Type\\":\\"ENCRYPTION_TYPE\\"}}]",

"Representation": "{\\"Id\\":\\"chinese128k\\", \\"URI\\":\\"audiocn/cn-abc.mpd\\"}"

},

"Type": "Transcode"

},

"act-package": {

"Name": "act-package",

"Parameters": {

"Output": "{\\"Bucket\\": \\"OUTPUT_BUCKET\\",\\"Location\\": \\"OSS_LOCATION\\",\\"MasterPlayListName\\": \\"INPUT_PATH/{MediaId}/{RunId}/master.mpd\\"}",

"Protocol": "dash"

},

"Type": "PackageConfig"

},

"videoTransLD": {

"Name": "videoTransLD",

"Parameters": {

"Outputs": "[{\\"TemplateId\\":\\"MPD_360P_TEMPLATE\\",\\"Audio\\":{\\"Remove\\":\\"true\\"},\\"Encryption\\":{\\"Type\\":\\"ENCRYPTION_TYPE\\"}}]",

"Representation": "{\\"Id\\":\\"360p\\", \\"URI\\":\\"videoLD/xx.mpd\\"}"

},

"Type": "Transcode"

},

"act-report": {

"Name": "act-report",

"Parameters": {

"PublishType": "Auto"

},

"Type": "Report"

},

"generateMasterPlayListAct": {

"Name": "generateMasterPlayListAct",

"Parameters": {},

"Type": "GenerateMasterPlayList"

},

"videoTransSD": {

"Name": "videoTransSD",

"Parameters": {

"Outputs": "[{\\"TemplateId\\":\\"MPD_480P_TEMPLATE\\",\\"Audio\\":{\\"Remove\\":\\"true\\"}, \\"Encryption\\":{\\"Type\\":\\"ENCRYPTION_TYPE\\"}}]",

"Representation": "{\\"Id\\":\\"480p\\", \\"URI\\":\\"videoSD/xx.mpd\\"}"

},

"Type": "Transcode"

},

"videoTransHD": {

"Name": "videoTransHD",

"Parameters": {

"Outputs": "[{\\"TemplateId\\":\\"MPD_720P_TEMPLATE\\",\\"Audio\\":{\\"Remove\\":\\"true\\"},\\"Encryption\\":{\\"Type\\":\\"ENCRYPTION_TYPE\\"}}]",

"Representation": "{\\"Id\\":\\"720p\\", \\"URI\\":\\"videoHD/xx.mpd\\"}"

},

"Type": "Transcode"

}

},

"Dependencies": {

"video-group": ["videoTransLD", "videoTransSD", "videoTransHD"],

"act-start": ["act-package"],

"audio-cn-group": ["audioCNTransNode"],

"audioCNTransNode": ["generateMasterPlayListAct"],

"act-package": ["audio-cn-group", "video-group"],

"videoTransLD": ["generateMasterPlayListAct"],

"act-report": [],

"generateMasterPlayListAct": ["act-report"],

"videoTransSD": ["generateMasterPlayListAct"],

"videoTransHD": ["generateMasterPlayListAct"]

}

}

'''

def addMediaWorkflow():

global client

client = client.AcsClient(ACCESS_KEY_ID, ACCESS_KEY_SECRET, REGION_ID)

request = AddMediaWorkflowRequest.AddMediaWorkflowRequest()

request.set_Topology(buildWorkflowTopology())

print request.get_Topology();

request.set_Name("Widevine加密工作流py")

response = client.do_action_with_exception(request)

print json.loads(response)

def buildWorkflowTopology():

return WORKFLOW_TEMPLATE.replace("PIPELINE_ID", PIPELINE_ID).replace("INPUT_BUCKET", INPUT_BUCKET).replace("OSS_LOCATION", OSS_LOCATION).replace("INPUT_PATH", INPUT_PATH).replace("OUTPUT_BUCKET", OUTPUT_BUCKET).replace("OUTPUT_PATH", OUTPUT_PATH).replace("ENCRYPTION_TYPE", ENCRYPTION_TYPE).replace("MPD_360P_TEMPLATE", MPD_360P_TEMPLATE).replace("MPD_480P_TEMPLATE", MPD_480P_TEMPLATE).replace("MPD_720P_TEMPLATE", MPD_720P_TEMPLATE);

if __name__ == "__main__":

addMediaWorkflow()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值