文档中心

SDK for Java 使用指南

安装Java SDK

1.通过git下载SDK到本地

注意:运行 SDK需要jdk Java 1.6+.

    git clone https://github.com/bh4614910/ksc-sdk-java

2.进入工程目录目录

在工程目录下执行:
            mvn clean install

3.工程使用sdk录

建议使用Maven构建自己的项目,导入ksc-sdk-java,添加ksc-sdk-java-offline的依赖。

新建maven项目
进入到pom文件下,进行如下配置
<dependencies>
    <dependency>
        <groupId>com.ksc</groupId>
        <artifactId>ksc-sdk-java-offline</artifactId>
        <version>1.0.3</version>
    </dependency>
</dependencies>

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

本地文件配置:
 ~/.aws/credentials on Linux, OS X or unix
 C:\Users\USERNAME\.aws\credentials on Windows
该文件包含下述内容:
[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
如不通过本地文件读入ak和sk信息,则需要在执行的类文件中增加以下代码:
AWSCredentials credentials = new BasicAWSCredentials(aws_access_key_id, aws_secret_access_key);

SDK介绍和使用

在调用接口前,先初始化 KSCOFFJsonClient,如下用例:
KSCOFFJsonClient ksc = new KSCOFFJsonClient();
//可传入AWSCredentials参数 如:KSCOFFJsonClient ksc = new KSCOFFJsonClient(credentials);
ksc.setEndpoint("http://offline.cn-beijing-6.api.ksyun.com/");
字符集:utf-8

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

创建模板

接口名

Preset

调用方式

PresetRequest presetRequest = new PresetRequest();
String data = PresetSet("presetname");
presetRequest.setData(data);
OfflineErrResult presetResult = ksc.Preset(presetRequest);
注:
1.PresetSet返回值必须是json格式数据转为的字符串
2.presetname参数为新建模板名
3.Preset返回结构存放在OfflineErrResult类中

调用示例

private  static String PresetSet(String preset) throws JSONException{
    String presettype = "avop";
    JSONObject data = new JSONObject();
    JSONObject param = new JSONObject();
    JSONObject video = new JSONObject();
    JSONObject audio = new JSONObject();
    data.put("preset",xxx);    
    data.put("presettype",xxxx);  
    data.put("description","desc:"+xxxxx);   

    video.put("vr", "xx");
    video.put("vb", "xxxxxxx");
    video.put("vcodec", "xxxx");
    video.put("width", xxx);
    video.put("height", xxxx);
    video.put("as", xxxx);
    video.put("rotate", "xxx");
    video.put("vn", xxxxx);

    audio.put("ar", "xxxxxx");
    audio.put("ab", "xxx");
    audio.put("acodec", "xxxx");
    audio.put("an", x);

    param.put("f", "xxxx");
    param.put("VIDEO", video);
    param.put("AUDIO", audio);
    data.put("param",param);

    return data.toString();
}

返回示例

{
    "errNum":0,
    //正确:0 错误:非零值
    "errMsg":"success"
}

更新模板

接口名

UpdatePreset

调用方式

UpdatePersetRequest presetRequest1 = new UpdatePersetRequest();
String data1 = PresetSet("presetname");
presetRequest1.setData(data1);
OfflineErrResult presetResult1 = ksc.UpdatePreset(presetRequest1);
注:
1.PresetSet返回值必须是json格式数据转为的字符串
2.presetname参数为新建模板名
3.UpdatePreset返回结构存放在OfflineErrResult类中

调用示例

private  static String PresetSet(String preset) throws JSONException{
    String presettype = "avop";
    JSONObject data = new JSONObject();
    JSONObject param = new JSONObject();
    JSONObject video = new JSONObject();
    JSONObject audio = new JSONObject();
    data.put("preset",xxx);    
    data.put("presettype",xxxx);  
    data.put("description","desc:"+xxxxx);   

    video.put("vr", "xx");
    video.put("vb", "xxxxxxx");
    video.put("vcodec", "xxxx");
    video.put("width", xxx);
    video.put("height", xxxx);
    video.put("as", xxxx);
    video.put("rotate", "xxx");
    video.put("vn", xxxxx);

    audio.put("ar", "xxxxxx");
    audio.put("ab", "xxx");
    audio.put("acodec", "xxxx");
    audio.put("an", x);

    param.put("f", "xxxx");
    param.put("VIDEO", video);
    param.put("AUDIO", audio);
    data.put("param",param);

    return data.toString();
}

返回示例

{
    "errNum":0,
    //正确:0 错误:非零值
    "errMsg":"success"
}    

删除模板

接口名

DelPreset

调用方式

DeletePresetRequest deletePresetRequest = new DeletePresetRequest();
deletePresetRequest.setPreset("presetname");
OfflineErrResult deletePresetResult = ksc.DelPreset(deletePresetRequest);
注:
1.presetname参数为查询目标模板的名字
2.DelPreset返回结构存放在OfflineErrResult类中    

返回示例

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

查询模板列表

接口名

GetPresetList

调用方式

GetListRequest gitlistrequest = new GetListRequest();
gitlistrequest.setWithDetail(1);//获取模板详情
gitlistrequest.setPresettype("avop");//根据模板烈性查询
gitlistrequest.setPreset("test,test1");//根据模板名查询
OfflineResult getpresetlistResult = ksc.GetPresetList(gitlistrequest);
注:
1.withDetail、presettype、presets为非必传参数,可根据需求使用
2.GetPresetList返回结构存放在OfflineResult类中

返回示例

{
    "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

调用方式

GetPresetDetailRequest getPresetDetailRequest = new GetPresetDetailRequest();
getPresetDetailRequest.setPreset("presetname");
GetPresetDetailResult getPresetDetailResult = ksc.GetPresetDetail(getPresetDetailRequest);
注:
1.presetname参数为查询目标模板的名字
2.GetPresetDetail返回结构存放在GetPresetDetailResult类中 

返回示例

{
    "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"
}

创建任务

接口名

CreateTask

调用方式

CreateTaskRequest createTaskRequest = new CreateTaskRequest();
String data2 = setTask("presetname","dstBucket","dstObjectKey.flv","src_dstObjectKey.flv");
createTaskRequest.setData(data2);
CreateTasklResult createTasklResult = ksc.CreateTask(createTaskRequest);
注:
1.setTask返回类型必须是json格式数据转为的字符串
2.presetname参数为任务模板名称
3.dstBucket为输出模板bucket
4.src_dstObjectKey.flv被转码文件名
5.dstObjectKey.flv为目标文件名
6.ksc.CreateTask返回结构存放在CreateTasklResult类中

调用示例

private static String setTask(String preset,String dst_bucket,String dst_object_key,String src_object_key) throws JSONException{
        JSONObject data = new JSONObject();        
        data.put("preset", preset);            
        data.put("srcInfo", TaskSrcInfo(dst_bucket,src_object_key));   
        data.put("dstBucket", dst_bucket);
        data.put("dstObjectKey",dst_object_key);
        data.put("dstDir", "");
        data.put("isTop", 0);            
        return data.toString();
    }


    private static JSONArray TaskSrcInfo(String dst_bucket,String dst_object_key) throws JSONException{
        JSONArray srcInfo = new JSONArray();
        JSONObject insrcInfo = new JSONObject();
        insrcInfo.put("path","/"+dst_bucket+"/"+dst_object_key);
        insrcInfo.put("index", 0);
        insrcInfo.put("type", "video");            
        srcInfo.put(insrcInfo);            
        return srcInfo;
    }

返回示例

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

置顶任务

接口名

TopTaskByTaskID

调用方式

TopTaskByTaskIDRequest topTaskByReqIDRequest = new TopTaskByTaskIDRequest();
topTaskByReqIDRequest.setTaskid("359832c8b368ab27c1f4a5b5396e1af120160923");
OfflineErrResult TopTaskByTaskIDResult = ksc.TopTaskByTaskID(topTaskByReqIDRequest);
注:
1.setTaskid用来设置想要查询的任务taskid
2.TopTaskByTaskID返回结构存放在OfflineErrResult类中

返回示例

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

删除任务

接口名

DelTaskByTaskID

调用方式

TaskRequest tashRequest = new TaskRequest();
tashRequest.setTaskid("359832c8b368ab27c1f4a5b5396e1af120160923");
OfflineErrResult DelTaskByReqIDResult = ksc.DelTaskByTaskID(tashRequest);
注:
1.setTaskid用来设置想要查询的任务taskid
2.DelTaskByTaskID返回结构存放在OfflineErrResult类中

返回示例

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

查询任务列表

接口名

GetTaskList

调用方式

GetTaskListRequest getTaskListRequest = new GetTaskListRequest();
getTaskListRequest.setStartdate(20161101);//查询起始时间
getTaskListRequest.setEnddate(20161101);//查询结束时间
getTaskListRequest.setLimit(100);//单次请求的记录数,最大值为100
getTaskListRequest.setMarker(0);//请求起始游标    
GetTaskListResult getTaskListResult = ksc.GetTaskList(getTaskListRequest);
GetTaskList返回结构存放在GetTaskListResult类中

返回示例

{
    "taskInfo":[
        {
            "taskid":"65909f7144cfc2de10cf656989cca37520160815",
            "preset":"preset_avop1",
            "srcInfo":[
                {
                    "path":"/wangshuai9/ksyun.flv",
                    "index":0,
                    "type":"video"
                }
            ],
            "dstBucket":"wangshuai9",
            "dstDir":"",
            "dstObjectKey":"ksyun_1.flv",
            "taskStatus":"succ",
            "isTop":"0",
            "createTime":"2016-08-15 16:24:12"
        },
        {
            "taskid":"40d309d3b2bf373cd3f08e5b5e1bddf720160816",
            "preset":"preset_avop2",
            "srcInfo":[
                {
                    "path":"/wangshuai9/ksyun.flv",
                    "index":0,
                    "type":"video"
                }
            ],
            "dstBucket":"wangshuai9",
            "dstDir":"",
            "dstObjectKey":"ksyun_2.flv",
            "taskStatus":"succ",
            "isTop":"1",
            "createTime":"2016-08-16 11:13:29"
        }
    ],
    "errNum":0,
    "errMsg":"success"
}    

查询任务详情

接口名

GetTaskByTaskID

调用方式

GetTaskByTaskIDRequest getTaskByReqIDRequest = new GetTaskByTaskIDRequest();
getTaskByReqIDRequest.setTaskid("359832c8b368ab27c1f4a5b5396e1af120160923");
GetTaskByTaskIDResult getTaskByReqIDResult = ksc.GetTaskByTaskID(getTaskByReqIDRequest);
注:
1.setTaskid用来设置想要查询的任务taskid
2.GetTaskByTaskID返回结构存放在getTaskByReqIDResult类中

返回示例

{
    "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

调用方式

GetTaskMetaRequest getTaskMetaInfoRequest = new GetTaskMetaRequest();
getTaskMetaInfoRequest.setTaskid("c3697fdd9c4c1240c0e5f29b7a63cba820160929");
getTaskMetaInfoRequest.setStartdate(20161101);//查询起始时间
getTaskMetaInfoRequest.setEnddate(20161101);//查询结束时间
getTaskMetaInfoRequest.setLimit(100);//单次请求的记录数,最大值为100
getTaskMetaInfoRequest.setMarker(0);//请求起始游标    
GetTaskMetaResult GetTaskMetaResult = ksc.GetTaskMetaInfo(getTaskMetaInfoRequest);
注:
1.setTaskid用来设置想要查询目标META信息taskid
2.GetTaskMetaInfo返回结构存放在GetTaskMetaResult类中

返回示例

{
 "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"
}