通过ASS字幕实现动态视频水印效果

ASS字幕简介

ASS字幕是大多数字幕制作者所公认的并且经常使用的两种字幕格式之一(另一种是SRT字幕),与SRT字幕的区别有:

  1. SRT字幕是简单的纯文本字幕,制作方法比较简单,一行字幕序号,一行时间代码和一行字幕数据就能完成了,但是SRT字幕无法使用如特效字体等其他高级功能。
  2. ASS字幕则属于高级字幕,采用SSA V4+脚本语言编写,制作方法比SRT字幕复杂,但是可以制作出华丽的特效字幕。

使用字幕制作软件,可以极大简化制作过程,提高制作效率,有多款成熟的软件可供选择。其中,Aegisub是一个免费,跨平台且开源的用于创建和修改字幕的工具。您可以使用Aegisub轻松地通过音频制作时间轴,并使用多种功能强大的工具,来修改字幕的样式,同时您还可以看到实时的视频预览。

通过ASS字幕实现动态的视频水印效果的原理

平时我们见到的视频水印都是静态的,固定在视频的某个位置。我们知道,在制作视频时可以把字幕压在视频流里面,这一过程是在视频编码中实现的。由于ASS字幕可以指定文字的位置、颜色、大小、透明度、动效(滚动、闪烁)等,我们在视频编码时可以利用ASS字幕的高级特性把特效文字编码在视频流中,并随着时间不断变化,从而实现动态水印效果。相比较静态水印,动态水印在品牌曝光,版权保护上可能更具优势。
以下为效果展示视频:

操作指引

  1. 登录点播后台,选择 设置-->视频设置-->视频水印,上传制作好的ASS字幕文件作为水印素材。
  2. 如果只想对上传到某一分类下的视频应用动态水印效果,选择 视频列表-->视频分类管理-->分类属性设置-->视频水印,上传制作好的ASS字幕文件作为水印素材。

注意事项

  1. 本功能是利用ASS字幕文件实现了水印的动态效果,ASS文件被当做水印素材的用途,而不是原本的字幕用途,所以请不要同字幕功能混淆。
  2. 水印设置成功后,只对新上传的视频生效。
  3. 由于在ASS字幕文件中,要显示的内容是跟随视频时间轴的,虽然每个视频的长度不一样,但我们的目的是把ASS字幕内容当做水印用途,所以对内容和时间的对应关系,要求并不需要很严格。建议上传的ASS字幕文件中,时间设长一些(长于大多数视频时长),这样就可以在视频播放过程中始终显示动态水印效果了。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道拉流地址接口

接口URL

https://api.polyv.net/live/v3/channel/detail/get-pull-url

接口说明

1、获取频道的拉流地址
2、接口支持https协议

返回结果支持格式

JSON

请求方式

GET,POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前13位毫秒级时间戳,3分钟内有效
channelId int 频道号
sign string 签名,为32位大写的MD5值

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
     "flv": "https://pull-huk.videocc.net/recordf/1c6dc3c666201909261628019107.m3u8?auth_key=1584335309-0-0-c0017cb24300497adb87aee6f617fdbd",
     "m3u8": "https://pull-huk.videocc.net/recordf/1c6dc3c666201909206162819107.flv?auth_key=1584335309-0-0-7e5e327553f6800c148a485b6a8fff58"
    }
}

响应失败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": "illegal operation.",
    "data": ""
}

字段说明

参数名 说明
code 请求状态响应码
status 请求状态
message 错误信息
data 返回的结果
data.flv flv的拉流地址,字符串
data.m3u8 m3u8的拉流地址,字符串

php请求示例

<?php

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


/接口需要的参数(非sign)赋值
$params = array(
    'appId'=>$appId,
    'channelId'=>$channelId,
    'timestamp'=>$timestamp
  );

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

//接口请求url
$url = "http://api.polyv.net/live/v3/channel/detail/get-pull-url?appId=".$appId."&timestamp=".$timestamp."&sign=".$sign."&channelId=".$channelId;
//输出接口请求结果
echo file_get_contents($url);

?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道抽奖的中奖记录

接口URL

http://api.polyv.net/live/v3/channel/lottery/list

接口说明

