重制课件(视频)

视频说明

重制课件

重制课件,是保利威针对三分屏场景的回放内容,提供的一种特殊转码服务,可将PPT文档数据和视频内容合并在一个mp4文件中,方便用户对回放视频进行编辑和归档。

在后台,点击重制课件,在重制之前,先进行参数设置。
可以选择两种转码布局:
第一种:三分屏布局。这种布局方式,可以将PPT,老师讲课的摄像头画面,引流的广告图等整合在一起;
上传视频背景图,背景图的尺寸建议为1280x720;在这张背景图里,右下角A区域,可以设计机构的微信公众号或招生引流广告,将设计好的背景图,上传即可。
第二种:纯文档布局,使用纯文档布局,则转码出来的视频内容只有PPT和音频。
选择好布局方式之后,点击保存即可。

使用重制课件功能,需回放列表中有回放记录。点击新建重制任务,选择需要重制的视频,点击开启就可以了。
也可以在后台通用设置中,打开自动重制开关,这样,每次有视频添加进回放列表时,都会自动开启重制。重制的布局模板也可在通用设置中选择,保存后,账号内的直播频道都会默认使用通用设置中的布局参数。

重制课件完成后,默认在系统中保存30天,在此期间,用户可将视频上传至点播,或下载到本地。
好啦,重制课件就体验到这里, 如果您在使用过程中有任何疑问,欢迎联系保利威服务团队。

 

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

获取授权和连麦的token

接口URL

http://api.polyv.net/live/v3/channel/common/get-token

接口说明

1、接口用于获取授权和连麦的token
2、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道Id

响应成功JSON示例:

{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
"mediaChannelKey": "e2355436235ba12d4c56493b575afed38f9f061d044f54d93c30f01463ffea852a7119c6195c6abf51b4682bc596bf5962eddc6cbf82784a1e5309ac52220ef7e66e4e7eb69a4e80081056972d5a9cb3bb723a0cb090702eef99369d479482b3bad99e5ec50eae5607b82c58da59aac3eada29fe6d753ef358d064ee308e406b3091f5256a77251001f99b6815651f18982da983b58c79d9caedd5ccec3f20ecd3dde7ba370f3c0ca0aa8c3ef088148523019f06e224d030b871da390c4a1a1c646e26684895d544dbba47751c535d07ea765fcf0cdfe8fe3de1538e4fe69eecadfd4a8b431aa4b00bc5dbccdb996ea3b7f962da2ecc21b6b14ba70c33601c53c3aa8d8e4857c111fa076e47e3a6eafc9601b87c079361f2d0f3cb4b31df2ff088ccb9428abe324ecb9e07e2fb8f48e40ab2ef3e119cfd93b15259bfa390938485a8fcd2e200dadeefe15a0516b7f61736cbe5bf48564d100e28ff64f979ebf42eadd3a0f3d58565d1ab619884d78c29",
"token": "71b961e6b2a68cde9559966b2f46d4e0"
}
}

响应字段说明

参数名 说明
code 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status 成功为success,错误时为error
message 成功为"",错误时为错误描述信息
data.token 链接接口需要的token值
data.mediaChannelKey 连麦需要的key

响应失败JSON示例:

参数错误

{
    "code": 400,
    "status": "error",
    "message": "param validate error",
    "data": 400
}

未输入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": ""
}

php请求示例

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

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

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

$url = "http://api.polyv.net/live/v3/channel/common/get-token?".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

http://api.polyv.net/live/v3/channel/playback/set-setting

接口说明

1、接口用于设置回放设置
2、接口支持https

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId string 频道号
playbackEnabled string 回放开关,Y-开启,N-关闭
type string 回放方式,single-单个回放,list-列表回放
origin string 回放来源,record-暂存,playback-回放列表,vod-点播列表
videoId string 单个回放的视频id

响应成功JSON示例:

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

响应字段说明

