文档中心

SDK for Python 使用指南

安装Python SDK

1.通过git下载SDK到本地

git clone https://github.com/zhugelaing888/ksc_sdk_python.git

2.进入ksc-sdk-python目录

cd ksc_sdk_python

3.安装SDK

python setup.py install

4.通过文件配置及管理密钥

  • 所在位置: '/etc/kscore.cfg' 或 './.kscore.cfg'
  • 注意: 使用相对路径时,需与运行目录保持一致
  • ks_access_key_id和ks_secret_access_key是金山云控制台身份与管理里面生成密钥对
[Credentials]
ks_access_key_id=AKLTyW1V6ZWET7aIvdeeIH1cwQ
ks_secret_access_key=OEoTK4IgEBIq3rlFsbpcESs87w513D6aOwdXxP6QHuvWlonSRYeKQyTzqc1XkUvpuQ==

5.创建一个session (初始化)

from kscore.offline import getOfflineClient

第一种:
client = getOfflineClient("offline", "cn‐beijing‐6",use_ssl=False)
参数说明:
    service_name:    服务名,填写"offline"
    region_name:    区域名,填写"cn‐beijing‐6"
    use_ssl:        是否https访问,填写False

第二种:
没有配置kscore.cfg调用方式
ks_access_key_id='xxxxxxxxxxxxxxxxxxxx'
ks_secret_access_key='xxxxxxxxxxxxxxxxxxxxxxx'
参数:服务service_name,大区region_name 
client = getOfflineClient("offline", "cn-beijing-6",use_ssl=False,ks_access_key_id=ks_access_key_id,ks_secret_access_key=ks_secret_access_key)

6.运行环境

适用于2.6、2.7、3.3、3.4的Python版本

注:接口的传递的参数及返回值请参考《视频云离线转码接入文档》API接口说明

创建模板

接口名

Preset

描述

如果用户想创建离线转码任务时,首先需要在自己的用户下创建模板,因为离线转码是根据模板对任务进行处理,如果不创建模板直接创建任务则不能创建成功。

调用方式

res = client.Preset(param)
注:
1.param必须是json格式数据

调用示例

{
    "preset": "xxxx",
    "description": "xxxx",
    "presettype": "xxxx",
    "param":{
        "f": "xxx", 
        "AUDIO": {
            "ab": xxx,
            "ar": xxx,
            "acodec": "xxxx",
            "an": xxx
        },
        "VIDEO": {
            "vr": xxx,
            "vb": "xxxx",
            "vcodec": "xxxx",
            "width": xxx,
            "height": xxx,
            "as": xxx,
            "rotate": "xxxx",
            "vn": xxx
        }
    }
}

返回示例

{
    "errNum":0,
    "errMsg":"success"
}

更新模板

接口名

UpdatePreset

描述

不能修改模板名

调用方式

res = client.UpdatePreset(param)
注:
1.param必须是json格式数据

调用示例

{
    "preset": "xxxx",
    "description": "xxxx",
    "presettype": "xxxx",
    "param":{
        "f": "xxx", 
        "AUDIO": {
            "acodec": "xxxx"
        },
        "VIDEO": {
            "vcodec": "xxxx", 
            "width": xxx,
            "height": xxx
        }
    }
}

返回示例

{
    "errNum":0,
    "errMsg":"success"
}

查询模板列表

接口名

GetPresetList

调用方式

res = client.GetPresetList(withDetail=0,presettype="avop",presets='test')

返回示例

{
    "presetList":[
        {
            "preset":"preset_avop1",
            "presetType":"avop",
            "description":"desc:preset_avop1",
            "createTime":"2016-08-15 13:41:46",
            "updateTime":"2016-08-15 13:42:12"
        },
        {
            "preset":"preset_avop2",
            "presetType":"avop",
            "description":"desc:preset_avop2",
            "createTime":"2016-08-16 10:55:10",
            "updateTime":""
        }
    ],
    "errNum":0,
    "errMsg":"success"
}

查询模板详情

接口名

GetPresetDetail

调用方式

res = client.GetPresetDetail(presetname)

返回示例

{
    "presetdetail":{
        "presetType":"avop",
        "param":{
            "f":"flv",
            "VIDEO":{
                "vr":"13",
                "vb":"780000",
                "vcodec":"h264",
                "width":500,
                "height":600,
                "as":0,
                "rotate":"0",
                "vn":0
            },
            "AUDIO":{
                "ar":"44100",
                "ab":"64k",
                "acodec":"aac",
                "an":0
            }
        },
        "description":"desc:preset_avop2",
        "createTime":"2016-08-16 10:55:10",
        "updateTime":""
    },
    "errNum":0,
    "errMsg":"success"
}

删除模板

接口名

DelPreset

调用方式

res = client.DelPreset(presetname)

返回示例

{
    "errNum":0,
    "errMsg":"success"
}

创建任务

接口名

CreateTask

调用方式

res = client.CreateTask(task)
注:
1.task必须是json格式数据

调用示例

{
    "dstDir": "",
    "dstObjectKey": "m3u8/test/1.mp4",
    "dstBucket": "autotestoffline",
    "dstAcl": "public-read",
    "preset": "OfflineLSS",
    "srcInfo": [
        {
            "path": "/autotestoffline/11.mp4",
            "type": "video",
            "index": 0
        }
    ],
    "cbMethod": "POST",
    "cbUrl": "http://10.4.2.38:19090/"
}

返回示例

{
    "taskid":"40d309d3b2bf373cd3f08e5b5e1bddf720160816",
    "errNum":0,
    "errMsg":"success"
}

置顶任务

接口名

TopTaskByTaskID

调用方式