1.获取频道抽奖的中奖记录
2.接口支持https

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
sign true string 校验签名
appId true string 开发者账号下的appId
timestamp true string 13位当前时间的时间戳
channelId true int 频道号
startTime true long 查询的开始日期的13位时间戳
endTime true long 查询的结束日期的13位时间戳 |
page false int 查询的页数,默认为1
limit false int 查询的每页大小,默认为10

返回错误结果JSON示例

签名错误:
{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}
时间戳错误:
{
    "code": 400,
    "status": "error",
    "message": "invalid timestamp.",
    "data": ""
}

返回正确结果JSON示例

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
        "pageSize": 10,
        "pageNumber": 1,
        "totalItems": 1,
        "contents": [
            {
                "recordId": "69aacfc0b7",
                "channelId": 108888,
                "lotteryId": "feb34vwxyd",
                "sessionId": "f6pxc1w8yb",
                "viewerId": "plk",
                "viewerName": "测试测试",
                "winnerCode": "789",
                "prize": "测试奖品",
                "name": null,
                "telephone": null,
                "createdTime": 1563763798000,
                "lastModified": 1563765266000,
                "address": null,
                "ext": "{\"receiveInfo\":[{\"field\":\"尊姓大名\",\"value\":\"测试测试\"},{\"field\":\"年龄\",\"value\":\"111\"},{\"field\":\"挖掘机技术哪家强\",\"value\":\"blueshit\"}]}"
            }
        ],
        "offset": 0,
        "limit": 1,
        "nextPageNumber": 1,
        "startRow": 1,
        "lastPage": true,
        "prePageNumber": 1,
        "firstPage": true,
        "totalPages": 1,
        "endRow": 1
    }
}
}

字段说明

字段 类型及范围 说明
code int 接口请求状态码,200表示成功
status string 接口请求状态,"success"表示成功
message string 请求失败时返回的错误信息
data Paginator<WinnerRecordModel> 中间记录的分页结果

数据对象字段说明

Paginator<WinnerRecordModel>

说明:抽奖记录的分页结果

字段 类型及范围 说明
pageNumber int 当前的页数
totalItems int 总记录数
firstPage boolean 是否为第一页,值为:true/false
lastPage boolean 是否为最后一页,值为:true/false
nextPageNumber int 下一页编号
prePageNumber int 上一页编号
totalPages int 总页数
startRow int 当前页第一条记录在总记录中的位置
endRow int 当前页最后一个记录在总记录中的位置
limit int 当前页记录个数
contents List<WinnerRecordModel> 中间记录列表
WinnerRecordModel

说明:抽奖记录

字段 类型及范围 说明
recordId string 中奖记录ID
channelId int 频道号
sessionId string 抽奖时的直播场次ID
lotteryId string 抽奖ID
viewerId string 中奖用户ID
viewerName string 中奖用户昵称
winnerCode string 中奖码
prize string 奖品名称
createdTime long 中奖时间
ext string json 格式的字符串,表示中奖记录的额外拓展信息,对应模型类:WinnerRecordModelExt
WinnerRecordModelExt

说明:中奖记录的拓展信息

字段 类型及范围 说明
receiveInfo List<ReceiveInfoFieldModel> 领奖人需要填写的兑奖信息
ReceiveInfoFieldModel

说明:中奖记录填写的领奖信息

字段 类型及范围 说明
field string 填写的字段名
value string 填写的字段值

PHP请求示例

<?php

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

$channelId = "322120";
$params = array(
        'appId'=>$appId,
        'lotteryId'=>"ff9yv31sud",
        'channelId'=>$channelId,
        'timestamp'=>$timestamp
    );

//生成sign
$sign = getSign($params); //详细查看config.php文件
$params['sign'] = $sign;

$url="http://api.polyv.net/live/v3/channel/lottery/list?".http_build_query($params);

$ch = curl_init() or die ( curl_error() );
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 360);
$response = curl_exec ( $ch );
curl_close ( $ch );
echo $response;

?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取一次性的观看页地址

接口URL

https://api.polyv.net/live/v3/channel/watch/get-token-watch-url

接口说明

1、获取一次性的观看页观看地址URL
2、接口支持https协议

请求方式