参数名 说明
code 状态码,成功为200,签名失败为403,参数错误为400,服务端错误为500
status 成功为success,错误时为error
message 成功为"",错误时为错误描述信息
data 成功时为true,错误时为""

响应失败JSON示例:

参数错误

{
    "code": 400,
    "status": "error",
    "message": "param validate error",
    "data": 400
}

未输入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": "scene operation limited",
    "data": ""
}

三分屏操作点播列表

{
    "code": 400,
    "status": "error",
    "message": "scene operation limited",
    "data": ""
}

暂存不支持列表

{
    "code": 400,
    "status": "error",
    "message": "unsupported record list",
    "data": ""
}

php请求示例

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

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' =>  195770,
  'playbackEnabled' => 'Y',
  'type' => 'list',
  'origin' => 'playback'
);

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

$url = "http://api.polyv.net/live/v3/channel/playback/set-setting?".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...

获取频道文档列表接口

接口URL00

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

接口说明

1、接口用于频道文档列表接口
2、接口支持https

支持格式

JSON

请求方式

GET

请求参数

参数名 必选 类型 说明
appId string 管理员的appId
timestamp long 13位当前时间戳
sign string 签名值
channelId int 频道号
status String 文档状态,不传查询所有(“normal” :正常,“delete”:删除,“waitUpload”:等待上传,“failUpload”:上传失败,"waitConvert":转换PPT中,"failConvert":转换PPT失败)
page int 第几页,默认不传显示第一页
limit int 每页显示几条数据,默认不传显示10条
isShowUrl string 是否展示PPT原文件地址,该参数不传默认不展示,’Y‘:是,’N‘:否

响应成功JSON示例:

// 响应成功
{
    "code": 200,
    "status": "success",
    "message": "",
    "data": {
    "pageSize": 10,
    "pageNumber": 1,
    "totalItems": 1,
    "contents": [{
        "autoId": 111111,
        "fileId": "xxxxxxxxx",
        "fileName": "关于xxxx的通知.pdf",
        "fileUrl": "http://doc-2.polyv.net/sources/20190614/xxxxxxxxxxxxxxxxxxxx.pdf",
        "fileType": ".pdf",
        "totalPage": 1,
        "channelId": "254318",
        "status": "normal",
        "createTime": 1560476703000,
        "convertType": "common",
        "type": "new",
        "previewImage": "http://doc-2.polyv.net/images/2019/06/xxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx_0000_s.jpeg"
    }],
    "startRow": 1,
    "firstPage": true,
    "lastPage": true,
    "nextPageNumber": 1,
    "prePageNumber": 1,
    "totalPages": 1,
    "endRow": 5,
    "limit": 5,
    "offset": 0
}
}

响应失败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 分页的文档列表
data.pageNumber 当前页码
data.totalPages 页面总数
data.pageSize 每页数据量
data.contents 当前页面内容
data.contents[0].autoId 文档ID
data.contents[0].fileId 文件ID
data.contents[0].fileName 文件名
data.contents[0].fileUrl 文件url
data.contents[0].fileType 文件类型
data.contents[0].totalPage PPT总页数
data.contents[0].channelId 频道ID
data.contents[0].status ppt转换状态(“normal” :正常,“delete”:删除,“waitUpload”:等待上传,“failUpload”:上传失败,"waitConvert":转换PPT中,"failConvert":转换PPT失败)
data.contents[0].createTime 创建时间
data.contents[0].convertType 转换类型("common":"普通PPT","animate": "动画PPT")
data.contents[0].type 类型,区分旧版PPT还是新版PPT,新版值为“new”,旧版值为“old”
data.contents[0].previewImage ppt预览小图地址

请求示例

<?php

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

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

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

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

?>

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

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

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

积分打赏接口开发指引

功能介绍

POLYV支持与用户的积分系统对接,实现积分打赏。参照本文档提供的积分查询接口和积分更新接口,配置在POLYV后台的通用设置,使用系统生成的观看链接,配合外部授权、自定义授权或者白名单观看条件使用,观众在看直播时也可消耗积分并打赏给主播。

