直播 JavaScript SDK 使用文档

概述

该SDK是用于web端接入POLYV直播服务,包括云课堂和直播助手发起的直播的web端观看,POLYV聊天室服务,兼容PC以及移动端观看。

快速开始

第一步:引入直播SDK

<script src="https://player.polyv.net/livesdk/polyv-live.min.js"></script>

第二步:创建初始化ppt与讲师画面元素

<div id="ppt" style="width:500px;height:300px;"></div>
<div id="player" style="width:500px;height:300px;"></div>

第三步:创建SDK实例

var liveSdk = new PolyvLiveSdk({
  channelId: channelId,
  sign: sign, // 频道验证签名
  timestamp: timestamp, // 毫秒级时间戳
  appId: appId, // polyv 后台的appId
  user: {
    userId: userId,
    userName: 'polyv-test',
    pic: '//livestatic.videocc.net/assets/wimages/missing_face.png'
  }
});

第四步:监听频道信息读取完成事件,初始化播放器

// 监听频道信息并初始化播放器
liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, (event, data) => {
  liveSdk.setupPlayer({
    pptEl: '#ppt',
    el: '#player',
    type: 'auto'
  });
});  

API

PolyvLiveSdk 是用于创建SDK实例的类

类方法

PolyvLiveSdk.getChannelInfo(channelId: string, appId: string, sign: string, timestamp: number): Promise

获取频道信息

PolyvLiveSdk.previewPPT(config: previewConfig): PreviewPPT

预览指定的ppt
参数说明