GET POST

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
channelId int 频道ID
sign string 签名,为32位大写的MD5值
timestamp long 当前13位毫秒级时间戳,3分钟内有效

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": "https://live1.polyv.cn/watch/450698?token=8b01210642bd4c0589cf6c2a09506399"
}

响应失败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 请求状态响应码
status 请求状态
message 错误信息
data 一次性的观看地址url ,生成的url的有效期为一个小时,一旦使用过就失效了。

php请求示例

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

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => $channelId
);

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

$url = "https://api.polyv.net/live/v3/channel/watch/get-token-watch-url?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, 1);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

批量创建答题卡

接口URL

https://api.polyv.net/live/v3/channel/question/batch-save

接口说明

批量创建答题卡,创建一套直播频道答题卡模板与相对应的模板题目。

返回结果支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId string 频道号
name string 模板名称,不传不会生成答题卡模板数据
status string 模板状态unused:上传成功,used:使用中
questions[].identifyId string 记录题目ID,接口成功后会返回这个id对应系统的questionId
questions[].name string 题目名称
questions[].type string 题目类型R:单选,C:多选,S:评分
questions[].option1 string 选项1,option不能同时为空,有数据必须连续
questions[].option2 string 选项2,option不能同时为空,有数据必须连续
questions[].option3 string 选项3,option不能同时为空,有数据必须连续
questions[].option4 string 选项4,option不能同时为空,有数据必须连续
questions[].option5 string 选项5,option不能同时为空,有数据必须连续
questions[].answer string 当questions[].type 是评分时,非必填,单选,多选答案,比如多选ABC,单选A(单选不能有两个)
questions[].tips1 string 当questions[].type是评分,传入option1相应的值 ,也就是分值提示
questions[].tips2 string 当questions[].type是评分,传入option2相应的值 ,也就是分值提示
questions[].tips3 string 当questions[].type是评分,传入option3相应的值 ,也就是分值提示
questions[].tips4 string 当questions[].type是评分,传入option4相应的值 ,也就是分值提示
questions[].tips5 string 当questions[].type是评分,传入option5相应的值 ,也就是分值提示

注:这里的channelId,appId,timestamp,sign必须通过url传参,json数据通过请求体传参,如:
https://api.polyv.net/live/v3/channel/questionnaire/add-edit-questionnaire?channelId={{channelId}}&appId={{appId}}×tamp={{timestamp}}&sign={{sign}}

body入参示例

{
    "name":"nana",
    "questions": [
        {
            "identifyId": "123",
            "name":"第一题",
            "type":"R",
            "option1": "哈哈",
            "option2": "测试",
            "answer":"A"
        }
    ]
}

返回结果

// 成功结果
{
    "code": 200,
    "status": "success",
    "message": "success",
    "data": {
        "templateId": "xxxxxx",
        "questionKey": {
            "123": "xxxxx",
            "identifyId2": "questionId2"
        }
    }
}

失败返回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": "param is not digit: dsadasd",
  "data": ""
}

响应参数说明

字段 说明 类型
code 响应码 int32
status 响应状态:success/error/fail string
message 错误信息说明 string
data 响应数据 object
data.templateId 模板templateId string
data.questionKey 模板题目,参数中的identifyId对应系统中的提问主键questionId,是一个对象,key-value形式,如果不需要对应题目与系统题目questionId,可以忽略该参数 Object

响应错误说明

错误代码 message 说明
400 appId is required. 未输入appId
400 application not found. appId不正确
400 invalid timestamp. 时间戳错误
400 invalid signature. 签名错误
400 param is not digit: dsadasd 频道号格式错误
400 type illegal. type T. 题目类型错误
400 xxxx name is blank identifyId的题目标题为空
400 xxxx answer is blank identifyId的题目答案为空
400 xxxx options are all blank identifyId的所有选项为空
400 xxxx options are discontinuous identifyId选项不连续
400 xxxx answer's option is empty identifyId题目对应答案为空
400 xxxx illegal answer identifyId非法答案

PHP请求示例

<?php