res = client.TopTaskByTaskID(taskid)

返回示例

{
    "errNum":0,
    "errMsg":"success"
}

删除任务

接口名

DelTaskByTaskID

调用方式

res = client.DelTaskByTaskID(taskid)

返回示例

{
    "errNum":0,
    "errMsg":"success"
}

查询任务列表

接口名

GetTaskList

调用方式

res = client.GetTaskList(startdate=20161101,enddate=20161118,marker=0,limit=50)

返回示例

{
// 本次返回记录条数
"count":3,
"startdate":"20161101",
"enddate":"20161118",
"errNum":0,
"marker":0,
// 该时间区间内总记录条数
"total":3,
"errMsg":"success",
// 任务列表
"taskInfo":[
    {
        "cbUrl":"",
        "srcInfo":[
            {
                "path":"/wangshuai9/ksyun.flv",
                "type":"video",
                "aaa":1478503154501,
                "index":0
            }
        ],
        "dstDir":"",
        "errorMsg":"",
        "cbMethod":"POST",
        "dstAcl":"public-read",
        "taskStatus":"succ",
        "errorCode":"0",
        "dstBucket":"wangshuai9",
        "preset":"preset_avop1",
        "isTop":"0",
        "taskid":"4c8db1abd488c49a4dafe51cabedd79a20161107",
        "extParam":"",
        "dstObjectKey":"ksyun_a.flv",
        "createTime":"2016-11-07 15:19:14"
    },
    {
        "cbUrl":"",
        "srcInfo":[
            {
                "path":"/wangshuai9/ksyun.flv",
                "type":"video",
                "aaa":1478504069547,
                "index":0
            }
        ],
        "dstDir":"",
        "errorMsg":"",
        "cbMethod":"POST",
        "dstAcl":"public-read",
        "taskStatus":"succ",
        "errorCode":"0",
        "dstBucket":"wangshuai9",
        "preset":"preset_avop1",
        "isTop":"0",
        "taskid":"e26d2d2e03b0998dc95a7bc0524cfbfa20161107",
        "extParam":"",
        "dstObjectKey":"ksyun_a.flv",
        "createTime":"2016-11-07 15:34:29"
    },
    {
        "cbUrl":"",
        "srcInfo":[
            {
                "path":"/wangshuai9/ksyun.flv",
                "type":"video",
                "aaa":1478510828531,
                "index":0
            }
        ],
        "dstDir":"",
        "errorMsg":"",
        "cbMethod":"POST",
        "dstAcl":"public-read",
        "taskStatus":"succ",
        "errorCode":"0",
        "dstBucket":"wangshuai9",
        "preset":"preset_avop1",
        "isTop":"0",
        "taskid":"7dac9d15755aa0d8711fe16b3f045efe20161107",
        "extParam":"",
        "dstObjectKey":"ksyun_a.flv",
        "createTime":"2016-11-07 17:27:08"
    }
]
}

查询任务详情

接口名

GetTaskByTaskID

调用方式

res = client.GetTaskByTaskID(taskid)

返回示例

{
    "taskInfo":{
        "taskid":"40d309d3b2bf373cd3f08e5b5e1bddf720160816",
        "preset":"preset_avop2",
        "srcInfo":[
            {
                "path":"/wangshuai9/ksyun.flv",
                "index":0,
                "type":"video"
            }
        ],
        "dstBucket":"wangshuai9",
        "dstDir":"",
        "dstObjectKey":"ksyun_2.flv",
        "taskStatus":"succ",
        //当前任务处理状态 初始化:init 正在处理:exec 成功:succ 失败:fail
        "isTop":"1",
        "createTime":"2016-08-16 11:13:29"
    },
    "errNum":0,
    "errMsg":"success"
}

查询任务META列表

接口名

GetTaskMetaInfo

调用方式

res = client.GetTaskMetaInfo(taskid=taskid,startdate=20161101,enddate=20161118,marker=0,limit=50)

返回示例

{
    "startdate":"20161101",
    "enddate":"20161118",
    "marker":0,
    // 本次返回记录条数
    "count":1,
    // 该时间区间内总记录条数
    "total":6,
    // 返回列表
    "metaInfo":[
        {
            "taskid":"c3697fdd9c4c1240c0e5f29b7a63cba820160929",
            "meta_info":"{"metadata":{},"streams":[{"codec_name":"h264","codec_long_name":"H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10","profile":"Baseline","codec_type":"video","codec_time_base":"1/360000","codec_tag_string":"[27][0][0][0]","codec_tag":"0x001b","r_frame_rate":"24/1","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":54540,"start_time":"0.606000","width":368,"height":640,"coded_width":368,"coded_height":640,"sample_aspect_ratio":"0:1","display_aspect_ratio":"0:1","pix_fmt":"yuv420p","level":31,"chroma_location":"left","refs":1,"is_avc":"false","nal_length_size":"0","bits_per_raw_sample":"8"},{"index":1,"codec_name":"aac","codec_long_name":"AAC (Advanced Audio Coding)","profile":"LC","codec_type":"audio","codec_time_base":"1/48000","codec_tag_string":"[15][0][0][0]","codec_tag":"0x000f","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_time":"0.000000","bit_rate":"95625","sample_fmt":"fltp","sample_rate":"48000","channels":1,"channel_layout":"mono"}],"format":{"nb_streams":2,"nb_programs":1,"format_name":"hls,applehttp","format_long_name":"Apple HTTP Live Streaming","duration":"1286.497998","size":"17711","bit_rate":"110","probe_score":100}}",
            "createTime":"2016-09-29 18:20:29"
        }
    ],
    "errNum":0,
    "errMsg":"success"
}