获取观众积分接口

说明

通过传递观众的id 和频道号等参数,对用户的积分查询接口URL 进行请求,获取学员在平台的积分

请求方式

GET

请求参数

参数 说明
channelId 频道号
viewerId 观众ID
ts 当前13位毫秒级时间戳
appId 账号在polyv后台的应用ID
sign 用于校验的sign,生成方法参考文档底部

接口返回要求

请求成功:
{
    "code":200,
    "status":"success",
    "message":"",
    "data":100.00
}
请求失败:
{
    "code":400,
    "status":"error",
    "message":"相关错误信息",
    "data":null
}
参数说明
参数 类型 说明
code int 接口请求状态码,200表示成功,非200表示失败
status string 接口请求状态,success 表示成功
message string 接口错误提示,注意:请求出错时,页面显示的提示为polyv积分打赏所设置的提示
data float 请求成功时为观众的积分

观众打赏道具接口(修改观众积分)

说明

观众观看页选择了相应道具进行打赏时,请求积分更新接口URL修改在平台的积分

请求方式

POST

请求参数

参数 说明
channelId 频道号
viewerId 观众ID
ts 当前13位毫秒级时间戳
appId 账号在polyv后台的应用ID
goodName 打赏的道具名称
goodPrice 账号在polyv后台的应用ID
sign 用于校验的sign,生成方法参考文档底部

接口返回要求

请求成功:
{
    "code":200,
    "status":"success",
    "message":"",
    "data":100.00
}
请求失败:
{
    "code":400,
    "status":"error",
    "message":"相关错误信息",
    "data":null
}
参数说明
参数 类型 说明
code int 接口请求状态码,200表示成功,非200表示失败
status string 接口请求状态,success 表示成功
message string 接口错误提示,注意:请求出错时,页面显示的提示为polyv积分打赏所设置的提示
data float 请求成功时为观众的剩余积分

sign的生成方法

为了保证接口的安全性,polyv观看页在请求接口时,会增加一个经过拼接生成的sign值,建议您在相应的代码里面增加对sign的校验,以确定接口的正常使用。

生成步骤

  1. 将要提交的所有非空参数和参数值根据参数名的进行字典序排列;
  2. 然后以: 参数名参数值参数名参数值进行拼接,拼接完后首尾带上appSecret
  3. 最后用MD5将字符串进行加密,加密后再大写

例如:
要发送的参数为:

channelId=10000, appId=app_trail, viewerId=viewer_test, ts=1558659759696;

按参数名字典序排序:

appId=app_trail, channelId=10000, ts=1558659759696, viewerId=viewer_test

拼接字符串并且首尾带上appSecret(从polyv后台获取,此处例如 6ef8d34c08f44e91a18428842ff0ba7e):

6ef8d34c08f44e91a18428842ff0ba7eappIdapp_trailchannelId10000ts1558659759696viewerviewer_testId6ef8d34c08f44e91a18428842ff0ba7e

通过MD5加密后再大写 得到最终的sign:

F42D596520782405C37021B853F0F805

参考示例:

    /**
     * 计算请求用户接口的sign
     */
    private String getSign(Map<String, String> paramMap, String appSecret) {
        //对参数名进行字典排序
        String[] keyArray = paramMap.keySet().toArray(new String[0]);
        Arrays.sort(keyArray);
        //拼接有序的参数串,首尾加上appSecret
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append(appSecret);
        for (String key : keyArray) {
            stringBuilder.append(key).append(paramMap.get(key));
        }
        stringBuilder.append(appSecret);
        // 最后用md5加密后再大写
        return EncryptionUtils.md5Hex(stringBuilder.toString()).toUpperCase();
    }
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

iPad版“讲课啦”APP使用教程(视频)

视频说明

保利威讲课啦 APP,随时随地开启教学直播,现在我们就来体验一下。