$appId="xxxxxxxxxxx";
$timestamp=time()*1000;
$url = 'https://api.polyv.net/live/v3/channel/question/batch-save?';
$header = array('application/json');
$data = array(
    'appId' => $appId,
    'timestamp' => $timestamp,
    'channelId' => 206204
);
$data["sign"]=$hash;
$json = '{
    "name":"nana",
    "questions": [
        {
            "identifyId": "123",
            "name":"第一题",
            "type":"R",
            "option1": "哈哈",
            "option2": "测试",
            "answer":"A"
        }
    ]
}'
// 请求接口
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url.http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
$sResult = curl_exec($ch);
if($sError=curl_error($ch)){
    die($sError);
}
curl_close($ch);
//打印获得的数据
print_r($sResult);
?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道文档详情信息

接口URL

https://api.polyv.net/live/v3/channel/document/get

接口说明

1、接口用于频道的文档详情信息
2、接口支持https

返回结果支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型 说明
appId string 管理员的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道id
fileId string 文件ID
type string 文档新旧类型(新版:new, 旧版 :old),不传默认为new

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
    "autoId": xxxx,
    "fileId": "6fcf5fa1c48bf427515a0fe47d3b3a5d330282",
    "fileName": "xxxx.ppt",
    "fileUrl": "http://doc.polyv.net/xxxx.ppt",
    "fileType": '.ppt',
    "totalPage": 1,
    "channelId": "330282",
    "status": "normal",
    "createTime": null,
    "convertType": "common",
    "type": "old",
    "previewImage": "http://doc.polyv.net/xxxx_s.jpeg",
    "previewBigImage": "http://doc.polyv.net/xxxx.jpeg",
    "images": ["http://doc.polyv.net/xxxx.jpeg"],
    "smallImages": ["http://doc.polyv.net/xxxx_s.jpeg"]
}
}

响应失败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 响应代码,成功为200,失败为400,签名错误为403,异常错误500
status 成功为success,失败为error
message 错误时为错误提示消息
data.channelId 频道号
data.autoId ppt自增ID
data.fileId ppt文件ID
data.fileName 文件名
data.fileType 文件类型
data.fileUrl 文件地址
data.totalPage 总页数
data.status PPT状态(‘normal’:正常,“waitUpload”:等待上传,“failUpload”:上传失败,"waitConvert":转换PPT中,"failConvert":转换PPT失败 )
data.convertType 转换类型,(普通: "common", 动画: "animate")
data.type ppt新旧类型(新版ppt:"new", 旧版ppt:"old")
data.previewImage 预览小图
data.previewBigImage 预览大图
data.images 大图列表
data.smallImages 小图列表

请求示例

<?php

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

//接口URL上变量
$channelId = "123456";
$fileId = "xxxxxxxx";
//接口需要的参数(非sign)赋值
$params = array(
    'appId'=>$appId,
    'timestamp'=>$timestamp,
    'channelId'=>$channelId,
    'fileId'=>$fileId
  );

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

//接口请求url
$url = "http://api.polyv.net/live/v3/channel/document/get?appId=".$appId."&sign=".$sign."&timestamp=".$timestamp."&channelId=".$channelId."&fileId=".$fileId;
//输出接口请求结果
echo file_get_contents($url);

?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取频道答题卡列表

接口URL

https://api.polyv.net/live/v3/channel/question/list

接口说明

1、接口用于获取频道答题卡列表
2、接口支持https

返回结果支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 当前13位毫秒级时间戳,3分钟内有效
sign string 签名,为32位大写的MD5值
channelId string 频道号
startDate string 查询开始时间,格式yyyy-MM-dd(和endDate一起不传默认查最近七天数据)
endDate string 查询的结束时间,格式:yyyy-MM-dd(和startDate一起不传默认查七天数据)
page int 页号,默认为1
pageSize int 每页条数,默认为10

响应成功JSON示例:

// 成功
{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
    "pageNumber": 1,
    "totalItems": 7,
    "contents": [
      {
        "questionId": "",
        "name": "text",
        "type": "text",
        "channelId": 4,
        "userId": "text",
        "note": "text",
        "answer": "text",
        "lastModified": 9,
        "createdTime": 7,
        "option4": "text",
        "option5": "",
        "option2": "text",
        "option3": "text",
        "option1": "text",
        "times": 0
      }
    ],
    "startRow": 9,
    "firstPage": true,
    "nextPageNumber": 3,
    "prePageNumber": 2,
    "totalPages": 6,
    "lastPage": true,
    "endRow": 7,
    "limit": 10,
    "offset": 1
  }
}

