异步裁剪直播录制文件

接口URL

https://api.polyv.net/live/v3/channel/record/clip

接口说明

1、接口用于裁剪直播录制视频文件
2、该接口为文件裁剪过程为异步处理过程
3、接口支持https
4、该接口裁剪视频的最小粒度仅支持到单位为秒(s)的裁剪

请求方式

POST

请求参数

参数名 必选 类型 说明
appId string 管理员的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId string 频道ID
fileId string 文件ID
deleteTimeFrame string 要裁剪移除的时间区间
误差说明:
(1)裁剪区间存在一定的时间误差;
(2)误差原因:由于m3u8的视频裁剪是精确到每片ts, 所以裁剪时会判断裁剪要移除的时间区间所包含的ts片,进行裁剪移除;
格式要求:
(1)start、end值是单位为秒的数值,格式为:[{"start":xx, "end":xx},{"start":xx, "end":xx}];
(2)多个区间请按照时间顺序从小到大排列;
(3)时间区间不允许重叠;
(4)时间区间不得超过100个限制;
【示例:要裁剪移除的是第1s到第14s, 以及第25s到第30s的区间,则传入的字符串为 [{"start":1, "end":14},{"start":25, "end":30}] 】
callbackUrl string 裁剪成功或失败回调的url(回调详细请查看文档最后 " 回调说明 " 一栏)
autoConvert string 是否自动转存回放(Y:是,N:否)不传默认为N
fileName string 裁剪后文件名

响应成功JSON示例:

// 提交的视频正在裁剪处理中
{
    "code": 200,
    "status": "success",
    "message": "",
    "data": "submit success."
}

响应失败JSON示例:

// 未输入appId
{
    "code": 400,
    "status": "error",
    "message": "appId is required.",
    "data": ""
}
// appId不正确
{
    "code": 400,
    "status": "error",
    "message": "application not found.",
    "data": ""
}
// 时间戳错误
{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}
// 签名错误
{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}
// 要裁剪的录制文件不存在
{
    "code": 400,
    "status": "error",
    "message": "record file not exist",
    "data": ""
}
// 要裁剪的文件无m3u8地址
{
    "code": 400,
    "status": "error",
    "message": "record file m3u8 not exist",
    "data": ""
}
// 要裁剪的文件无m3u8地址
{
    "code": 400,
    "status": "error",
    "message": "record file m3u8 not exist",
    "data": ""
}
// 要裁剪的文件无mp4地址
{
    "code": 400,
    "status": "error",
    "message": "record file mp4 not exist",
    "data": ""
}
// 要裁剪的时间区间存在问题
{
    "code": 400,
    "status": "error",
    "message": "record file clip timeFrame error",
    "data": ""
}
// 要裁剪的时间区间超过100个限制
{
    "code": 400,
    "status": "error",
    "message": "clip time frame over 100 limit",
    "data": ""
}

字段说明

参数名 说明
code 响应代码,成功为200,失败为400,签名错误为403,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data 成功提交信息

php请求示例

<?php
//引用config.php
include 'config.php';

$params = array(
  'appId' => "填写获取到的appId",
  'timestamp' => "填写13位时间戳",
  'channelId' => "填写频道号",
  'fileId' => "填写录制文件ID",
  'deleteTimeFrame' => "[{\"start\":0, \"end\":14},{\"start\":25, \"end\":34}]",
  'fileName' => "裁剪测试",
  'callbackUrl'=> "http://demo.polyv.net/wfy/test.php"
);

//生成sign
$sign = getSign($params); //详细查看config.php文件的getSign方法


$url="https://api.polyv.net/live/v3/channel/record/clip";

function post($url, $post_data = '', $timeout = 5){
   $ch = curl_init();
   curl_setopt ($ch, CURLOPT_URL, $url);
   curl_setopt ($ch, CURLOPT_POST, 1);
   if($post_data != ''){
      curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
   }

   curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
   curl_setopt($ch, CURLOPT_HEADER, false);
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

$params["sign"] = $sign;
echo post($url, $params);
?>

签名规则(config.php文件代码查看)

http://dev.polyv.net/2018/liveproduct/l-api/rule/sign/

回调说明

该接口为异步处理,如果需要获取合并的结果,可以在请求接口时提交callbackUrl 参数,在程序合并成功后,会对callbackUrl 进行回调通知

回调参数

参数 说明
status 接口处理结果,取值:success(成功),error(出错)
channelId 频道号,成功时返回
fileId 裁剪后的文件ID,成功时返回
clippedFileId 裁剪前的文件ID,成功时返回
fileUrl 合并后的MP4的地址,成功时返回
timestamp 回调的当前时间戳
sign 接口安全校验串,加密规则:用户的AppSecret(应用密匙)+timestamp 得到的字符串进行md5加密
actualTimeFrame 真实裁剪后保留的时间区间(经过urlencode的字符串,decode后的字符串格式为:[{"start":xx, "end":xx},{"start":xx, "end":xx}])
fileName 文件名(经过urlencode的字符串)
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...