js-sdk接入和url接入,两种接入方式最后的呈现的内容并无区别,区别在于适用于不同的技术场景,客户的技术开发团队可根据具体需要进行选择。<script src="https://wwwr.plaso.cn/static/sdk/js/plaso_upime_player-1.7.js" />
<link
rel="stylesheet"
href="https://wwwr.plaso.cn/static/sdk/css/plaso_upime_player-1.7.css"
/>
<script>
let canPlay = false;
let currentTime;
let duration;
let playing = false;
const sdkPlayer = new PlasoUpimePlayer(document.getElementById("playerdiv"));
sdkPlayer.setSrc(query);
sdkPlayer.on("canplay", () => {
canPlay = true;
duration = sdkPlayer.duration; // canplay事件触发时才能获取到duration
sdkPlayer.on("timeupdate", () => {
// 监听timeupdate事件获取currentTime更新进度条长度,也可以自己设置定时器读取sdkPlayer.currentTime
currentTime = sdkPlayer.currentTime;
console.log("currentTime =", currentTime);
});
sdkPlayer.on("ended", () => {
console.log("play end");
});
});
// 播放
function play() {
if (!canPlay) {
return;
}
if (sdkPlayer.ended) {
sdkPlayer.currentTime = 0;
}
sdkPlayer.play().then(() => {
playing = true;
});
}
// 暂停
function pause() {
sdkPlayer.pause().then(() => {
playing = false;
});
}
// 快进 (单位s)
function seekTo(time) {
sdkPlayer.currentTime = time;
}
</script>PlasoUpimePlayer 是播放器类,播放 SDK 视频时需要先 new 一个 sdkPlayer 对象。| 函数名 | 定义 | 说明 |
|---|---|---|
| constructor | (outBorder: HTMLElement) => void | 构造函数outBorder: dom 对象,用来装载 SDK 视频内容 |
| setSrc | (query: string, option?: Object) => void | 设置播放路径,视频加载成功时会触发 "canplay" 事件,那时才可以正常播放query: appId、recordId 等参数签名后生成的字符串(历史课堂保存到自己存储的可以不需要 query,只传空字符串)option: 设置额外的参数,包括传入 timer、audioObject 等,详见 option 参数说明 |
play | () => Promise | 播放 当未设置播放路径、未加载完成时返回结果将是 rejected ended 属性为 true 时调用 play() 的返回结果也是 rejected,需要先设置 currentTime 到可播放的点 |
pause | () => Promise | 暂停 |
resize | () => void | 调整大小。装载 SDK 视频内容的容器 div 的大小发生变化时需要调用 resize 方法重新调整视频大小 |
on | (eventName: string, callback: Function) => void | 增加事件回调 |
off | (eventName: string, callback: Function) => void | 取消事件回调callback: 之前调用 on 方法绑定过的、待取消的事件回调函数 |
destroy | () => void | 销毁播放器 |
| 属性名 | 类型 | 说明 |
|---|---|---|
currentTime | double | SDK 视频当前播放时间,以秒(s)为单位。当对该属性赋值时可以调整当前播放时间 |
duration | double | SDK 视频的总时长,以秒(s)为单位 |
ended | boolean | 当前是否已经播放到结尾 当触发 ended 事件时 ended 属性将变成 true,此时调用 play() 方法将返回 rejected 重新设置 currentTime 后 ended 属性将变成 false |
| 事件名 | 说明 | 返回值 |
|---|---|---|
canplay | SDK 视频内容加载完成事件,没有加载完成时无法播放 SDK 视频内容 | - |
timeupdate | 视频播放时间变化时触发 | time: 当前播放时间,对应 currentTime |
ended | 当视频播放到结尾时触发 | - |
click | 当播放器产生没有鼠标移动的点击事件时触发。用户也可以自行在装载 SDK 视频内容的 outBorder 元素上绑定 click 事件,当 SDK 视频中带有可拖动的视频人像,拖动、缩放人像视频大小也会触发 click 事件,用户需要判断自己监听的 click 事件触发时鼠标是否在移动 | - |
| 属性名 | 类型 | 描述 | 版本 |
|---|---|---|---|
| timer | { currentTime: () => number } | 当用户需要自己播放多媒体,需要提供timer对象供upime同步用 | |
| audioObject | { src: string; duration: number } | 当传入audioObject时,播放器在播放时将同时播放audioObject指定的音频文件,在音频正常播放时sdk视频的播放时间将和音频播放的时间保持同步。src: 音频的url路径。如果音频文件为m3u8类型,还需要引入https://wwwr.plaso.cn/static/sdk/js/hls.jsduration: 音频文件时长(目前sdk视频的duration依然以sdk服务器录制的内容的duration为准) | |
| getFileName | (filename: string, isPublic: boolean) => Promise<string> | 如果历史课堂保存到自己存储,需要在option中需要传入getFileName方法。该方法用来返回历史课堂目录下每个文件的访问地址。filename: string类型。文件相对于历史课堂目录的相对地址isPublic: boolean类型。isPublic=true表示希望得到该文件公开的访问地址,即不需要签名、没有有效期的地址返回值: promise的结果为文件访问地址 | |
| getExtFileName | (info: Array) => Promise<string> | 如果历史课堂包含从资料中心插入的资源,需要传入getExtFileName,详见云盘接入 | |
| getPreParseFileName | (info: Array, option: { suffix: string }) => Promise<string> | 如果历史课堂包含从资料中心插入的预解析资源,需要传入getPreParseFileName,详见云盘接入 | 1.60.116 |
https://wwwr.plaso.cn/static/sdk/styleupime/${SDK_VERSION}/?| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 应用id, 由伯索分配; |
| appType | string | 是 | 应用类型,目前播放场景下固定值为player |
| recordId | string | 是 | 同一个meetingId有可能会产生多个历史课堂,用此recordId标记; |
| meetingId | string | 否 | 课堂ID,唯一标识该课堂;使用ASSIIC字符,不得包含/空格等; |
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| showType | number | 否 | 1/2/40(1-仅头像播放/2-仅白板播放/40-头像+白板播放,可选参数) |
| avatarHeight | number | 否 | 头像+白板播放时的自定义头像高度,可选参数),只有showType传参为40的情况下,该参数才会生效,最小值90,小于90时头像不会再变小,无最大值,当头像高度设置的值大于当前播放器的高度时,头像的高度会跟播放器的高度一致 |