在iPad上安装保利威讲课啦,使用频道号和密码登录。
登录成功后,先进行一下基本设置,根据实际需求,选择相应的选项,都设置完成之后,点击保存就可以了。
在开始直播之前,先在后台对应的频道号下,上传课程PPT文档,上传成功之后,在iPad文档管理,选择我们上课用的文档,点一下,ppt内容就出现在画面上啦,点击上课,就开始直播教学了。老师客户端摄像头默认是开启的,如果不想开启,可以点击摄像头小图标可关闭摄像头。
在讲课过程中,可以滑动画面左右翻页,也可以点击ppt下方的箭头翻页,还可以通过快速导航的预览小图跳转页面。
工具栏,选择画笔,画笔颜色和笔触大小都可以根据需要进行选择;如果画错了,可以使用橡皮擦擦除错误的笔迹,如果想清除当前页面上所有的笔迹,点一下清空按钮就可以了。
在上课过程中,可以使用白板对知识点进行讲解;
在连线这里,开启视频或音频连线,这时候,学员可以申请连线,点击允许,就可以跟学员进行实时互动了,视频连麦最多可支持6名学员同时在线。右边的聊天区,可以跟学员聊天互动,一对一答疑,提升学员学习积极性,活跃课堂气氛。最后,可以点击右上角分享按钮,通过直播链接或二维码的方式,将直播地址分享给学员。
好了,今天就介绍到这里,感谢您的观看,我们下次再见。

 

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

如何实现嘉宾连麦功能(视频)

视频说明

保利威嘉宾连麦功能,可以实现多个老师同时讲一门课,解决了异地老师时间和差旅费用的问题。

那怎么使用嘉宾连麦功能呢?
第一步:确保使用的直播场景为三分屏,可以在直播详情,直播场景这里设置。
第二步:在直播在直播后台角色管理中,点击增加嘉宾,后台会生成一个嘉宾号和对应的密码,点击设置,可以修改嘉宾头像,昵称,头衔和密码,设置完成之后,点击确认保存即可。这里最多可以添加6个嘉宾。
第三步,讲师或主持人使用云课堂发起直播,在基本设置,混流布局这里,有三种布局模式,按照实际需求选择多人模式或者主讲模式,我们选择主讲模式。
第四步,嘉宾使用嘉宾号和密码登录polyv云课堂客户端,主持人点击上课按钮,就可以开始直播了。
最后,点击嘉宾头像的右上角,可以切换主讲的嘉宾,主持人还可以禁用嘉宾的麦克风或者摄像头画面。

以嘉宾A为例,A使用嘉宾账户和密码登录后,会自动上麦,默认在主位置,当主持人切换A为主讲时,A 会在所有客户端的主位置,同时,A的客户端也会收到这样的提示:您已被授予讲师权限。当主持人切换B嘉宾为主讲模式,这时,A客户端会显示“您的讲师权限已被收回”。

 

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

添加菜单

接口URL

http://api.polyv.net/live/v3/channel/menu/add

接口说明

1、作用:添加一个频道菜单
2、接口支持https协议

支持格式

JSON

请求方式

POST

请求数限制

TRUE

请求参数

参数名 必选 类型 说明
appId string 从API设置中获取,在直播系统登记的appId
timestamp string 当前时间的秒级时间戳(13位)
sign string 签名,为32位大写的MD5值
channelId int 频道号
name string 菜单名称
type string 菜单类型
desc 直播介绍
chat 互动聊天
quiz 咨询提问
text 图文菜单
iframe推广外链
content string 菜单内容。
当菜单类型为直播介绍、图文菜单时,该值为菜单的内容。
当菜单类型为外链推广时,该值为外链链接地址。

操作成功响应示例

{
  "code": 200,
  "message": "",
  "data": {
    "menuId": "3b650cf438",
    "menuType": "iframe",
    "name": "推广菜单",
    "ordered": 6,
    "content": "http://polyv.net"
  }
}