响应失败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 响应的状态码,例如:200
status 响应状态
message 异常错误信息
data 响应结果集
data.pageNumber 页数
data.limit 每页记录数
data.totalItems 记录总数
data.firstPage 是否为第一页,值为:true/false
data.lastPage 是否为最后一页,值为:true/false
data.nextPageNumber 下一页编号
data.prePageNumber 上一页编号
data.totalPages 总页数
data.startRow 当前页第一条记录所在列表中的位置
data.endRow 当前页最后一条记录所在列表中的位置
data.contents[0].questionId 题目ID
data.contents[0].name 题目名称
data.contents[0].type 题目类型("R":单选,"C":多选,"S": 评分, "Q": 问答)
data.contents[0].channelId 频道ID
data.contents[0].userId 用户ID
data.contents[0].answer 答案(abcd...)
data.contents[0].note 答案解析
data.contents[0].times 第几场答题
data.contents[0].option1 选项1
data.contents[0].option2 选项2
data.contents[0].option3 选项3
data.contents[0].option4 选项4
data.contents[0].option5 选项5
data.contents[0].lastModified 更新时间
data.contents[0].createdTime 创建时间

php请求示例

<?php
//引用config.php
include 'config.php';
$params = array(
    'appId' => $appId,
    'timestamp' => $timestamp,
    'channelId' => 108888
);

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

$url = "https://api.polyv.net/live/v3/channel/question/list?".http_build_query($params);

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);

echo $res;
?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

聊天室抢答功能说明

聊天室抢答功能说明

主要说明聊天室抢答功能在观看端以及讲师端如何使用。

1、连接聊天室时,需要带上token和version参数。

点击获取token说明文档

聊天室连接说明:

io.connect('ws://chat.polyv.net', {
    'query': {
        version: '2.0', // version必须大于等于2.0
        token, // token通过接口获取,看上面的链接
    },
    'transports': ['websocket']
});

2、监听开始抢答事件

  • START_ANSWER_QUICKLY
参数说明
参数名称 参数说明 参数类型
EVENT 事件名称,值为START_ANSWER_QUICKLY string
limitTime 抢答时间 number
sessionId 该场直播的sessionId string
timestamp 发起抢答时的时间戳 number
quicklyId 抢答的id string
overTime 抢答剩余时间 number
示例
socket.on('message', function(jsonData, callback) {
    const data = JSON.parse(jsonData);
    if(data.EVENT === 'START_ANSWER_QUICKLY') {
        // 执行相关操作
    }
})

3、学员提交抢答信息

  • SUBMIT_ANSWER_QUICKLY
参数说明
参数名称 参数说明 参数类型 是否必填
EVENT 事件名称,写死SUBMIT_ANSWER_QUICKLY string
quicklyId 抢答id string
useTime 抢答使用的时间 number
organization 学员所属机构 string
示例
// 需要发送的参数,为json字符串
const sendData = JSON.stringify({
    EVENT: 'SUBMIT_ANSWER_QUICKLY',
    quicklyId: '436499f0-17d9-11ea-9ba9-6f8eb568fbcb',
    useTime: 2
});
socket.emit('message', sendData , function(d) {
    const { code, message } = JSON.parse(d); // code 为 请求结果状态
    if (code === 200) {
        console.log('抢答成功');
    } else {
        console.log(`抢答失败,失败原因:${message}`)
    }
});

4、获取抢答状态

开始抢答,各个端收到socket消息的时间可能不同,比如pc端比移动端先收到开始抢答的socket,这时时间就会产生偏差。所以需要不断从服务器获取抢答的剩余时间,保证时间准确性。
* 建议1秒获取一次。

  • GET_ANSWER_QUICKLY_STATUS
