Live Js Api
类
概述
PolyvLiveSdk 是用于创建SDK实例的类
应用场景:当自己实现聊天室的功能时,可以使用到这两个属性
类属性
emotionLists
polyv 表情数据列表
array
已废弃
emotionSearch
键值对为 [表情title
]: 表情url
的对象
object
已废弃
emotionLists 与 emotionSearch 已废弃不再维护,请使用 保利威表情 SDK 转换消息的表情内容。
全部表情 sprites 图片地址: https://livestatic.polyv.net/assets/images/em/default.png
类方法
getChannelInfo
获取频道信息
见下方示列代码块
previewPPT
预览指定的ppt
见下方示列代码块
实例
概述
var liveSdk = new PolyvLiveSdk({}) // 创建sdk实列
实例属性
属性名
必选
类型
可选值
默认值
说明
channelId
是
string
频道id, 支持云课堂/直播助手/大班课发起的直播
timestamp
是
number
POLYV 频道信息获取接口用到的时间戳 注:该时间戳需要与服务器端获取的签名一样
appId
是
string
POLYV账号 appId,从 POLYV 后台获取
user
是
object
{user: string; userName: string; pic: string}
{
userId: '', // 用户id
userName: '', // 用户昵称
pic: '' // 用户头像,必须为是http/https/ // 开头链接
}
userId
是聊天室中的用户唯一标识,两个相同的 userId
登入聊天室后,后者会将前者踢出聊天室,因此不同的聊天室用户的 userId
需要具有唯一性,生成建议如下:
1. 如果您有用户系统,则使用用户系统中的用户 id 作为登入聊天室的 userId
2. 如果您没有用户系统,则在后端生成高度随机的值作为登入聊天室的 userId
,如:「时间戳 +5 位随机数」、uuid 等,并将该 userId
保存到 cookie 或本地存储(localStorage 或 sessionStorage)中,避免每次刷新页面后重新生成 userId
updatePageview
否
boolean
false
设置后每当调用实例polyv的观看页上的累计观看人数会增加一个
chat
否
boolean
true
是否连接聊天室,在直播模式下如果调用直播播放器必须连接聊天室,所以即使设置为false
,在初始化直播播放器时会自动连接聊天室,回放模式下可以不连接
keepChatDisabled
否
boolean
false
直播模式是否保持不连接聊天室,在chat: false
设置后回放的场景会不连接聊天室,直播时会连接聊天室,如果需要在直播时需要保持聊天室关闭可设置该参数。需要注意的是设置后需要依赖聊天室信令的功能会不可用,如PPT、无延迟、连麦、互动功能等,chat: false
设置后该参数才会生效
lang
否
string
'zh_CN' | 'en'
'zh_CN'
设置播放器语言 'zh_CN' : 中文 'en': 英文
param4
否
string
播放器统计参数 param1、param2,param3被预设为userId和userName以及直播状态,所以设置无效
param5
否
string
播放器统计参数
code
否
string
跑马灯的授权参数
socket
否
object
此参数默认会创建socket,同时支持外部传入socket或聊天室sdk的socket 注:若使用聊天室sdk或者自行创建的聊天室,必须把实例出来的socket传入到此字段,不然会导致重复登录聊天室出现异常 使用方式:见如下示列
lotteryEnabled
否
string
'Y' | 'N'
设置为'N'时,进行普通抽奖时会过滤当前用户
直播sdk&聊天室sdk 示例代码(以polyv聊天室SDK为例)
实例方法
1.初始化播放器
说明:初始化播放器,必须在频道信息事件触发后调用参数:config
播放器配置对象
使用:liveSdk.setupPlayer(config: object)
示例代码:
参数说明:
el
是
string
id或class
讲师区域元素
pptEl
否
string
id或class
ppt 文档元素选择器,非云课堂(三分屏)可不填, 注:仅在三分屏生效
width
否
string | number
'100%'
讲师区域宽度
height
否
string | number
'100%'
讲师区域高度
pptWidth
否
string | number
'100%'
ppt区域宽度
pptHeight
否
string | number
'100%'
ppt区域高度
type
否
string
'auto' | 'live' | 'vod' | 'record'
'auto'
播放器播放类型,选择'auto'
后,播放器会以直播->回放列表视频->第一个暂存视频(优先级由大到小)的优先级播放
'auto'
: 根据频道实际设置自动选择播放类型
'live'
: 直播
'vod'
: 回放
'record'
: 暂存
pptType
否
string
'vod' | 'record'
'vod'
vodType
否
string
'playback' | 'vod'
设置播放回放类型。
用于type: 'vod'
模式下回放播放列表类型(playback
-回放列表,vod
-点播列表),设置为vod
后将使用点播播放器播放,使用点播vid播放,流量将统计到点播平台,所以vid为必填值,若设置type: 'auto'
,如果当前播放的是回放则按点播列表播放
vodToken
否
object
((vid: string, next: (data: VodToken) => void) => void) | VodToken
responseSettings
否
boolean
fasle
在设置自动播放模式type: 'auto'
时播放回放是否按照Polyv后台设置播放视频
autoplay
否
boolean
false
是否自动播放,移动端因为浏览器限制,可能不生效
audioMode
否
boolean
false
讲师画面以音频模式播放 注:仅在移动端生效
controller
否
boolean
true
是否显示控制栏 注:因为设备兼容问题,在移动端中建议显示控制栏
controllerPosition
否
string
'ppt' | 'player'
'ppt'
控制栏显示在哪个区域
'ppt'
: ppt区域
'player'
: 讲师区域
注:因为考虑到兼容的问题,该设置只在 PC 端的三分屏生效
fixedController
否
boolean
false
固定显示控制栏,设置后控制栏不跟随鼠标离开隐藏 注:仅在 PC 端生效
pptNav
否
boolean
true
是否显示ppt控制控件 注:仅在三分屏生效
pptNavBottom
否
string
ppt控制栏距离底部距离,例:pptNavBottom: '50px'
注:仅在三分屏生效
pptPlaceholder
否
boolean
false
是否在直播模式并且当前暂无直播时在ppt区域显示占位图 注:仅在三分屏生效
fileId
否
string
ppt数据id,回放模式必填
url
否
string
回放视频链接,回放模式必填
sessionId
否
string
clipSessionId
否
string
裁剪合并视频id
vid
否
string
回放id,回放模式下传入该参数,可不传fileId
、url
、sessionId
barrage
否
boolean
false
是否开启弹幕
defaultBarrageStatus
否
boolean
true
播放器加载时弹幕转台是否显示开启
switchPlayer
否
boolean
false
是否在控制栏显示ppt与player切换按钮,用于实现主副屏切换,需要监听player实例的'switchPlayer'
事件做处理,移动端不响应该事件
注:仅在三分屏生效
controllerEl
否
HTMLElement
控制栏区域,设置后控制栏不跟随ppt与播放器的位置,设置后点击全屏会将控制栏所在元素全屏,可以实现全屏后同时显示ppt与讲师 注:仅在三分屏生效
useH5Page
否
boolean
false
是否开启微信端H5page设置
fullscreenEl
否
HTMLELement
可设置点击控制栏全屏按钮进入全屏的元素,也可以使用liveSdk.player.setFullscreenEl(el?: HTMLElement): void
更新设置,el为空时则使用默认值
注:仅在PC端非IE的场景下生效
theme
否
object
设置部分播放器样式
{
playerBackgroundImage:'string' | false,// 讲师背景图,false 去掉默认背景图
playerBackgroundColor:'', // 讲师背景颜色(css颜色,如'red'、'#ffffff'、'rgb(0,0,0)'),注意设置后可能被背景图遮挡
pptBackgroundImage: '', // ppt背景图
pptBackgroundColor:'' // ppt背景颜色
}
showPPTFullscreenButton
否
boolean
false
是否在ppt中显示全屏按钮
该全屏效果只是实现页面全屏,可能会与页面本身样式有冲突导致全屏时样式异常,所以开发时如果用到该功能注意看看有没有样式冲突,有的话可监听liveSdk.player.on('PPTFullscreenChange')
事件进行调整
注:仅在移动端生效
warmUpImg
否
string
设置暖场图片
warmUpImgType
否
string
'contain' | 'cover'
'cover'
设置暖场图片的适配方式 'cover' : 拉伸覆盖 'contain' : 保持图片比例
warmUpImgBgColor
否
string
'#212121'
十六进制颜色值,当warmUpImgType设置为contain 时,设置图片未覆盖区域的颜色 注:仅在移动端生效
skinConfig
否
object
修改播放器非直播状态、音频模式、直播暂停时占位图
{
streamStop: '' , // 图片地址,用于修改暂无直播时居中图标
streamStopTxt: '', // 用于修改暂无直播时显示的文字,默认为'当前暂无直播',需要streamStop有效
streamPause: '', // 图片地址,用于修改直播暂停状态时居中图标
streamPauseTxt: '', // 用于修改直播暂停时显示的文字,默认为'休息一会 稍后继续',需要streamPause有效
audioMode: '', // 图片地址,用于修改音频模式时居中图标
audioModeTxt: '', // 用于修改音频模式时显示的文字,默认为'当前为音频模式',需要audioMode有效
audioModeVod: '', // 用于修改音频模式回放背景占位图,优先级低于audioMode
bgColor: '', // 设置streamStop, streamPause, audioMode后自定义的背景颜色
}
webviewAutoplay
否
boolean
false
webview场景支持自动播放(需要webview支持自动播放) 非webview场景也可以使用,强制自动播放,安卓端可能会有黑屏问题 注:仅在直播以及直播回放生效
speed
否
boolean
false
是否显示切换倍速控件
webPageFullScreen
否
boolean
false
是否开启网页全屏 注:仅在移动端生效
fullScreenOrientation
否
string
'portrait' \ 'landscape' \ 'none'
'none'
网页全屏方向 注:仅在移动端生效
2.重新加载播放器
说明:目前支持播放器播放类型为live
场景的使用,比如当前客户端没有推流,用户打开了页面,过一段时间后客户端开始推流可以调用该方法刷新播放器
使用:liveSdk.reloadPlayer(): void
示例代码:
3.设置token
说明:SDK设置接口token,用于一些互动的功能接口的请求,如点赞(调用点赞前需要调用此方法设置token)。
参数:token
获取方法
使用:liveSdk.setApiToken(token: string)
示例代码:
4.切换回放场次
说明:换回放场次,用于切换具体播放场次视频
参数:sessionData
需要播放场次的场次数据
使用:liveSdk.switchVod(sessionData: object)
回放操作demo
示例代码:
5.获取回放列表
说明:换回放场次,用于切换具体播放场次视频
使用:liveSdk.getPlaybackLists(page: number, pageSize: number, type: 'playback'|'vod' = 'playback): Promise
示例代码:
参数说明:
page
number
页数
pageSize
number
每页条数
type
string
playback: 回放列表 vod: 点播列表,点播列表需要用点播播放器播放
6.获取章节列表
说明:获取章节列表,仅在三分屏生效
使用:liveSdk.getChapterLists(fileId: string, type: string): Promise
示列代码:
参数说明:
fileId
string
ppt数据id
type
string
章节类型 playback:回放 record: 暂存
7.发送聊天消息
说明:发送聊天消息
使用:liveSdk.send(message: string, callback?: (data: string) => void): void
示列代码:
参数说明:
message
string
聊天内容
8.向讲师发送提问私聊信息
说明:向讲师发送提问私聊信息
使用:liveSdk.sendQuestion(message: string): void
示列代码:
参数说明:
message
string
私聊内容
9.发送答题卡回答内容
说明:发送答题卡回答内容
使用:liveSdk.sendAnswer(option: string, questionId: string, callback: Function): void
示列代码:
参数说明:
option
string
答题卡答案, 'A' | 'ABC'
questionId
string
答题卡题目id
callback
Function
发送成功回调
10.发送自定义消息
说明:发送自定义消息,聊天室会广播这些信息,由用户自行定义数据结构,除观看端外,其他端收到消息不会解析
使用:liveSdk.sendCustomMessage(messsage: object, callback?: (data: Object) => void): void
示例代码:
11.发送点赞消息
说明:发送点赞消息。【使用点赞方法前,需确保已经调用了 liveSdk.setApiToken()】
使用:liveSdk.sendLike(times: number): void
示例代码:
参数说明:
times
number
点赞数量,最大不能超过30
12.获取历史聊天记录
说明:获取历史聊天记录,参数非必传,默认10条,配合PolyvLiveSdk.EVENTS.HISTORY_MESSAGE
事件使用,收到事件可往聊天列表前面增加数据
使用:liveSdk.getHistoryMessage(pageNum: number, start: number): liveSdk
示例代码:
参数说明:
pageNum
number
需要获取的消息数量
start
number
代表距离最新一条聊天消息往前的第几条消息开始
13.销毁播放器
说明:销毁播放器
使用:liveSdk.destroy(disconnectSocket: boolean = true): void
示例代码:
参数说明:
disconnectSocket
boolean
是否断开 socket
14.发送签到
说明:发送签到
使用:liveSdk.toSign(checkinId: string, callback: Function): void
示例代码:
参数说明:
checkinId
string
签到id
callback
function
发送签到回调,返回的 code 的说明如下 200:签到成功 301:签到的用户没有登录聊天室 302:房间不在签到状态中 303:该用户已签到
15.发送问卷答案
说明:发送问卷答案
使用:liveSdk.sendQuestionnaireAnswer(questionnaireId: string, answer: [], callback: Function): void
示例代码:
参数说明:
questionnaireId
string
文件id
callback
function
发送回调 200:答题成功 301:问卷已结束 302:该学生已经提交过答案 303:用户未登录,也就是当前用户不在聊天室
16.查询当前频道直播状态
说明:查询当前频道直播状态,仅在开启直播录制时有效。
使用:liveSdk.getCloudClassRoomStatus(): Promise
示例代码:
17.修改昵称
说明:修改昵称,可监听PolyvLiveSdk.EVENTS.SET_NICK_STATUS
事件获取修改状态。
使用:liveSdk.setNick(newName: string): void
示例代码:
实例 player 对象
liveSdk.player
: 调用 setupPlayer
后创建的播放器实例,可用于控制播放器播放相关交互
对象属性
对象属性,什么时候可以获取到?
当调用 setupPlayer 后创建的播放器示例,才可以获取到的对象属性:currentTime、playbackRate、cameraStatus、supportFullScreen、fullScreen、barrageStatus、levels、level
需要等 loadedmetadata 事件后,才可以获取到的对象属性:duration、volume、paused、lines、line、currentPPTPage、totalPPTPages
示列代码:
duration
number
视频时长,单位:秒
currentTime
number
当前播放的进度
playbackRate
number
当前倍速
volume
number
当前音量
cameraStatus
boolean
当前讲师摄像头是否被关闭
paused
boolean
当前是否是暂停播放状态
supportFullScreen
boolean
是否支持全屏
fullScreen
object
播放器全屏实例,里面封装了进入全屏以及退出全屏的方法,可对于页面任意DOM操作
lines
number
当前频道有多少条线路,需要在loadedmetadata
时间后访问
line
number
当前播放的线路 0/1
currentPPTPage
number
当前展示的ppt页码,若当前显示PDF或者白板则返回1
totalPPTPages
number
当前使用的ppt总页数,若当前使用PDF或者白板则返回1
barrageStatus
boolean
当前弹幕状态
levels
number
当前的码率数,移动端暂不支持
level
number
当前的清晰度,0
/1
/2
递增,如果频道只有一个码率则返回0
,移动端暂不支持
#####全屏示例说明 liveSdk.player.fullScreen.request($dom: HTMLElement): void
:将指定元素进入全屏状态移动端中只在video中生效,具体需要看浏览器支持度 liveSdk.player.fullScreen.exit(): void
:退出全屏状态
示列代码:
对象方法
demo 示列代码:
setVolume
(volume: number)
设置播放器音量,范围[0, 1] 移动端无效,采用手机自带音量控制
play
恢复播放视频
pause
暂停播放视频
togglePlay
交替恢复暂停播放视频
resize
刷新ppt尺寸,播放期间如果对ppt容器尺寸有改变ppt尺寸可能异常,在改变尺寸后调用该方法恢复正常尺寸 直播中设置无效
seek
(time:number)
请求到指定播放进度,单位:秒
setRate
(rate: number)
切换倍速,可选0.5、1、1.25、1.5、2 (移动端受设备限制,不支持切换倍速) 直播中暂不支持切换倍数
switchCamera
(hide: boolean)
是否隐藏讲师摄像头
switchLine
(line: number)
切换当前线路,line由number 0
递增,代表线路1、线路2...
switchPPTDocMode
(control: boolean)
直播时切换ppt模式,设置true
ppt可由用户自己控制ppt内容,不跟随客户端控制(自由模式),反之。调用返回是否切换成功(跟随模式)
nextPPTPage
使ppt切换到下一页,跟随模式下不能切到讲师未讲解的ppt
prevPPTPage
使ppt切换到上一页
sendBarrage
(text: string, color: string)
发送弹幕text
为弹幕内容,color
为弹幕颜色,如'#ffffff'
;
必须设置barrage: true
hideBarrage
隐藏弹幕
showBarrage
恢复弹幕显示
toggleBarrage
交替隐藏弹幕
resizeBarrage
刷新弹幕尺寸,播放器尺寸更新时调用
switchLevel
(level: number)
切换清晰度,由0
递增
changePPTNavVisible
(hide: boolean)
隐藏显示PPT翻页控件
setFullscreenEl
(el: HTMLElement)
更新全屏元素设置,el为空时则使用默认值
对象事件
demo 示列代码:
playing
恢复播放
pause
暂停播放
timeupdate
播放进度更新
loadedmetadata
视频加载成功可以准备播放,可对播放器进行play()、pause()等操作
ended
播放结束
ratechange
倍速改变
volumechange
音量改变
lineChanged
线路改变
barrageStatusChange
弹幕状态改变,返回true
(开启弹幕)、false
(关闭弹幕)
switchPlayer
点击控制栏切换按钮触发,可用于切换ppt与讲师位置,切换样式需自身去实现
levelChanged
清晰度改变,返回切换后清晰度
error
视频播放错误
switchMainScreen
切换主副屏播放器回调,初始化播放器时会收到一次回调是当前初始值 'player' | 'ppt'
mutedAutoplay
静音自动播放回调,因为受限于浏览器自动播放策略,在不支持自动播放的时候会采取静音自动播放策略,这时会触发该事件,可用于对用户进行相应提示,让用户恢复音量
在非无延迟的pc端才支持
PPT操作相关事件
示列代码:
pptStatusChange
ppt状态改变,包括当前页数改变(ppt更换、ppt与白板切换 ),翻页,注意白板状态时不能翻页
whiteboardOpened
讲师打开白板
whiteboardClosed
讲师关闭白板,恢复为PPT
PPTFullscreenChange
ppt全屏状态变化,设置showPPTFullscreenButton: true
后才会触发
弹幕使用说明
需要自行监听聊天室的聊天消息事件,并调用
liveSdk.player.sendBarrage
方法发送弹幕弹幕显示在控制栏所在播放器,移动端固定显示在讲师画面那里
若播放器尺寸发生变化需要调用
liveSdk.player.resizeBarrage()
刷新弹幕
实例事件
事件方法
liveSdk.on(event: string, func: Function)
事件监听方法
示列代码:
绑定事件
示列代码:
解除事件绑定
示列代码:
事件列表
1.频道信息获取完成
示列代码:
data返回参数详情
channelId
number
直播频道ID
userId
string
直播用户ID
name
string
直播频道名称
desc
string
直播频道描述
publisher
string
主持人姓名
likes
number
当前点赞数
pageView
number
累计观看人数
coverImage
string
直播图标
status
string
直播状态 Y(当前正在直播)、N(当前暂无直播)
startTime
string
直播开始时间
stream
string
频道流名
roomId
string
聊天室的房间号,如果频道未分房间,则为频道号
scene
string
直播场景,alone(活动拍摄)、ppt(三分屏)、topclass(大班课)
splashEnabled
string
引导图开关,Y(开)、N(关)
splashImg
string
引导图片
warmUpImg
string
暖场图片地址
warmUpFlv
string
暖场视频地址
playbackEnabled
string
后台回放开关,Y(开)、N(关)
hasPlayback
boolean
是否有回放视频
sessionId
string
频道当前场次信息,若当前未直播,则返回上一场直播的场次id
watchStatus
string
观看页状态,live(直播中)、playback(回放中)、end(已结束)、waiting(未开始)
playbackOrigin
string
回放视频来源,后台设置的回放类型,record(暂存列表)、playback(回放列表)、vod(点播列表)
resolutionWidth
number
分辨率宽度
resolutionHeight
number
分辨率高度
country
string
城市
watchThemeModel
object
观看页主题信息 { pageSkin: string; defaultTeacherImage: string; watchLayout: 'ppt' | 'player' }
recordFileSimpleModel
object
频道录制文件, 没有录制视频时,该字段值为null { m3u8: string | null mp4: string | null fileId: string; channelSessionId: string; duration: number; [propName: string]: string | number | null }
channelMenus
Array
自定义菜单列表 [{ menuId: string, // 菜单id menuType: string, // 菜单类型 desc(直播介绍)、tuwen(图文直播)、quiz(咨询提问)、text(图文菜单)、chat(互动聊天)、iframe(推广外链) name: string, // 菜单名称 ordered: number, // 菜单排序,从1开始 content: string // 菜单内容 }]
2.回放章节初始化完成
示列代码:
3.流状态更新,可用来判断当前有无直播在推流
示列代码:
4.非本人的用户发言
示列代码:
5.本人的发言
示列代码:
6.发送提问消息回调
示列代码:
7.管理员或讲师回答提问
示列代码:
8.收到自定义消息
代码示列:
9.清除聊天记录回调
示列代码:
10.清除某一条聊天信息回调
示列代码:
11.获取历史聊天信息完成
示列代码:
12.发言失败
示列代码:
13.用户被禁止发言
示列代码:
14.用户被恢复发言
示列代码:
15.频道内用户登录事件
示列代码:
16.频道内用户退出事件
示列代码:
17.频道内用户踢出房间
示列代码:
18.当前用户被踢出房间
示列代码:
19.收到讲师发起签到消息
示列代码:
20.收到讲师停止签到消息
示列代码:
21.收到公告消息
示列代码:
22.删除公告消息
示列代码:
23.收到问卷消息
示列代码:
24.讲师停止问卷
示列代码:
25.获取问题内容
示列代码:
26.获取答题结果
示列代码:
27.停止答题
示列代码:
28.直播录制暂停
示列代码:
29.恢复录制
示列代码:
30.退出录制
示列代码:
31.下课/结束直播
示列代码:
32.修改昵称状态回调
示列代码:
33.点赞事件
示列代码:
34.最大并发登录事件
示列代码:
35.频道内同一用户重复登录事件
示列代码:
36.频道信息初始化失败回调
示列代码:
Last updated
Was this helpful?