操作失败响应示例

签名错误

{
    "code": 403,
    "status": "error",
    "message": "invalid signature.",
    "data": ""
}

缺少参数

{
    "code": 400,
    "status": "error"
    "message": "param should not be empty: name",
    "data": ""
}

参数长度过长

{
    "code": 400,
    "status": "error"
    "message": "param length is incorrect: name",
    "data": ""
}

菜单类型错误

{
    "code": 400,
    "status": "error"
    "message": "invalid menu type",
    "data": ""
}

已存在该类型的菜单(除 text、iframe 类型外,其他菜单都具有唯一性,重复添加相同类型时会返回错误)

{
    "code": 400,
    "status": "error"
    "message": "menu already exist",
    "data": ""
}

菜单数已达到上限(“咨询提问”之外,最多可以有6个菜单)

{
    "code": 400,
    "status": "error"
    "message": "menu count reached the limit",
    "data": ""
}

响应字段说明

名称 类型 说明
code string 响应代码,成功为200,失败为400,签名错误为401,异常错误500
status string 成功为success,失败为error
message string 错误时为错误提示消息
menuId string 菜单ID
menuType string 菜单类型
desc 直播介绍
chat 互动聊天
quiz 咨询提问
text 图文菜单
iframe推广外链
name string 菜单名称
ordered string 菜单顺序,值越小,越靠前。新添加的菜单默认位于最后。
content string 菜单内容

php请求示例

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

$params = array(
  'appId' => $appId,
  'timestamp' => $timestamp,
  'channelId' => '123456',
  'name' => '菜单名称',
  'type' => 'text',
  'content' => '菜单内容'
);

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

$params["sign"] = $sign;
$url="http://api.polyv.net/live/v3/channel/menu/add?".http_build_query($params);

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);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($post_data)));
   $file_contents = curl_exec($ch);
   curl_close($ch);
   return $file_contents;
}

echo post($url);
?>

java请求示例

package com.live;

import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.live.util.EncryptionUtils;

public class Demo {


    private static RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(15000).setConnectTimeout(15000)
            .setConnectionRequestTimeout(15000).build();

    public static void main(String[] args) {

        String url = "http://api.polyv.net/live/v3/channel/menu/add";
        String appId = "appId";
        String key = "secretKey";
        Map<String, String> map = new HashMap<>();
        map.put("appId", appId);
        map.put("timestamp", String.valueOf(System.currentTimeMillis()));
        map.put("channelId", "123456");
        map.put("name", "菜单名称");
        map.put("type", "text");
        map.put("content", "菜单内容");

        String sign = getSign(map, key);
        map.put("sign", sign);

        String body = "";
        String content = sendHttpPost(url, map, body);
        System.out.println(content);

    }

    /**
     * 发送 post请求
     * @param httpUrl 地址
     * @param maps 参数
     */
    public static String sendHttpPost(String httpUrl, Map<String, String> maps, String body) {
        StringBuilder url = new StringBuilder();
        url.append(httpUrl).append("?");
        for (Map.Entry<String, String> map : maps.entrySet()) {
            url.append(map.getKey()).append("=").append(map.getValue()).append("&");
        }
        String urlStr = url.toString().substring(0, url.length() - 1);

        System.out.println(urlStr);
        // 创建httpPost
        HttpPost httpPost = new HttpPost(urlStr);
        try {
            StringEntity entity = new StringEntity(body, Charset.forName("UTF-8"));
            httpPost.setEntity(entity);
        } catch (Exception e) {
            // ...
        }
        return sendHttpPost(httpPost);
    }