interface previewConfig {
  el: DOMSeletor;  // 需要显示预览ppt的dom选择器
  autoId: number|string;  // pptId
  type: string;  // ppt类型
  width?: number|string;  // ppt宽,默认100%
  height?: number|string; // ppt高,默认100%
  pptNav?: boolean; //是否显示ppt控制控件,默认`true`  
  pptNavBottom?: string`; //ppt控制栏距离底部距离,例:`pptNavBottom: '50px'` 
}

实例方法
PreviewPPT.nextPPTPage(): void 使ppt切换到下一页,跟随模式下不能切到讲师未讲解的ppt
PreviewPPT.prevPPTPage(): void 使ppt切换到上一页

实例事件
success: 实例创建成功
error: 预览失败
pptStatusChange: 当前页改变,与liveSdk.player 上的事件一致

返回值 PreviewPPT
示例代码

var previewPPT = PolyvLiveSdk.previewPPT({
  el: '#previewPPT',
  autoId: 123,
  isAnimate: true,
  type: 'new',
});

previewPPT.on('success', function() {
  console.log('预览成功');
});

previewPPT.on('error', function(err) {
  console.log('预览失败', err);
});

// 销毁ppt预览实例
//previewPPT.destroy()
  • 当前频道的ppt列表可通过接口获取 -> 接口文档
  • 接口请求中的参数 status 建议设置 normal,请求成功处理的ppt

类属性

PolyvLiveSdk.emotionLists: { url: string; title: string: position: string }[]

polyv 表情数据列表
全部表情 sprites 图片地址: https://livestatic.polyv.net/assets/images/em/default.png

// 返回数据
[
  {
    url: '//livestatic.polyv.net/assets/images/em/2.png',
    title: '撇嘴',
    position: '-48px 0px' // sprites图位置
  }
]

PolyvLiveSdk.emotionSearch: object

键值对为 [表情title]: 表情url 的对象

实例设置

channelId: string

频道id, 支持云课堂/直播助手/大班课发起的直播

sign: string

POLYV 频道信息获取接口用到的签名 签名规则
请用channelId、timestamp、appId 三个字段拼接sign

timestamp: number

POLYV 频道信息获取接口用到的时间戳
- 注意:该时间戳需要与服务器端获取的签名一样

appId: string

POLYV账号 appId,从 POLYV 后台获取

user: { userId: string; userName: string; pic: string; }

用户信息设置
* user.userId: string : 用户id
* user.userName: string : 用户昵称
* user.pic: string : 用户头像,必须为是http/https/ // 开头链接

{
    userId: '自定义id', // 用户id
    userName: 'polyv-test', // 用户昵称
    pic: '//livestatic.videocc.net/assets/wimages/missing_face.png' // 用户头像
}

chat: boolean

是否连接聊天室,默认为true,在云课堂模式下如果调用直播播放器必须连接聊天室,所以即使设置为false,在初始化直播播放器时会自动连接聊天室,回放模式下可以不连接

param4?: stringparam5?: stringkey1?: stringkey2?: stringkey3?: string

播放器统计参数,param1、param2,param3被预设为userId和userName以及直播状态,所以设置无效

socket: SocketIOClient.Socket

SDK 支持传入外部传入 polyv 聊天室 socket ,传入后SDK不在连接socket,请在外部socket实例创建后就初始化SDK实例并把socket传入
示例代码(以polyv聊天室SDK为例)

var chatroom = new PolyvChatRoom({
  roomId: channelId,
  userId: userId,
  nick: userName,
  pic: pic,
  userType: 'slice'
});

var liveSDK = new PolyvLiveSdk({
  channelId: channelId,
  appId: appId,
  sign: sign,
  timestamp: timestamp,
  socket: chatroom.chat.socket,
  user: {
    userId: userId,
    userName: userName,
    pic: pic
  }
});

实例方法

setupPlayer(config: object)

初始化播放器,必须在频道信息事件触发时调用
参数:config 播放器配置对象

示例代码:

var config = {
    pptEl: '#ppt',
    el: '#player',
    type: 'auto',
    autoplay: false,
    audioMode: false,
    width: '100%',
    height: '100%',
    pptWidth: '100%',
    pptHeight: '100%',
    controllerPosition: 'ppt',
    controller: true,
    pptNav: true,
    // 回放模式需要fileId、url、sessionId
    fileId: undefined,
    url: undefined,
    sessionId: undefined
}
// 监听频道信息并初始化播放器
liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, (event, data) => {
  liveSdk.setupPlayer(config);
});  

参数说明:
pptEl?: DOMSelectors:ppt文档元素选择器,非云课堂可不填
el: DOMSelectors:讲师区域元素
width?: string|number:讲师区域宽,默认'100%'
height?: string|number:讲师区域高,默认'100%'
pptWidth?: string|number:ppt区域宽,默认'100%'
pptHeight?: string|number:ppt区域高,默认'100%'
type?: string: 播放器播放类型,'auto'(根据频道实际设置自动选择播放类型)、'live'(直播)、'vod'(回放)、'record'(暂存), 默认'auto',选择'auto'后,播放器会以直播->回放列表视频->第一个暂存视频(优先级由大到小)的优先级播放
autoplay?: boolean:是否自动播放,默认false
audioMode?: boolean:讲师画面以音频模式播放, 默认false
controller?: boolean:是否显示控制栏, 默认true
controllerPosition?: string:控制栏现在在哪个区域 'ppt'(ppt区域)、'player'(讲师区域), 默认ppt
pptNav?: boolean:是否显示ppt控制控件,默认true
pptNavBottom?: string:ppt控制栏距离底部距离,例:pptNavBottom: '50px'
fileId: string: ppt数据id,回放模式必填
url: string: 回放视频链接,回放模式必填
sessionId: string:回放场次id,回放模式必填
vid: string: 回放id,回放模式下传入该参数可不传fileIdurlsessionId

liveSdk.reloadPlayer(): void

重新加载播放器,目前支持播放器播放类型为live场景的使用,比如当前客户端没有推流,用户打开了页面,过一段时间后客户端开始推流可以调用该方法刷新播放器

liveSdk.setupPlayer({
  // ... 
  type: 'live'
  // ...
});

// 监听流状态变化刷新播放器
liveSdk.on(PolyvLiveSdk.EVENTS.STREAM_UPDATE, function() {
  liveSdk.reloadPlayer();
});

liveSdk.switchVod(sessionData: object)

换回放场次,用于切换具体播放场次视频
参数:sessionData 需要播放场次的场次数据
示例代码

// data数据是该场次数据,可通过liveSdk.getPlaybackLists(...) 获取
liveSdk.switchVod({
  fileId: data.videoId,
  url: data.url,
  sessionId: data.channelSessionId
});
//or 
liveSdk.switchVod({
  vid: data.videoPoolId
});

liveSdk.getPlaybackLists(page: number, pageSize: number): Promise

获取回放列表
示例代码:

liveSdk.getPlaybackLists(1, 5)
.then(function(data) {
    console.log(data);
});

参数:
page: number: 页数
pageSize: number: 每页条数

liveSdk.getChapterLists(fileId: string, type: string): Promise

获取章节列表
参数:
fileId: string: ppt数据id
type: string:章节类型, playback(回放)、record(暂存)
- @return Promise

liveSdk.send(message: string): void

发送聊天消息
参数:
message: string:聊天内容

liveSdk.sendQuestion(message: string): void

向讲师发送问答私聊信息
参数:
message: string: 私聊信息

liveSdk.sendAnswer(option: string, questionId: string, callback: Function): void

发送答题卡回答内容
参数:
option: string: 答题卡答案A/ABC
questionId: string: 答题卡题目id
callback: Function: 发送成功回调

liveSdk.sendCustomMessage(messsage: object): void

发送自定义消息,聊天室会广播这些信息,由用户自行定义数据结构
示例代码

liveSdk.sendCustomMessage({
  EVENT: 'customA',
  data: '自定义信息'
});

liveSdk.getHistoryMessage(): Promise

获取历史聊天记录,默认10条

liveSdk.destroy(disconnectSocket: boolean = true): void

销毁播放器示例
参数:
disconnectSocket: bolean: 是否断开socket

liveSdk.toSign(checkinId: string, callback: Function): void

发送签到
参数:
checkinId: string: 签到id
callback: Function: 发送签到回调

liveSdk.sendQuestionnaireAnswer(questionnaireId: string, answer: [], callback: Function): void

发送问卷答案
参数:
questionnaireId: string: 问卷Id
answer: []:答案列表, 与文档 ANSWER_QUESTIONNAIRE中的result一致
callback: Function: 发送回调
示例代码:

liveSdk.sendQuestionnaireAnswer('fdp9u1x022', [
  // ...
  {
  questionId: '48e5afd460', answer: 'B'
  },
  // ...
])

liveSdk.getCloudClassRoomStatus(): Promise

查询当前频道直播状态
示例代码:

liveSdk.getCloudClassRoomStatus()
.then(function(resp) {
  if (resp.status === 'success') {
    // liveStart(开始上课)、liveRecovery(恢复)、liveSuspend(暂停)、liveFinish(结束)
    console.log('当前直播状态为:' + resp.data.status);
  }
});

实例 player 对象

liveSdk.player: 调用 setupPlayer 后创建的播放器实例,可用于控制播放器播放相关交互

对象属性

liveSdk.player.currentTime: number: 当前播放的进度
liveSdk.player.duration: number: 视频时长
liveSdk.player.playbackRate: number: 当前倍速
liveSdk.player.volume: number: 当前音量
liveSdk.player.cameraStatus: boolean: 当前讲师摄像头是否被关闭
liveSdk.player.paused: boolean: 当前是否是暂停播放状态
liveSdk.player.supportFullScreen:boolean: 是否支持全屏
liveSdk.player.fullScreen:FullScreen:播放器全屏实例,里面封装了进入全屏以及退出全屏的方法,可对于页面任意DOM操作
liveSdk.player.lines: number:当前频道有多少条线路,需要在loadedmetadata时间后访问
liveSdk.player.line: number:当前播放的线路 0/1
liveSdk.player.currentPPTPage:当前展示的ppt页码,若当前显示PDF或者白板则返回1
liveSdk.player.totalPPTPages: 当前使用的ppt总页数,若当前使用PDF或者白板则返回1
#####全屏示例说明
liveSdk.player.fullScreen.request($dom: HTMLElement): void:将指定元素进入全屏状态
liveSdk.player.fullScreen.exit(): void:退出全屏状态

对象方法

liveSdk.player.setVolume(volume: number): void: 设置播放器音量,范围[0, 1]
liveSdk.player.play(): void:恢复播放视频
liveSdk.player.pause(): void:暂停播放视频
liveSdk.player.togglePlay(): void:交替恢复暂停播放视频
liveSdk.player.resize(): void:刷新ppt尺寸,播放期间如果对ppt容器尺寸有改变ppt尺寸可能异常,再改变尺寸后调用该方法恢复正常尺寸
liveSdk.player.seek(time:number): void:请求到指定播放位置
liveSdk.player.setRate(rate: number): void:切换倍速,可选0.5、1、1.25、1.5、2
liveSdk.player.switchCamera(hide: boolean): void:关闭或显示讲师摄像头
liveSdk.player.switchLine(line: number): void:切换当前线路,line由number 0递增,代表线路1、线路2...
liveSdk.player.switchPPTDocMode(control: boolean): boolean:直播时切换ppt模式,设置true ppt可由用户自己控制ppt内容,不跟随客户端控制(自由模式),反之。调用返回是否切换成功(跟随模式)
liveSdk.player.nextPPTPage(): void 使ppt切换到下一页,跟随模式下不能切到讲师未讲解的ppt
liveSdk.player.prevPPTPage(): void 使ppt切换到上一页

对象事件

playing: 恢复播放
pause: 暂停播放
timeupdate: 播放进度更新
loadedmetadata: 视频加载成功可以准备播放,可对播放器进行play()、pause()等操作
ended:播放结束
ratechange:倍速改变
volumechange:音量改变
lineChanged:线路改变

liveSdk.player.on(lineChanged, function(line) {
  console.log(line); // 0/1...
});

error:视频播放错误
示例代码

liveSdk.player.on('playing', function() {
  console.log('恢复播放');
});
liveSdk.player.on('pause', function() {
  console.log('暂停播放');
});
PPT操作相关事件

whiteboardOpened: 讲师打开白板
whiteboardClosed: 讲师关闭白板,恢复为PPT
pptStatusChange: ppt状态改变,包括当前页数改变(ppt更换、ppt与白板切换 ),翻页,注意白板状态时不能翻页
示例代码

liveSdk.player.on('pptStatusChange', function(data) {
  /*
  {
    page: 3,  // 当前是第几页
    total: 30, // 当前ppt总页数
    type: 'ppt' // ('ppt'|'whiteboard') 当前显示类型,ppt或白板
  }
  */ 
  console.log(data);
});

实例事件

事件方法

liveSdk.on(event: string, func: Function)

事件监听方法
event: string: 绑定事件名称
func: (event: string, data: object): void:事件回调函数

liveSdk.once(event: string, func: Function)

绑定事件,只触发一次
event: string: 绑定事件名称
func: (event: string, data: object): void:事件回调函数

liveSdk.off(event: string, func: Function)

解除事件绑定
event: string: 绑定事件名称
func: Function: void:事件回调函数

liveSdk.on(PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT, function(event, data){});

事件列表

PolyvLiveSdk.EVENTS.CHANNEL_DATA_INIT

  • 频道信息获取完成
  • data为频道信息

PolyvLiveSdk.EVENTS.PLAYBACK_INIT

  • 回放章节初始化完成
  • data: 场次数据
    javascipt
    {
    sessionId: '123',
    fileId: '123'
    }

PolyvLiveSdk.EVENTS.STREAM_UPDATE(event, status)

  • 流状态更新,可用来判断当前有无直播在推流
  • status (live|end)

PolyvLiveSdk.EVENTS.SPEAK

  • 非本人的用户发言
  • data:聊天信息
 {
  EVENT: 'speak',
  content: 'test',  // 聊天具体内容
  currentUser: false, // 是否为当前用户
  custom: false, // 是否是自定义消息
  formatTime: '2019-07-02 14:12',
  id: '65975130-9c90-11e9-94b0-fd61e3983999',  // 消息id
  reward: false,
  time: 1562047960506,
  // 用户信息
  user: { 
        banned: false,
        channelId: '275682',
        clientIp: '61.144.146.199',
        nick: 'polyv',
        pic: '//livestatic.videocc.net/v_314/assets/wimages/missing_face.png',
        roomId: '275682',
        sessionId: 'f8qnsda4zq',
        uid: 'Ph4UtYfnxQo7pZK6AkbP',
        userId: '1562047951865',
        userType: 'slice',
      }
 }

PolyvLiveSdk.EVENTS.SEND_MESSAGE

  • 本人的发言
  • data: 与PolyvLiveSdk.EVENTS.SPEAK一致

PolyvLiveSdk.EVENTS.S_QUESTION

  • 发送提问消息回调
  • data:提问数据
{
  EVENT: 'S_QUESTION',
  content: '1+1=多少',
  currentUser: true,
  custom: false,
  reward: false,
  roomId: '275682',
  user: {
    // ... 用户信息
  }
}

PolyvLiveSdk.EVENTS.T_ANSWER

  • 管理员或讲师回答提问
  • data:回答的数据
{
  EVENT: 'T_ANSWER'
  content: '等于2'
  roomId: '275682'
  s_userId: '1559030433536', // 被回答用户id
  user: {
    // ... 用户信息
  }
}

PolyvLiveSdk.EVENTS.CUSTOM_MESSAGE

  • 收到自定义消息
  • data:具体数据结构由用户自行定义

PolyvLiveSdk.EVENTS.REMOVE_HISTORY

  • 清除聊天记录,页面可收到该消息后清除页面聊天内容

PolyvLiveSdk.EVENTS.REMOVE_CONTENT

  • 清除某一条聊天信息,页面可收到该消息后清除相应聊天内容
  • data:被删除消息内容
{
  EVENT: 'removeContent',
  id: '65975130-9c90-11e9-94b0-fd61e3983999', // 被删除消息的id
  roomId: '275682'
}

PolyvLiveSdk.EVENTS.HISTORY_MESSAGE

  • 获取历史聊天信息完成
  • data:历史聊天信息,内容为speak事件内容组成的数组

PolyvLiveSdk.EVENTS.PROHIBIT_TO_SPEAK

  • 发言失败,可能由于聊天室为连接但发送聊天消息等发送错误触发

PolyvLiveSdk.EVENTS.ADD_SHIELD

  • 当前用户被禁止发言

PolyvLiveSdk.EVENTS.REMOVE_SHIELD

  • 当前用户被恢复发言

PolyvLiveSdk.EVENTS.LOGIN(event, data)

  • 频道内用户登录事件
  • data: 用户信息
// 用户加入信息
{
  EVENT: 'login',
  onlineUserNumber: 3,
  timeStamp: 1562051459569,
  user: {
    // 用户信息
  }
}

PolyvLiveSdk.EVENTS.LOGOUT(event, data)

  • 频道内用户退出事件
  • data: 用户信息
{
  EVENT: 'loginOut',
  channelId: '275682',
  onlineUserNumber: 2,  //当前在线人数
  roomId: '275682',
  timeStamp: 1562051345281,
  uid: 'LVexVHpKvK0KOU_0Ak4L',
}

PolyvLiveSdk.EVENTS.LOGIN_REFUSE

  • 频道内有用户被踢出房间,包含用户以及本身
  • data: 被踢用户数据
{
  EVENT: 'LOGIN_REFUSE',
  data: {referField: '1559030433537', type: 'userId'}
}

PolyvLiveSdk.EVENTS.BAN_USER_ROOM

  • 当前用户被踢出房间,这时候会自动断开聊天室连接

PolyvLiveSdk.EVENTS.LOGIN_KICK

  • 用户登录聊天室时如果已经被提出房间会收到该事件

PolyvLiveSdk.EVENTS.SIGN_IN

  • 收到讲师发起签到消息
  • 可调用 liveSdk.toSign 方法发送签到
  • 签到数据
{
  EVENT: 'SIGN_IN',
  data: {
    checkinId: '07ff9330-9c99-11e9-8aa1-37da87', // 签到id
    createTime: 1562051668963,
    limitTime: '30', // 签到时间,页面需要根据这个时间显示倒计时,结束后不允许再签到
    message: '各位同学开始签到了' // 签到提示文案
  }
  roomId: '275682'
}

PolyvLiveSdk.EVENTS.STOP_SIGN_IN

  • 收到讲师停止签到消息,收到后不允许发送签到

PolyvLiveSdk.EVENTS.BULLETIN

  • 收到公告消息
  • data:公告消息
{
  EVENT: 'bulletin',
  content: '公告内容'
}

PolyvLiveSdk.EVENTS.REMOVE_BULLETIN

  • 删除公告消息

PolyvLiveSdk.EVENTS.START_QUESTIONNAIRE

  • 收到问卷消息, 回答后可使用liveSdk.sendQuestionnaireAnswer 方法发送答案
  • data: 问卷内容
  • 问卷消息内容,与polyv 聊天室 START_QUESTIONNAIRE 事件数据一致 查看

PolyvLiveSdk.EVENTS.STOP_QUESTIONNAIRE

  • 讲师停止问卷
  • data: 消息内容

PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_CONTENT

  • 答题卡: 获取问题内容
  • data: 答题卡消息,可查阅 文档 答题卡部分

PolyvLiveSdk.EVENTS.GET_TEST_QUESTION_RESULT

  • 答题卡: 获取答题结果

PolyvLiveSdk.EVENTS.STOP_TEST_QUESTION

  • 答题卡: 停止答题

PolyvLiveSdk.EVENTS.ON_PAUSE_RECORD

  • 直播录制暂停(课间休息)

PolyvLiveSdk.EVENTS.ON_START_RECORD

  • 恢复录制(休息结束,恢复直播)

PolyvLiveSdk.EVENTS.ON_EXIT_RECORD

  • 退出录制(下课)
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

微信观看小程序SDK(推荐)

产品介绍

概述

POLYV微信观看小程序SDK以组件的方式提供了直播播放、点播播放、文档绘制等功能,供用户灵活组合自己的业务逻辑。

功能特性

功能 表述
视频 支持直播视频和点播视频观看,暂不支持点播加密视频
文档 PPT、白板以及画笔展示,暂不支持动效PPT
连麦 支持1V1语音和视频连麦功能
聊天 支持在线文本表情聊天

阅读对象

本文档为技术文档,需要阅读者:
- 拥有基本的小程序开发能力
- 准备接入polyv视频云或已接入的客户
- 对polyv视频云使用方法有基础的了解

使用步骤

开发准备

获取Access Key

登录保利威直播后台 - 云直播 - 开发设置 - 身份认证

微信接口白名单配置

request合法域名
https://document.polyv.net
https://api.polyv.net
https://player.polyv.net
https://router.polyv.net
https://livestatic.videocc.net
https://prtas.videocc.net
https://rtas.videocc.net
https://apichat.polyv.net
https://chat.polyv.net
https://miniapp.agoraio.cn
https://uni-webcollector.agora.io
https://live.polyv.cn
https://apollo.polyv.net
https://doc.polyv.net
https://doc-2.polyv.net
socket合法域名
wss://chat.polyv.net
wss://miniapp.agoraio.cn
downloadFile合法域名
https://doc.polyv.net
https://doc-2.polyv.net

配置微信直播权限

sdk播放直播使用了微信live-player,需要先通过类目审核,再在小程序管理后台,「开发」-「接口设置」中自助开通该组件权限。

使用方法

sdk提供了自定义组件polyv提供一套完整的业务逻辑,供用户开箱即用。也提供了player播放组件、ppt文档组件、chatroom聊天室组件等供用户灵活组合自己的业务逻辑。

在使用之前需要在app.js的onLaunch中调用setApp方法,传入polyv云直播的access key。

import plv from '*/polyv-sdk/index';
onLaunch() {
    plv.setApp({
        appId: '',
        appSecret: ''
    });
}
一、使用polyv组件。可参考demo的watch
  1. 拷贝sdk代码到自己的项目中,在使用到sdk的page的json文件中引入组件

    {
     "usingComponents": {
       "polyv": "*/polyv-sdk/components/polyv/polyv"
     }
    }
    
  2. 在wxml中使用polyv组件
    <view>
    <polyv />
    </view>
    
  3. 在页面的onload中调用init方法,在onUnload中调用destory方法

    init方法初始化观看,获取频道详情、初始化socket事件等。

    import plv from '*/polyv-sdk/index';
    // onLoad
    onLoad() {
       const options = {
         channelId: '', // 频道ID
         openId: '', // 用户openId
         userName: '', // 用户名
         avatarUrl: '' // 用户头像
       };
       plv.init(options);
    }
    // onUnload
    onUnload() {
      plv.destory();
    }
    
二、灵活组合组件。可参考demo的watch2
  1. 在使用到sdk的page的json文件中引入组件

    {
     "usingComponents": {
       "player": "*/polyv-sdk/components/player/player",
        "ppt": "*/polyv-sdk/components/ppt/ppt",
        ...
     }
    }
    
  2. 在wxml中使用组件,传入必要的参数。
    <view>
    <player
        videoOption="{{ videoOption }}"
           bind:onLiveStatusChange="playerLiveStatusChange"
       />
    <ppt />
    </view>
    
  3. 在页面的onload方法中调用init方法。
    import plv from '*/polyv-sdk/index';
    Page({ 
       onLoad() {
           const options = { ... };
           plv.init(options)
               .then(data => {
                const { detail, chat } = data;
                   // 处理业务逻辑
               })
               .catch(err => {
                // 异常处理
               });
       },
       onUnload() {
           plv.destory();
       }
    });
    

组件详解请参考demo中doc文件

demo

demo下载地址

change log

  • v 1.0.0

    初始版本

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

直播后台JavaSDK使用

一、SDK地址

SDK地址

二、版本兼容性

鉴于1.6.0提供maven安装方式,使用上修改了之前的com.polyv的groupId,替换为net.polyv, 包名也替换为net.polyv.xxx, 使用1.6.0之后的新版本需要对之前的旧代码的import包名进行修改替换

三、maven下载(maven方式仅支持1.6.0以上版本)

<dependency>
  <groupId>net.polyv</groupId>
  <artifactId>java-live-sdk</artifactId>
  <version>1.6.0</version>
</dependency>

四、JAR包下载

版本号 版本下载 版本内容
v1.6.0 v1.6.0-JAR无依赖
v1.6.0-JAR带依赖
修改了groupId为net.polyv,设置maven中央仓库构建所需的配置,完善javac注释
v1.5.2 v1.5.2-JAR无依赖
v1.5.2-JAR带依赖
修改创建频道并初始化返回数据组装成对象
v1.5.1 v1.5.1-JAR无依赖
v1.5.1-JAR带依赖
获取频道的子频道列表、设置自定义菜单、禁止频道推流、恢复频道推流、获取频道广告列表、创建基础频道、更新频道信息
v1.5.0 v1.5.0-JAR无依赖
v1.5.0-JAR带依赖
合并一段时间录制mp4文件,通过ID获取录制文件,获取点赞数和历史观看人数接口实现
v1.4.0 v1.4.0-JAR无依赖
v1.4.0-JAR带依赖
获取频道菜单列表,设置频道菜单,查询账号分钟数,获取打赏设置,修改现金打赏设置,修改道具打赏设置的接口实现
v1.3.0 v1.3.0-JAR无依赖
v1.3.0-JAR带依赖
频道某段时间的直播统计数据,频道点赞数和历史观看人数,简单频道信息列表接口,http正向代理,反向代理的实现
v1.2.0 v1.2.0-JAR无依赖
v1.2.0-JAR带依赖
频道录制文件合并,频道获取回放列表,频道设置回放列表默认回放视频,频道删除回放视频接口实现,优化创建频道不传autoplay参数可以自动播放bug
v1.1.0 v1.1.0-JAR无依赖
v1.1.0-JAR带依赖
频道录制文件列表,频道录制文件接口实现
v1.0.0 v1.0.0-JAR无依赖
v1.0.0-JAR带依赖
项目基础架构搭建,创建直播频道,设置频道最大在线人数,修改频道名称,修改主持人姓名,删除直播频道,设置频道号密码,设置后台回放开关,分页获取频道观看日志,获取频道直播状态,获取频道汇总播放数据,获取多频道观看页人数,获取直播频道信息接口实现

五、当前版本

v1.6.0

六、已实现直播接口

接口 接口文档地址
创建频道 http://dev.polyv.net/2017/liveproduct/l-api/zbglgn/create-channel/
设置频道最大在线人数 http://dev.polyv.net/2018/liveproduct/l-api/szgkygg/setmaxviewerv2/
修改频道名称 http://dev.polyv.net/2016/liveproduct/l-api/szgkygg/updatechannelname/
修改主持人姓名 http://dev.polyv.net/2017/liveproduct/l-api/szgkygg/setpublisher/
删除直播频道 http://dev.polyv.net/2018/liveproduct/l-api/zbglgn/deletechannel/
设置频道号密码 http://dev.polyv.net/2017/liveproduct/l-api/zbglgn/updatepasswd/
设置后台回放开关 http://dev.polyv.net/2017/liveproduct/l-api/hfgn/setplaybackenabled/
获取频道观看日志 http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/viewlog-page/
获取频道直播状态 http://dev.polyv.net/2016/liveproduct/l-api/hqzbxx/live_status/
获取按频道汇总统计的播放数据 http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/channel_play_summary/
获取多个频道观看页人数接口 http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/get-realtime-viewers/
获取频道信息接口 http://dev.polyv.net/2017/liveproduct/l-api/hqzbxx/getchannelid-2/
获取频道录制文件信息接口 http://dev.polyv.net/2017/liveproduct/l-api/hfgn/recordfilesinfo/
直播录制文件转存点播接口 http://dev.polyv.net/2017/liveproduct/l-api/hfgn/livetovod/
频道录制文件合并接口 http://dev.polyv.net/2018/liveproduct/l-api/hfgn/recordfile-merge/
获取频道回放列表接口 http://dev.polyv.net/2017/liveproduct/l-api/hfgn/getplaybacklist/
删除频道回放视频接口 http://dev.polyv.net/2017/liveproduct/l-api/zbglgn/create-channel/
回放列表设置默认回放视频接口 http://dev.polyv.net/2017/liveproduct/l-api/hfgn/setdefault/
频道设置点赞数和观看人数接口 http://dev.polyv.net/2018/liveproduct/l-api/szgkygg/update-likes/
获取频道某段时间的直播统计数据接口 http://dev.polyv.net/2017/liveproduct/l-api/hqzbxx/summary/
获取简单的频道列表接口 http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/get-simple-channel-list/
获取频道菜单列表接口 http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/channel-menu-list/
通过菜单ID设置频道菜单接口 http://dev.polyv.net/2018/liveproduct/l-api/szgkygg/update-channel-menu/
获取用户分钟数接口 http://dev.polyv.net/2017/liveproduct/l-api/hqzbxx/get-user-durations/
获取频道打赏设置接口 http://dev.polyv.net/2018/liveproduct/l-api/hqzbxx/donate-get/
频道现金打赏设置接口 http://dev.polyv.net/2018/liveproduct/l-api/szgkygg/updatecash/
频道道具打赏设置接口 http://dev.polyv.net/2018/liveproduct/l-api/szgkygg/updategood/
获取点赞数和历史观看人数 http://dev.polyv.net/2017/liveproduct/l-api/szgkygg/ymxxsz/live-likes/
合并一段时间录制MP4视频 http://dev.polyv.net/2019/liveproduct/l-api/zbglgn/lzhf/merge-record-mp4/
通过ID获取录制文件信息 http://dev.polyv.net/2019/liveproduct/l-api/zbglgn/lzhf/get-record-file/
获取频道的子频道列表 http://dev.polyv.net/2018/liveproduct/l-api/zbglgn/pdcz/get-accounts/
设置自定义菜单 http://dev.polyv.net/2017/liveproduct/l-api/szgkygg/menu/setmenu/
禁止频道推流 http://dev.polyv.net/2016/liveproduct/l-api/zbglgn/hqzbxx/cutoff/
恢复频道推流 http://dev.polyv.net/2017/liveproduct/l-api/zbglgn/hqzbxx/resume/
获取频道广告轮播图 http://dev.polyv.net/2019/liveproduct/l-api/szgkygg/ymxxsz/channel-advert-list/
创建并初始化频道 http://dev.polyv.net/2019/liveproduct/l-api/zbglgn/pdcz/basic-create/
修改频道详细设置 http://dev.polyv.net/2019/uncategorized/update-channel-detail-setting/

七、调用接口设置代理方式(若无需要请勿设置):

1、设置正向代理

//  获取频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
// 设置正向代理(域名/ip,端口, scheme[http/https])
plChannelService.initForwardProxy({域名}, {端口}, "http");

2、设置反向代理

PLChannelService plChannelService = new PLChannelServiceImpl();
// 方法一:设置反向代理(域名,端口, scheme[http/https])
plChannelService.initReverseProxy({域名}, {端口}, "http");

// 方法二:设置反向代理(域名,端口,ip, scheme[http/https])
plChannelService.initReverseProxy({域名}, {端口}, {ip}, "http");

3、取消设置代理方法

PLChannelService plChannelService = new PLChannelServiceImpl();
// 取消代理(域名,端口)
plChannelService.destroyProxy();

4、 示例

// 创建service对象
PLChannelService plChannelService = new PLChannelServiceImpl();
// 设置反向代理  
plChannelService.initReverseProxy("localhost", 8080, "127.0.0.1", "http");

PLChannelNameSetRequest request = new PLChannelNameSetRequest("XXXXX","XXXXXXXXXXXXXXXXXXXX");
request.setName("xxxx");        
PLChannelCommonResult result = plChannelService.setChannelName(166306, request);

六、频道接口使用:

1、创建直播频道

//  创建频道的创建请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelCreateRequest request = new PLChannelCreateRequest("APPID", "APPSECRET");
//  设置用户ID
request.setUserId("USERID");
//  设置密码
request.setChannelPasswd("123456");
//  设置名称
request.setName("XXX");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的创建频道方法获取请求结果对象
PLChannelCreateResult result = plChannelService.createChannel(request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

2、设置频道最大在线人数

//  创建设置频道的最大在线人数请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelMaxViewerSetRequest request = new PLChannelMaxViewerSetRequest("APPID", "APPSECRET");
//  设置用户ID
request.setUserId("USERID");
//  设置最大在线人数
request.setMaxViewer("200");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的设置最大在线人数方法获取请求结果对象
PLChannelCommonResult result = plChannelService.setChannelMaxViewer("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

3、修改频道名称

//  创建设置频道的名称请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelNameSetRequest request = new PLChannelNameSetRequest("APPID", "APPSECRET");
//  设置频道名称
request.setName("XXX");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的设置频道名称方法获取请求结果对象
PLChannelCommonResult result = plChannelService.setChannelName("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

4、修改主持人姓名

//  创建设置频道的主持人名称请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelPublisherSetRequest request = new PLChannelPublisherSetRequest("APPID", "APPSECRET");
 //  设置频道号
request.setChannelId("频道号");
//   设置主持人名称
request.setPublisher("XXX");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的设置主持人名称方法获取请求结果对象
PLChannelCommonResult result = plChannelService.setChannelPublisher("用户ID", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

5、删除直播频道

//  创建删除频道请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelDeleteRequest request = new PLChannelDeleteRequest("APPID", "APPSECRET");
 //  设置用户ID
request.setUserId("USERID");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的删除频道方法获取请求结果对象
PLChannelCommonResult result = plChannelService.deleteChannel("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

6、设置频道号密码

//  创建设置频道密码请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelPasswordSetRequest request = new PLChannelPasswordSetRequest("APPID", "APPSECRET");
//   设置频道密码
request.setPasswd("123456");
 //  设置频道号
request.setChannelId("频道号");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的设置频道密码方法获取请求结果对象
PLChannelCommonResult result = plChannelService.setChannelPassword("USERID", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

7、设置后台回放开关

//  创建设置频道回放开关请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelPlaybackSetRequest request = new PLChannelPlaybackSetRequest("APPID", "APPSECRET");
//   设置回放开关(Y/N)
request.setPlayBackEnabled("Y");
 //  设置频道号
request.setChannelId("频道号");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的设置回放开关方法获取请求结果对象
PLChannelCommonResult result = plChannelService.setChannelPlayback("USERID", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

8、获取频道观看日志

//  创建频道观看日志请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelViewLogsGetRequest request = new PLChannelViewLogsGetRequest("APPID", "APPSECRET");
//   设置查询第几页
request.setPage(1);
//   设置每页显示数量
request.setPageSize(10);
//   设置查询当天日期(格式:yyyy-MM-dd)
request.setCurrentDay("2018-03-06");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的频道观看日志方法获取请求结果对象
PLChannelViewLogsGetResult result = plChannelService.getChannelViewLogs("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

9、获取频道直播状态

//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的频道直播状态方法获取直播状态(result)----- 流名可以通过获取直播信息接口获取
String result = plChannelService.getChannelLiveStatus("流名");

10、获取按频道汇总统计的播放数据

//  创建获取按频道汇总统计的播放数据请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelSummaryListGetRequest request = new PLChannelSummaryListGetRequest("APPID", "APPSECRET");
//   查询时间段的开始日期
request.setStartDate("2017-01-22");
//   查询时间段的结束日期
request.setEndDate("2018-01-22");
//   查询频道号(非必须设置, 多频道使用逗号隔开)
request.setChannelIds("频道号");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的获取按频道汇总统计的播放数据方法获取请求结果对象
PLChannelSummaryListGetResult result = plChannelService.getChannelSummaryList("USERID", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

11、获取多个频道观看页人数接口

//  创建获取多个频道观看页人数接口请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelViewersGetRequest request = new PLChannelViewersGetRequest("APPID", "APPSECRET");
//   设置频道号(同时查询多个频道号使用逗号隔开)
request.setChannelIds("频道号");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的获取多个频道观看页人数接口方法获取请求结果对象
PLChannelViewersGetResult result = plChannelService.getChannelViewers(request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

12、获取频道信息接口

//  获取频道信息接口请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelGetRequest request = new PLChannelGetRequest("APPID", "APPSECRET");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的获取频道信息接口方法获取请求结果对象
PLChannelGetResult result = plChannelService.getChannel("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

13、获取频道录制文件信息接口

//  获取频道录制文件信息请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelRecordFilesGetRequest request = new PLChannelRecordFilesGetRequest("APPID", "APPSECRET");
request.setUserId("用户ID");
// 查询开始日期
request.setStartDate("2017-11-00");
// 查询结束日期
request.setEndDate("2018-05-00");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的获取频道录制文件信息接口方法获取请求结果对象
PLChannelRecordFilesGetResult result = plChannelService.getChannelRecordFiles("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

14、直播录制文件转存点播接口

//  获取频道直播录制文件转存点播请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelRecordFileConvertRequest request = new PLChannelRecordFileConvertRequest("APPID", "APPSECRET");
request.setUserId("用户ID"); 
// 从录制文件接口获取的录制文件信息中的文件url
request.setFileUrl("http://rflive.videocc.net/6dd9ef824d20170517181045487/recordf.6dd9ef824d20170517181045487_20180411200736.mp4");
// 转存文件名
request.setFileName("录制文件");
// 转存点播对应的目录
request.setCataid("目录ID");
// 转存点播对应的目录名
request.setCataname("目录名");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的直播录制文件转存点播接口方法获取请求结果对象
PLChannelCommonResult result = plChannelService.convertChannelRecords("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

15、 频道录制文件合并接口

//  频道录制文件合并接口请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelRecordFileMergeRequest request = new PLChannelRecordFileMergeRequest("APPID", "APPSECRET");
// 合并文件地址(通过逗号相连)
request.setUrls("http://rflive.videocc.net/a.mp4,http://rflive.videocc.net/b.mp4");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的合并录制文件的方法获取请求结果对象
PLChannelCommonResult result = plChannelService.mergeChannelRecords("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

16、获取频道回放列表接口

//  获取频道回放列表请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelPlaybackListGetRequest request = new PLChannelPlaybackListGetRequest("APPID", "APPSECRET");
// 设置查询页数
request.setPage(1);
// 设置每页显示多少条
request.setPageSize(5);
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的获取频道信息接口方法获取请求结果对象
PLChannelPlaybackListGetResult result = plChannelService.getChannelPlaybacks("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

17、删除频道回放视频接口

//  删除频道回放视频请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelPlaybackDeleteRequest request = new PLChannelPlaybackDeleteRequest("APPID", "APPSECRET");
// 要删除频道回放视频ID
request.setVideoId("698f979a78");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的删除频道回放视频接口方法获取请求结果对象
PLChannelCommonResult result = plChannelService.deletePlaybackVideo("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

18、回放列表设置默认回放视频接口

//  设置默认回放视频请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelPlaybackSetDefaultRequest request = new PLChannelPlaybackSetDefaultRequest("APPID", "APPSECRET");
// 设置为默认回放的视频ID
request.setVideoId("698f979a78");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道接口对象的设置默认回放视频接口方法获取请求结果对象
PLChannelCommonResult result = plChannelService.setPlaybackListDefault("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

19、频道设置点赞数和观看人数接口

//  设置设置点赞数和观看人数请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelLikesUpdateRequest request = new PLChannelLikesUpdateRequest("APPID", "APPSECRET");
// 设置点赞数
request.setLikes(3233);
// 设置观众数
request.setViewers(333);
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道设置点赞数和观看人数接口方法获取请求结果对象
PLChannelCommonResult result = plChannelService.updateLikes("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

20、获取频道某段时间的直播统计数据接口

//  设置频道某段时间的直播统计数据请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelDailySummaryRequest request = new PLChannelDailySummaryRequest("APPID", "APPSECRET");
// 设置查询数据的开始时间和结束时间
request.setStartDay("2018-01-01");
request.setEndDay("2018-07-01");
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用频道频道某段时间的直播统计数据接口方法获取请求结果对象
PLChannelDailySummaryResult result = plChannelService.getChannelDailySummary("频道号", request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

21、获取简单的频道列表接口

//  设置获取简单的频道列表请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelManagementListRequest request = new PLChannelManagementListRequest("APPID", "APPSECRET");
// 设置为当前第几页以及每页显示的数量
request.setPage(1);
request.setPageSize(5);
//  频道接口对象
PLChannelService plChannelService = new PLChannelServiceImpl();
//  调用获取简单的频道列表接口方法获取请求结果对象
 PLChannelManagementListResult result = plChannelService.getSimpleChannelList(request);
//  成功响应
if(null != result && 200 == result.getCode()) {
        ...     //业务流程
}

22、获取频道菜单列表接口

//  设置获取频道菜单列表请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelMenuListGetRequest request = new PLChannelMenuListGetRequest("APPID", "APPSECRET", 频道号);
//  频道菜单接口对象
PLChannelMenuService plChannelMenuService = new PLChannelMenuServiceImpl();
//  调用获取频道菜单列表接口方法获取请求结果对象
PLCommonListResult<ChannelMenu> result = plChannelMenuService.getMenus(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

23、通过菜单ID设置频道菜单接口

//  通过菜单ID设置频道菜单请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelMenuSetRequest request = new PLChannelMenuSetRequest("APPID", "APPSECRET", "菜单ID", "菜单内容");
//  频道菜单接口对象
PLChannelMenuService plChannelMenuService = new PLChannelMenuServiceImpl();
//  通过菜单ID设置接口方法获取请求结果对象
PLCommonResult result = plChannelMenuService.setMenuById(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

24、获取用户分钟数接口

//  设置获取用户分钟数请求对象(并传入直播账号的APPID和APPSECRET)
PLUserDurationsGetRequest request = new PLUserDurationsGetRequest("APPID", "APPSECRET");
//  用户接口对象
PLUserService plUserService = new PLUserServiceImpl();
//  获取用户分钟数接口方法获取请求结果对象
PLUserDurationsGetResult result = plUserService.getDurations(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

25、获取频道打赏设置接口

//  设置获取频道打赏设置请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelDonateGetRequest request = new PLChannelDonateGetRequest("APPID", "APPSECRET");
// 频道号可设置可不设置(不传为获取全局设置,否则为当前生效设置)
request.setChannelId(频道号);
//  频道打赏接口对象
PLChannelDonateService plChannelDonateService = new PLChannelDonateServiceImpl();
//  获取频道打赏设置请求结果对象
PLChannelDonateGetResult result = plChannelDonateService.getDonateSetting(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

26、频道现金打赏设置接口

//  创建频道现金打赏设置请求对象(并传入直播账号的APPID和APPSECRET)
Double minCash = 0.01d; // 现金打赏最小金额
List<Double> cashes = Arrays.asList(new Double[]{111d, 112d, 113d, 114d, 115d, 116d}); // 现金打赏列表对象
PLDonateCashSetRequest request = new PLDonateCashSetRequest("APPID", "APPSECRET", 频道号, cashes, minCash);
//  频道打赏接口对象
PLChannelDonateService plChannelDonateService = new PLChannelDonateServiceImpl();
//  频道现金打赏设置请求结果对象
PLCommonResult result = plChannelDonateService.setDonateCash(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

27、频道道具打赏设置接口

//  获取频道打赏设置接口对象
PLChannelDonateService plChannelDonateService = new PLChannelDonateServiceImpl();
// 执行获取频道打赏接口
int channelId = xxxx;
PLChannelDonateGetRequest request = new PLChannelDonateGetRequest("APPID", "APPSECRET");
request.setChannelId(channelId);
PLChannelDonateGetResult result = plChannelDonateService.getDonateSetting(request);
// 响应成功
if (result.isRequestOk()) {
    // 从打赏接口中获取打赏道具列表对象
    List<DonateGoods> goods = result.getGoods();
    // 具体参数设置
    DonateGoods goods1 = goods.get(0);
    goods1.setGoodPrice(new BigDecimal(2000d));
    //  获取频道道具打赏请求对象(并传入直播账号的APPID和APPSECRET)
    PLDonateGoodsSetRequest request1 = new PLDonateGoodsSetRequest("APPID", "APPSECRET", channelId, goods);
    //  频道道具打赏请求结果对象
    PLCommonResult result1 = plChannelDonateService.setDonateGoods(request1);
    //  成功响应
    if(result1.isRequestOk()) {
         ...     //业务流程
    }

28、获取频道点赞数和历史观看人数接口

//  设置获取频道点赞数和历史观看人数请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelLikesGetRequest request = new PLChannelLikesGetRequest("APPID", "APPSECRET");
//设置频道号(多个频道通过逗号隔开)
request.setChannelIds("频道号");
//  频道接口对象
PLChannelService service = new PLChannelServiceImpl();
//  调用获取点赞数和历史观看人数接口方法并请求结果对象
PLChannelLikesGetResult result = service.getLikes(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

29、合并一段时间录制MP4文件接口

//  设置合并一段时间录制MP4文件请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelRecordMergeMp4Request request = new PLChannelRecordMergeMp4Request("APPID", "APPSECRET");
//设置频道号
request.setChannelId("频道号");
// 设置文件名
request.setFileName("文件名");
// 设置录制文件开始时间和结束时间(通过这个查询一段时间的录制文件用于合并)
request.setEndTime("结束时间戳");
request.setStartTime("开始时间戳");
// 设置回调地址
request.setCallbackUrl("http://www.polyv.net/callback");
//  频道录制接口对象
PLChannelRecordService recordService = new PLChannelRecordServiceImpl();
//  调用合并一段时间录制MP4文件方法并请求结果对象
PLChannelRecordMergeMp4Result result = recordService.mergeMp4(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

30、通过ID获取录制文件信息接口

//  设置通过ID获取录制文件信息请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelRecordGetRequest request = new PLChannelRecordGetRequest("APPID", "APPSECRET");
//设置频道号
request.setChannelId("频道号");
// 设置文件ID
request.setFileId("文件ID");
// 获取频道录制接口对象
PLChannelRecordService recordService = new PLChannelRecordServiceImpl();
//  调用通过ID获取录制文件信息接口方法并请求结果对象
PLChannelRecordGetResult result = recordService.get(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

31、获取频道的子频道列表接口

//  获取频道的子频道列表请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelAccountsGetRequest request = new PLChannelAccountsGetRequest("APPID", "APPSECRET");
// 获取频道的子频道接口对象
PLChannelAccountService service = new PLChannelAccountServiceImpl();
//  调用获取频道的子频道列表接口方法并得到结果对象
PLCommonListResult<ChannelAccount> result = service.getAccounts(频道号, request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

32、设置频道的自定义菜单接口

//  获取设置频道的自定义菜单请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelCustomMenuSetRequest request = new PLChannelCustomMenuSetRequest("APPID", "APPSECRET", "菜单内容");
// 获取频道的菜单接口对象
PLChannelMenuService service = new PLChannelMenuServiceImpl();
//  调用设置频道的自定义菜单接口方法并得到结果对象
PLCommonResult result = service.setCustomMenu(频道号, 用户ID,request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

33、禁止频道推流

//  获取频道流公共请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelStreamCommonRequest request = new PLChannelStreamCommonRequest("APPID", "APPSECRET");
// 获取频道流处理接口对象
PLChannelStreamService service = new PLChannelStreamServiceImpl();
//  调用禁止频道推流接口方法并得到结果对象
PLCommonResult result = service.cutoff(频道号, request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

34、恢复频道推流

//  获取频道流公共请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelStreamCommonRequest request = new PLChannelStreamCommonRequest("APPID", "APPSECRET");
// 获取频道流处理接口对象
PLChannelStreamService service = new PLChannelStreamServiceImpl();
//  调用恢复频道推流接口方法并得到结果对象
PLCommonResult result = service.resume(频道号, request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

35、获取广告轮播列表

//  获取频道广告轮播列表请求对象(并传入直播账号的APPID和APPSECRET)
PLChannelAdvertListGetRequest request = new PLChannelAdvertListGetRequest("APPID", "APPSECRET", 频道号);
// 获取频道广告接口对象
PLChannelAdvertService service = new PLChannelAdvertServiceImpl();
//  调用获取频道轮播广告列表接口方法并得到结果对象
PLCommonListResult<ChannelAdvert> result = service.getAdvertList(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

36、创建并初始化频道

// 创建请求参数json对象
PLChannelBasicCreateBody body = new PLChannelBasicCreateBody();
// 构建请求体json接口basicSetting
PLChannelBasicSettingCreateBody basicSetting = new LChannelBasicSettingCreateBody();
// 设置频道名称
basicSetting.setName("频道名称");
// 设置密码
basicSetting.setChannelPasswd("频道密码");
// 设置观看人数
basicSetting.setMaxViewer(最大观看人数);
// 设置开始时间,13位时间搓
basicSetting.setStartTime(开始时间);
// 设置主持人昵称
basicSetting.setPublisher("主持人");
// 加入到请求对象body
body.setBasicSetting(createBody);
// 构建创建频道并初始化请求request对象
PLChannelBasicCreateRequest request = new PLChannelBasicCreateRequest("APPID","APPSECRET",body);
// 构建请求service,用户把请求数据发送到服务器
PLChannelBasicService service = new PLChannelBasicServiceImpl();
// 发送请求数据到服务器并返回数据
PLChannelBasicCreateResult result = service.createChannel(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}

37、修改频道详细设置

// 更新频道请求参数json对象
PLChannelBasicUpdateBody body = new PLChannelBasicUpdateBody();
// 构建请求体json接口updateBody
PLChannelBasicSettingUpdateBody updateBody = new PLChannelBasicSettingUpdateBody();
// 设置频道名称
updateBody.setName("频道名称");
// 设置直播开始时间
updateBody.setStartTime("开始时间");
// 设置频道主持人
updateBody.setPublisher("主持人");
// 设置到请求体中
body.setBasicSetting(updateBody);
// 构建请求体中
PLChannelBasicUpdateRequest request = new PLChannelBasicUpdateRequest("APPID","APPSECRET", 频道号, body);
// 构建请求service,用户把请求数据发送到服务器
PLChannelBasicService service = new PLChannelBasicServiceImpl();
// 发送请求数据到服务器并返回数据
PLChannelCommonResult channel = service.updateChannel(request);
//  成功响应
if(result.isRequestOk()) {
        ...     //业务流程
}
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

直播观看小程序开发

播放界面


开发前准备

1.小程序微信开发者后台设置-开发设置-服务器域名中配置 [request合法域名]


开始开发


1.获取频道直播播放地址

index.wxml

<view class="video-box">
    <live-player id="polyvLiveVideo" class="vp-v" src="{{video.src}}" autoplay></live-player>
</view>

index.js

//引用polyvlive.js
import polyvLive from '../../utils/polyvlive.js';

//设置频道信息
var liveUid = "e3wx706i3v";
var liveVid = "103915";
var liveVideoContext = wx.createLivePlayerContext('polyvLiveVideo');

polyvLive.getVideo({
    uid: liveUid,
    vid: liveVid,
    videoContext: liveVideoContext,
    success: (videoInfo) => {
      // set video src and poster
      this.setPlayerSrc(videoInfo);
    },
    error: (res) => {
      //console.log(res.error);
    },
    onStartLive: ()=>{
      // set latest video src
      this.setNewPlayerSrc();
    }
});

setNewPlayerSrc() {
    polyvLive.getNewVideo((videoInfo)=>{
        this.setPlayerSrc(videoInfo);
    });
}

setPlayerSrc(videoInfo) {
    this.setData({
        video: {
            src: videoInfo.flvSrc,
            poster: videoInfo.poster
        }
    });
}

选项说明

uid

类型:String
说明:直播账户id

vid

类型:String
说明:直播频道id

videoContext

类型:String
说明:视频组件控制,详情查看

params

类型:object
说明:播放日志参数,可设置值并且直播后台观看日志查询中显示对应字段名称如下

参数值可选 说明
param1 用户ID
param2 昵称

success(videoInfo)

类型:Function
说明:获取视频信息成功时触发

参数:videoInfo
参数类型:object
参数说明:

参数 参数说明
src 视频m3u8播放地址,获取成功后设置为video组件的src
flvSrc 视频flv播放地址,获取成功后设置为live-player组件的src
poster 视频封面
title 视频标题
waitImage 暖场图片/暖场视频,以返回链接后缀判断图片/视频类型
logoImage logo图片地址
logoHref logo的点击跳转链接
logoPosition logo位于播放器位置
logoOpacity logo透明度

error(res)

类型:Function
说明:获取视频信息失败时触发

参数:res
参数类型:object
参数说明:

参数 参数说明
code 错误状态码
error 错误详细说明

onApiStatus(status)

类型:Function
说明:获取视频直播/结束状态

参数:status
参数类型:String
参数说明:

参数 参数说明
live 直播正在进行
end 直播结束

onStartLive ()

类型:Function
说明:直播从结束状态切换至开始状态触发

2.绑定播放进度变化
//事件处理函数
timeUpdate: function(e) {
    //bind timeUpdate Event
    polyvLive.timeUpdate(e);
}

ps:注意播放进度绑定事件中e参数为必须项 (若使用live-player组件则不需绑定)

3.销毁播放器
//页面处理函数
onUnload() {
    polyvLive.destroy();
}

注意事项

使用live-player组件有类目限制,需要先通过类目审核
1536218165(1)
然后需要在小程序管理后台,“设置”-“接口设置”中自助开通该组件权限
1536218076(1)

sdk默认使用live-player组件,使用flv拉流地址

setPlayerSrc(videoInfo) {
    this.setData({
      video: {
        src: videoInfo.flvSrc, // videoInfo.flvSrc返回flv地址
        poster: videoInfo.poster
      }
    });
  }

如果所用小程序组件为video,则需要设置播放地址为m3u8

<view class="video-wrap">
    <view class="video-box">
        <video id="polyvLiveVideo" class="vp-v" src="{{video.src}}" controls autoplay></video>
    </view>
</view>
setPlayerSrc(videoInfo) {
    this.setData({
      video: {
        src: videoInfo.src, // videoInfo.src返回m3u8地址
        poster: videoInfo.poster
      }
    });
  }

小程序直播sdk下载

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

聊天室小程序SDK

一、登录微信公众平台,配置合法域名

1、填写: request 合法域名:https://apichat.polyv.net
2、填写: socket 合法域名:wss://chat.polyv.net
3、操作截图:

webapp

二、POLYV小程序聊天室SDK调用

1、POLYV小程序聊天室SDK下载

2、压缩包解压缩后,在项目目录中.js文件中引入polyvSocket.js


小程序项目生成不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS 样式文件 .js 后缀的 JS 脚本逻辑文件
(1)socket聊天室插件引用示例
//引入socket插件
const polyvSocket = require('polyvSocket.js');

//获取微信昵称、头像图片,openID等用户信息后嵌入聊天室

/*示例用户信息*/
var user = ["nickName","http://livestatic.videocc.net/v_84/assets/wimages/missing_face.png",13478930214];
var vid = "126076";//频道号

/*设置socket连接信息回调*/
polyvSocket.onMessage(function (type, data) {
       /*参数说明*/
       //type  信息类型,如getHistory 获取回看信息
       //data  数据体
}

/*登录聊天室*/
polyvSocket.loginRoom(vid, user, function (type, data) {
    //登录成功回调
});
(2)插件接口详解
接口名 参数 说明 备注
loginRoom roomId, user, callback 登录聊天室
sendMsg msg 聊天信息发送
onMessage Callback(type,data) 聊天信息接收
getHistoryContent / 获取历史聊天信息
prettyTime time 时间格式化
leavePage / 聊天室离开
(3)socket聊天室事件调用
登录聊天室 loginRoom
var vid = "126076";

var user= ["nickName","http://livestatic.videocc.net/v_84/assets/wimages/missing_face.png",13478930214];//学员信息昵称,头像,openID

polyvSocket.loginRoom(vid, user, function (type, data) {
//登录成功回调
});
聊天信息发送 sendMsg
polyvSocket.sendMsg("这是第一条发送的聊天信息");
聊天信息接收 onMessage
polyvSocket.onMessage(function (type, data) {
//聊天信息接收
});
消息类型
类型 type 数据 data 说明
LOGIN / 登录成功
GETHISTORY [{class:"clearfix right",content:"明年",showTime:"9小时前",time:1510160275411},user:{clientIp:"",nick:"tom",pic:""..}] 历史聊天信息
SPEAK {EVENT:"SPEAK",content:"ad",id:"8d6b9160-c4f8-11e7-b7d0-0b202d613fb3",showTime:undefined,time:1510195746166,user:{clientIp:"",nick:"tom",pic:""..}} 发言
获取历史聊天信息 getHistoryContent
//执行该接口,如上回调GETHISTORY聊天信息
polyvSocket.getHistoryContent();
时间格式化 prettyTime
//换算为36秒前等显示格式
polyvSocket.prettyTime(1510195746166);
聊天室离开 leavePage
//关闭页面时断开socket连接
polyvSocket.leavePage();
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...