# 视频分片上传

视频上传接口适用于批量上传视频、发布到文档、课堂中。 乐享提供的SDK可以直接上传视频,本节文档主要介绍如何把本地视频上传乐享站内的过程。

# 1.获取视频上传签名

# 接口调用说明

POST https://lxapi.lexiangla.com/cgi-bin/v1/videos/upload-signature
headers.Authorization:  Bearer {access_token}
headers.StaffID: {StaffID}

# 请求参数

# 响应document

{
    "signature": "your_signature"
}

# 2. 发起申请视频上传请求

# 接口调用说明

POST https://vod2.qcloud.com/v3/index.php?Action=ApplyUploadUGC

# 请求document

{
    "signature":"your_signature",
    "videoName":"开放接口上传的视频",
    "videoType":"mp4",
    "videoSize":10486
}

# 参数说明:

参数 是否必须 默认值 说明
signature 步骤1中获取到的签名
videoName 视频名称
videoType 视频的文件类型
videoSize 视频的文件大小

# 响应document

{
    "code":0,
    "message":"成功",
    "data":{
        "video":{
            "storageSignature":"{YOUR_STORAGESIGNATURE}",
            "storagePath":"/xxxxx/yyyyyy/OxFAkpyaiFIA.mp4"
        },
        "storageAppId":123,
        "storageBucket":"xxxxx",
        "storageRegion":"gzp",
        "storageRegionV5":"ap-guangzhou-2",
        "domain":"vod2.qcloud.com",
        "vodSessionKey":"{YOUR_VODSESSIONKEY}",
        "tempCertificate":{
            "secretId":"{tempCertificate_YOUR_SECRETID}",
            "secretKey":"{tempCertificate_YOUR_SECRETKEY}",
            "token":"{tempCertificate_YOUR_TOKEN}",
            "expiredTime":1572408974
        },
        "appId":123,
        "timestamp":1572401774,
        "StorageRegionV5":"ap-guangzhou-2"
    }
}

# 3.上传视频文件

上传视频建议使用以下sdk,方便快速接入。

平台方提供以下语言对应的sdk

# 接口调用说明

php为例

use Qcloud\Cos\Client as CosClient;
//...
$tempCertificate['appId'] = $storageAppId;
$cosClient = new CosClient(array(
    'credentials' => $tempCertificate,
    'region' => $storageRegionV5,
));
return $cosClient->Upload($storageBucket, $video.storagePath, fopen($localVideoPath, 'rb'), ['PartSize' => 1048576]);

nodejs为例

// @see https://cloud.tencent.com/document/product/436/36119
// 引入模块
var COS = require('cos-nodejs-sdk-v5');

var cos = new COS({
    // 必选参数
    SecretId: {$tempCertificate.secretId},
    SecretKey: {$tempCertificate.secretKey},
    XCosSecurityToken: {$tempCertificate.token}
});

// 分片上传
cos.sliceUploadFile({
    Bucket: {$storageBucket}-{$storageAppId},
    Region: {$storageRegionV5},
    Key: {$video.storagePath},
    FilePath: {$localVideoPath}
}, function (err, data) {
    console.log(err, data);
});

# 参数说明

参数 是否必须 默认值 说明
$storageAppId 步骤2中响应体中的data.storageAppId
$tempCertificate 步骤2中响应体中的data.tempCertificate
$storageRegionV5 步骤2中响应体中的data.storageRegionV5
$storageBucket 步骤2中响应体中的data.storageBucket
$video.storagePath 步骤2中响应体中的data.video.storagePath
$localVideoPath 本地视频地址
PartSize 分片上传的最小分片大小,sdk中默认是1MB(1048576)

# 4. 确认上传

# 接口调用说明

POST https://vod2.qcloud.com/v3/index.php?Action=CommitUploadUGC

# 请求document

{
    "signature":"your_signature",
    "vodSessionKey":"开放接口上传的视频"
}

# 参数说明:

参数 是否必须 默认值 说明
signature 步骤1中获取到的签名
vodSessionKey 步骤2中获取到的data.vodSessionKey

# 响应document

{
    "code":0,
    "message":"成功",
    "data":{
        "video":{
            "url":"http://xxxx.vod2.myqcloud.com/xxxxx/yyyyyy/OxFAkpyaiFIA.mp4",
            "verify_content":"Qd18Jyr+nM8D442gka0GmNV02O9FeHBUaW1lPTE1NzI0MDUzNzQmRmlsZUlkPTUyODU4OTA3OTUzNzM5MzE1ODY="
        },
        "fileId":"5285890795373931586"
    }
}