    /**
     * 发送Post请求
     * @param httpPost
     * @return
     */
    private static String sendHttpPost(HttpPost httpPost) {
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        HttpEntity entity;
        String responseContent = null;
        try {
            // 创建默认的httpClient实例.
            httpClient = HttpClients.createDefault();
            httpPost.setConfig(requestConfig);
            // 执行请求
            response = httpClient.execute(httpPost);
            entity = response.getEntity();
            responseContent = EntityUtils.toString(entity, "UTF-8");
        } catch (Exception e) {
            // ...
        } finally {
            try {
                // 关闭连接,释放资源
                if (response != null) {
                    response.close();
                }
                if (null != httpPost) {
                    httpPost.releaseConnection();
                }
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
                // ...
            }
        }
        return responseContent;
    }

    /**
     * 根据map里的参数构建加密串
     * @param map
     * @param secretKey
     * @return
     */
    protected static String getSign(Map<String, String> map, String secretKey) {
        Map<String, String> params = paraFilter(map);
        // 处理参数,计算MD5哈希值
        String concatedStr = concatParams(params);
        String plain = secretKey + concatedStr + secretKey;
        String encrypted = EncryptionUtils.md5Hex(plain);

        // 32位大写MD5值
        return encrypted.toUpperCase();
    }

    /**
     * 对params根据key来排序并且以key1=value1&key2=value2的形式拼接起来
     * @param params
     * @return
     */
    private static String concatParams(Map<String, String> params) {
        List<String> keys = new ArrayList<>(params.keySet());
        Collections.sort(keys);

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < keys.size(); i++) {
            String key = keys.get(i);
            String value = params.get(key);

            sb.append(key).append(value);
        }

        return sb.toString();
    }

    /**
     * 除去数组中的空值和签名参数
     * @param sArray 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    private static Map<String, String> paraFilter(Map<String, String> sArray) {

        Map<String, String> result = new HashMap<>();

        if (sArray == null || sArray.size() <= 0) {
            return result;
        }

        for (String key : sArray.keySet()) {
            String value = sArray.get(key);
            if (value == null || value.equals("") || key.equalsIgnoreCase("sign")
                    || key.equalsIgnoreCase("sign_type")) {
                continue;
            }
            result.put(key, value);
        }

        return result;
    }
}

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

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

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

暖场设置

1.方法一:登录保利威视管理系统首页(http://my.polyv.net/v2/login
我的直播-->频道设置-->暖场设置

频道设置暖场设置1

方法二:直接登录频道号登录入口(http://live.polyv.net/teacher/login.htm),
暖场设置

二.功能介绍

  • 暖场设置类型分为视频和图片,默认视频类型
  • 设置的暖场内容,在讲师推流前播放,有助于缓解气氛

三.使用步骤

暖场开关开启-->选择暖场类型
- 当类型为视频时,视频地址获取方式:
1.找到一个完整的视频,例如:v.polyv.net/uc/video/getMp4?vid=a98c9950bd487ea4fd0661492573155d_a_8

2.把等号后面的改为你要的视频的ID
暖场设置2
即v.polyv.net/uc/video/getMp4?vid=红色框框部分

3.复制到浏览器中打开,可观看到完整视频,复制视频地址,如下
暖场设置6
- 当当类型为图片时:上传建议尺寸、大小、格式的图片,以及点击图片跳转的链接
暖场设置3

注意:

1)目前只支持MP4格式的暖场视频,视频大小不超过30M;

2)等待图片和暖场视频功能,两者只能选其中之一。

暖场设置2暖场设置3

 

2.效果图如下:
暖场视频效果图

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

推广

一.功能路径

我的直播-->频道设置-->营销设置-->推广

频道设置推广

二.功能介绍

推广2

  1. 推广功能开关:打开后移动端观看页将打开关注企业公众号入口
  2. 入口文案:修改关注公众号入口的文字
  3. 公众号二维码:公众号二维码上传(目前只支持不大于200k、格式为jpg、png的二维码)
  4. 弹窗提示文案:文案显示在二维码下方
  5. 主动弹窗开关:打开后观众进入观看页后二维码自动弹出
  6. 移动端页面效果预览
  7. 确认保存按钮

三.移动端观看页效果

推广3

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