文档中心

SDK for php 使用指南

概述

此 SDK 适用于PHP 5.5 及以上版本。基于离线转码 API 构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式调用金山云的离线转码服务。

初始化

ak/sk配置

在金山云控制台获取到ak/sk后创建以下文件:

mkdir ~/.ksyun && vi ~/.ksyun/config

config文件内容

{
    "ak":"********************",
    "sk":"****************************************"
}

composer安装

mkdir test && cd test
composer require kscsdk/ksyun_sdk

调试demo

cp vendor/kscsdk/ksyun_sdk/examples/demo_Offline.php .
php demo_Offline.php GetPresetList

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;
$response = Offline::getInstance()->request('GetPresetList');
echo $response->getBody();

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

创建模板

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

// 拼凑模板数组
$preset_data = array(
        'preset' => 'preset_avop1',
        'presettype' => 'avop',
        'description' => 'desc:preset_avop1',
        'param' => array(
                'f' => 'flv',
                'VIDEO' => array(
                        // 视频帧率,常用帧率:24,25,30等
                        'vr' => '13',
                        // 视频码率,单位:比特每秒(bit/s),支持无单位及k,M等描述,最小不能低于1000,即1k,常用视频码率:128k,1.25M,5M等
                        'vb' => '780000',
                        // 视频编码器选择,目前只支持h264
                        'vcodec' => 'h264',
                        // 画面宽度
                        'width' => 500,
                        // 画面高度
                        'height' => 600,
                        // 是否按原比例缩放,配合参数height与width使用。指定为1时,为按原比例缩放,这时width与height只需设置其一,如都设置,默认以长边为基准;指定为 0 或者不指定时,会强制缩放到width与height所指定的尺寸
                        'as' => 0,
                        // 旋转角度(0~360),常用值为 90、180、270;默认为不旋转
                        'rotate' => '0', 
                        // 是否去除视频流,0为保留,1为去除;默认为0
                        'vn' => 0
                ),
                'AUDIO' => array(
                        // 音频采样频率,单位:赫兹(Hz);常用采样频率:8000,12050,22050,44100等
                        'ar' => '44100', 
                        // 音频码率,单位:比特每秒(bit/s);常用码率:64k,128k,192k,256k,320k等,不要设置大于1M
                        'ab' => '64k',
                        // 音频编码器,目前只支持aac
                        'acodec' => 'aac',
                        // 是否去除音频流,0为保留,1为去除;默认为0
                        'an' => 0
                )
        )
);

$response = Offline::getInstance()->request('Preset', ['json' => $preset_data]);

echo $response->getBody();

返回示例

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

更新模板

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

// 拼凑模板数组
$preset_data = array(
        'preset' => 'preset_avop1',
        'presettype' => 'avop',
        'description' => 'desc:update_preset_avop1',
        'param' => array(
                'f' => 'flv',
                'VIDEO' => array(
                        // 视频帧率,常用帧率:24,25,30等
                        'vr' => '13',
                        // 视频码率,单位:比特每秒(bit/s),支持无单位及k,M等描述,最小不能低于1000,即1k,常用视频码率:128k,1.25M,5M等
                        'vb' => '780000',
                        // 视频编码器选择,目前只支持h264
                        'vcodec' => 'h264',
                        // 画面宽度
                        'width' => 500,
                        // 画面高度
                        'height' => 600,
                        // 是否按原比例缩放,配合参数height与width使用。指定为1时,为按原比例缩放,这时width与height只需设置其一,如都设置,默认以长边为基准;指定为 0 或者不指定时,会强制缩放到width与height所指定的尺寸
                        'as' => 0,
                        // 旋转角度(0~360),常用值为 90、180、270;默认为不旋转
                        'rotate' => '0', 
                        // 是否去除视频流,0为保留,1为去除;默认为0
                        'vn' => 0
                ),
                'AUDIO' => array(
                        // 音频采样频率,单位:赫兹(Hz);常用采样频率:8000,12050,22050,44100等
                        'ar' => '44100', 
                        // 音频码率,单位:比特每秒(bit/s);常用码率:64k,128k,192k,256k,320k等,不要设置大于1M
                        'ab' => '64k',
                        // 音频编码器,目前只支持aac
                        'acodec' => 'aac',
                        // 是否去除音频流,0为保留,1为去除;默认为0
                        'an' => 0
                )
        )
);

$response = Offline::getInstance()->request('UpdatePreset', ['json' => $preset_data]);

echo $response->getBody();

返回示例

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

删除模板

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = Offline::getInstance()->request('DelPreset', ['query' => ['preset' => 'preset_avop1']]);

echo $response->getBody();

返回示例

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