参数说明
参数名称 参数说明 参数类型
EVENT 事件名称,写死GET_ANSWER_QUICKLY_STATUS string
示例
    socket.emit(
        'message',
        JSON.stringify({EVENT:'GET_ANSWER_QUICKLY_STATUS'}),
        function(d) {
            const { code, data, message } = JSON.parse(d);
            if (code === 200) {
                const { overTime, answerNum } = data; // overTime为抢答剩余时间,answerNum为已抢答人数
            } else {
                console.log(`获取抢答状态失败,失败原因:${message}`)
            }
        }
    )

5、讲师端发送开始抢答事件

讲师在推流端点击抢答图标,弹出窗口,输入时间,点击开始抢答。

  • START_ANSWER_QUICKLY
参数说明
参数名称 参数说明 参数类型
EVENT 事件名称,写死START_ANSWER_QUICKLY string
limitTime 抢答的时间 number
sessionId 该场直播的sessionId(如果只是测试,可以传入随机字符串) string
示例
socket.emit('message', JSON.stringify({
    EVENT: 'START_ANSWER_QUICKLY',
    limitTime: 30,
    sessionId: 'test'
}), function(d) {
    const { code, message } = JSON.parse(d);
    if (code === 200) {
        console.log('发起抢答成功');
    } else {
        console.log(`发起抢答失败,失败原因:${message}`);
    }
});

6、结束抢答

讲师发起抢答后,页面有个停止抢答按钮,讲师可以主动提前停止抢答

  • STOP_ANSWER_QUICKLY
参数说明
参数名称 参数说明 参数类型
EVENT 事件名称,写死STOP_ANSWER_QUICKLY string
quicklyId 抢答id string
示例
socket.emit('message', JSON.stringify({
    EVENT: 'STOP_ANSWER_QUICKLY',
    quicklyId: 'test',
}), function(d) {
    const { code, message } = JSON.parse(d);
    if (code === 200) {
        console.log('抢答停止成功成功');
    } else {
        console.log(`抢答结束失败,失败原因:${message}`);
    }
});
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

获取用户自定义微信分享接口设置

接口URL

https://api.polyv.net/live/v3/user/get-weixin-share-api

接口说明

设置用户自定义的微信分享接口地址

返回结果支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型及范围 说明
sign true string 签名
appId true string 开发者账号下的appId
timestamp true string 13位当前时间的时间戳

返回错误结果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": ""
}

返回正确结果JSON示例

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": "http://www.polyv.net/weixinshare/url"
}

返回结果data表示成功修改的数量.

字段说明

字段 类型及范围 说明
code int32 返回码
status string 返回状态
message string 返回信息
data string 返回设置的微信分享调用接口地址

PHP请求示例

<?php

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

//接口需要的参数(非sign)赋值
$appId = "XXXXXXXX";
$timestamp = "123123123123";
$params = array(
        'appId'=>$appId,
        'timestamp'=>$timestamp
    );

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

$url = "https://api.polyv.net/live/v3/user/get-weixin-share-api?".http_build_query($params);

$ch = curl_init() or die ( curl_error() );
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 360);
$response = curl_exec ( $ch );
curl_close ( $ch );
echo $response;
?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

设置用户微信分享自定义URL接口

接口URL

https://api.polyv.net/live/v3/user/set-weixin-share-api

接口说明

设置用户自定义的微信分享接口地址

返回结果支持格式

JSON

请求方式

POST

请求参数

参数名 必选 类型及范围 说明
sign true string 签名
appId true string 开发者账号下的appId
timestamp true string 13位当前时间的时间戳
url true string 接口地址URL

返回错误结果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": ""
}

返回正确结果JSON示例

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": "success"
}

返回结果data表示成功修改的数量.

字段说明

字段 类型及范围 说明
code int32 返回码
status string 返回状态
message string 返回信息
data string 操作结果

PHP请求示例

<?php

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

//接口需要的参数(非sign)赋值
$appId = "XXXXXXXX";
$timestamp = "123123123123";
$url = "http://www.polyv.ne/xxx";
$params = array(
        'appId'=>$appId,
        'url'=>$url,
        'timestamp'=>$timestamp
    );

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

$url = "https://api.polyv.net/live/v3/user/set-weixin-share-api?".http_build_query($params);

$ch = curl_init() or die ( curl_error() );
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 360);
$response = curl_exec ( $ch );
curl_close ( $ch );
echo $response;
?>

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

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

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...