查询模板列表

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = Offline::getInstance()->request('GetPresetList', ['query' => ['presettype' => 'avop', 'presets' => 'preset_avop1,preset_avop2']]);

echo $response->getBody();

返回示例

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

查询模板详情

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = Offline::getInstance()->request('GetPresetDetail', ['query' => ['preset' => 'preset_avop1']]);

echo $response->getBody();

返回示例

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

创建任务

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

// 拼凑参数数组
$task_data = array(
    'preset' => $preset,
    'srcInfo' => array(
        array(
            // 源文件在ks3的相对路径
            'path' => '/wangshuai9/ksyun.flv',
            // 执行顺序,默认为0
            'index' => 0,
            // 源文件类型
            'type' => 'video',
        )
    ),
    'dstBucket' => $dst_bucket,
    'dstDir' => '',
    'dstObjectKey' => $dst_object_key,
    'dstAcl' => 'public-read',
    'isTop' => 0,
    'cbUrl' => '',
    'cbMethod' => '',
    'extParam' => ''
);

$response = Offline::getInstance()->request('CreateTask', ['json' => $task_data]);

echo $response->getBody();

返回示例

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

置顶任务

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = Offline::getInstance()->request('TopTaskByTaskID', ['query' => ['taskid' => '40d309d3b2bf373cd3f08e5b5e1bddf720160816']]);

echo $response->getBody();

返回示例

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

删除任务

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = Offline::getInstance()->request('DelTaskByTaskID', ['query' => ['taskid' => '40d309d3b2bf373cd3f08e5b5e1bddf720160816']]);

echo $response->getBody();

返回示例

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

查询任务列表

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = $response = Offline::getInstance()->request('GetTaskList', ['query' => ['startdate' => '20160815', 'enddate' => '20160816', 'marker' => 0, 'limit' => 2]]);

echo $response->getBody();

返回示例

{
    "startdate":"20160815",
    "enddate":"20160816",
    "marker":0,
    // 本次返回记录条数
    "count":2,
    // 该时间区间内总记录条数
    "total":6,
    // 任务列表
    "taskInfo":[
        {
            "taskid":"65909f7144cfc2de10cf656989cca37520160815",
            "preset":"preset_avop1",
            "srcInfo":[
                {
                    "path":"/wangshuai9/ksyun.flv",
                    "index":0,
                    "type":"video"
                }
            ],
            "dstBucket":"wangshuai9",
            "dstDir":"",
            "dstObjectKey":"ksyun_1.flv",
            "dstAcl":"public-read",
            "isTop":"0",
            "cbUrl" => "",
            "cbMethod" => "",
            "extParam" => "",
            "taskStatus":"succ",
            "errorMsg":"",
            "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",
            "dstAcl":"public-read",
            "isTop":"1",
            "cbUrl" => "",
            "cbMethod" => "",
            "extParam" => "",
            "taskStatus":"succ",
            "errorMsg":"",
            "createTime":"2016-08-16 11:13:29"
        }
    ],
    "errNum":0,
    "errMsg":"success"
}

查询任务详情

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

$response = Offline::getInstance()->request('GetTaskByTaskID', ['query' => ['taskid' => '40d309d3b2bf373cd3f08e5b5e1bddf720160816']]);

echo $response->getBody();

返回示例

{
    "taskInfo":{
        "taskid":"40d309d3b2bf373cd3f08e5b5e1bddf720160816",
        "preset":"preset_avop2",
        "srcInfo":[
            {
                "path":"/wangshuai9/ksyun.flv",
                "index":0,
                "type":"video"
            }
        ],
        "dstBucket":"wangshuai9",
        "dstDir":"",
        "dstObjectKey":"ksyun_2.flv",
        "dstAcl":"public-read",
        "isTop":"1",
        "cbUrl" => "",
        "cbMethod" => "",
        "extParam" => "",
        "taskStatus":"succ",
        "errorMsg":"",
        "createTime":"2016-08-16 11:13:29"
    },
    "errNum":0,
    "errMsg":"success"
}

查询任务META列表

调用示例

<?php
require('vendor/autoload.php');
use Ksyun\Service\Offline;

// 通过任务ID查询
$response = Offline::getInstance()->request('GetTaskMetaInfo', ['query' => ['taskid' => 'c3697fdd9c4c1240c0e5f29b7a63cba820160929']]);

// 查询列表
$response = Offline::getInstance()->request('GetTaskMetaInfo', ['query' => ['startdate' => '20160929', 'enddate' => '20160930', 'marker' => 0, 'limit' => 1]]);


echo $response->getBody();

返回示例

{
    "startdate":"20160929",
    "enddate":"20160930",
    "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"
}