0.5.6 • Published 11 days ago

kmqakj-study-player v0.5.6

Weekly downloads
-
License
-
Repository
-
Last release
11 days ago

介绍

  • kmqakj-study-player用于点播课的实时学时监管。
  • 如果您需要的是的无内置播放器的 SDK,请先安装好插件后再看文档最后的“无内置播放器 SDK”。

运行环境:

  • 主流的浏览器环境(edge、谷歌、火狐、safari 等),不支持在IE 浏览器中使用
  • 不支持在移动端的浏览器上使用,可能会出现交互异常
  • 支持 Vue、React 等主流框架,也可直接运行在原生 js 的项目上

微信小程序对接请看 微信小程序插件地址

内置验证规则

  • 小程序扫码人脸验证
  • 验证码验证
  • 活体验证
  • 滑块验证
  • 身份证后四位验证

安装

CDN

如果您的项目中没有使用模块化开发,请直接看cdn使用

npm

npm i kmqakj-study-player

yarn

yarn add kmqakj-study-player

pnpm

pnpm add kmqakj-study-player

使用

注意:请确保 dom 加载完成后再实例化插件!!!

模块化

import { KmqakjStudyPlayer, type Params } from "kmqakj-study-player";
import "kmqakj-study-player/dist/style.css";

const player = new KmqakjStudyPlayer(Option); // 具体参数看下方说明

cdn 使用

版本号可以自行更改,请保证使用的是最新的版本,最新版修复了一些问题

<link
  rel="stylesheet"
  href="https://unpkg.com/kmqakj-study-player@latest/dist/style.css"
/>
<script src="https://unpkg.com/kmqakj-study-player@latest/dist/index.iife.js"></script>
<script>
  const player = new KmqakjStudy.KmqakjStudyPlayer(Option);
</script>

参数详解

Option

类型定义如下:

interface Option {
  id: string;
  color?: string;
  baseUrl: string;
  params: Params;
}

各字段描述如下:

字段类型描述是否必传
idString容器盒子的 id,该元素必须手动设置宽高,请确保该在该 dom 渲染完成后再去实例化插件
colorString主题颜色,支持 css 的颜色值
baseUrlString服务器接口地址,如:http://loacalhost:3000
paramsObject见下方 params 描述

params

类型定义如下:

interface Params {
  videoUrl: string;
  appKey: string;
  courseCode: number | string;
  courseName: string;
  duration:number
  durationAll: number;
  planCode: number | string;
  planName: string;
  sectionCode: number | string;
  sectionName: string;
  trainPostCode: string | number;
  trainPostName: string;
  trainTypeEnum: "SEND_JXJY" | "SEND_GQPX";
  idCard: string;
  studentName: string;
  studyInfoLogId?: number | string;
  schoolCode?: string;
}

各字段描述如下:

字段类型描述是否必传
videoUrlString视频播放的地址
appKeyString学时监管的 appkey,授权使用
courseCodeString | Number课程 id
courseNameString课程名称
durationNumber当前视频时长
durationAllNumber该岗位的需修学时
planCodeString | Number计划 id
planNameString计划名称
sectionCodeString | Number课程小节 id
sectionNameString课程小节名称
trainPostCodeString | Number培训岗位 code
trainPostNameString培训岗位名称
trainTypeEnumString培训类型(值只能是下面两个)
'SEND_JXJY'继续教育
'SEND_GQPX'岗前培训
idCardString学员身份证
studentNameString学员姓名
studyInfoLogIdNumber | String学习日志 id(有异常的学时记录,再次观看需要传该字段)
schoolCodeNumber | String机构 code
studyIdNumber | String学员 id

方法

destroy

此方法用于销毁播放器。以下是在vue3的使用示例:

onBeforeUnmount(() => {
  player?.destory();
  player = null;
  return true;
});

事件

使用示例:

import { KmqakjStudyPlayer, Event } from "kmqakj-study-player";
// cdn引用的Event直接使用KmqakjSdk.Event
const player = new KmqakjStudyPlayer(Option);
player.on(Event.PLAY, () => {
  console.log("player");
});

Event 参数说明:

事件名称描述
PLAY视频播放触发
PAUSE视频暂停触发
END视频播放结束触发
ERROR视频播放错误触发

Event.ERROR说明:

player.on(Event.ERROR, (code: number) => {
  console.log(code);
});
code描述
1001资源请求被用户终止
1002媒体请求网路错误
1003媒体解码出错
1004媒体资源格式不支持播放
1005解封装过程出错
1006重封转出错
1007hls 解析错误
1008MSE 出错

无内置播放器 SDK

无内置播放器SDK只提供了一些方法,界面需要自行开发。

基础使用

模块化使用

import { KmqakjStudySDK, type Params } from "kmqakj-study-player";

const sdk = new KmqakjStudySDK({
  baseUrl: "xxx",
});

const paramas: Params = {
  // params参数见上面Params
};
sdk.init(params);
...

CDN 使用

<script src="https://unpkg.com/kmqakj-study-player@latest/dist/index.iife.js"></script>
<script>
  const sdk = new KmqakjStudy.KmqakjStudySDK({
    baseUrl: "xxx",
  });
  const paramas = {
    // params参数见上面Params
  };
  sdk.init(params);
</script>

方法说明

所有方法都是返回Promise,需要自行判断异步操作。

init

初始化播放

sdk.init(params);

params字段描述如下:

字段类型描述是否必传
appKeyString学时监管的 appkey,授权使用
courseCodeString | Number课程 id
courseNameString课程名称
durationNumber当前视频时长
durationAllNumber该岗位的需修学时
planCodeString | Number计划 id
planNameString计划名称
sectionCodeString | Number课程小节 id
sectionNameString课程小节名称
trainPostCodeString | Number培训岗位 code
trainPostNameString培训岗位名称
trainTypeEnumString培训类型(值只能是下面两个)
'SEND_JXJY'继续教育
'SEND_GQPX'岗前培训
idCardString学员身份证
studentNameString学员姓名
studyInfoLogIdNumber | String学习日志 id(有异常的学时记录,再次观看需要传该字段)
schoolCodeNumber | String机构 code
studyIdNumber | String学员 id

返回值

{
    progress: "视频观看记录,单位(秒)",
    studyInfoId: "学习id",
    ruleType: "验证规则类型,("FACE", "人脸"),("LIVINGBODY", "活体"),("SLIDER", "滑块"),("IDCARD", "身份证"),("NUMBER", "数字")",
    initVerify: "是否需要首验证 0否1是",
    effectiveTm: "验证有效时间(秒)",
    sdkId: "唯一值"
}

play

视频播放的时候调用

sdk.play({
    studyInfoId: "xxx", // 学习Id,由init接口返回的,必传
    countHours: 1111, // 视频当前进度,必传,单位(秒),
})

pause

视频暂停的时候调用

sdk.pause() {
   studyInfoId: "xxx", // 学习Id,由init接口返回的,必传
   countHours: 1111, // 视频当前进度,必传,单位(秒)
}

end

视频播放结束调用

sdk.end({
   studyInfoId: "xxx", // 学习Id,由init接口返回的,必传
   countHours: 1111, // 视频当前进度,必传,单位(秒)
})

progress

视频播放进度同步,建议每隔 30 秒调用一次

sdk.progress({
   studyInfoId: "xxx", // 学习Id,由init接口返回的,必传
   countHours: 1111, // 视频当前进度,必传,单位(秒)
   sdkId: 'xxxx' // 唯一值,由init接口返回,必传
})

返回值:

{
    validateId: '验证id',
    ruleType: '验证类型,("FACE", "人脸"),("LIVINGBODY", "活体"),("SLIDER", "滑块验证"),("IDCARD", "身份证后四位校验"),("NUMBER", "数字验证")',
    isValidate: "是否要弹框验证(0否1是)",
    effectiveTm: '验证有效时间(秒)'
}

getVerifyInfo

获取验证详情,校验方式为数字的时候调用,验证码换一张也调用该接口

sdk.getVerifyInfo({
  validateId: "xxxx", // 验证id,由progress返回,必传
});

返回值:base64 格式的图片

getVerifyInfoRefresh

倒计时结束验证超时后,重新获取验证方式

sdk.getVerifyInfoRefresh({
  validateId: "验证id,由progress返回,必传",
});

verify

校验验证,验证类型为滑块、身份证、数字的时候调用该接口校验,校验通过后即可继续播放。

sdk.verify({
  validateId: "验证id,由progress返回,必传",
  ruleValue: "验证值,滑块验证直接传TURE,必传",
});

getFaceVerifyInfo

获取验证详情,校验方式为滑人脸、活体验证的时候调用

sdk.getFaceVerifyInfo({
  validateId: "验证id,由progress返回,必传",
});

返回值:

{
  qrCode: "base64格式的小程序码图片";
}

verifyFace

查询人脸或活体小程序的验证结果,该接口需要轮训使用,建议 2 秒执行 1 次。

sdk.verifyFace({
    validateId: "验证id,由progress返回,必传",
    ruleType: "验证类型,("FACE", "人脸"),("LIVINGBODY", "活体"),必传"
})
0.5.6

11 days ago

0.5.5

15 days ago

0.5.4

25 days ago

0.5.3

25 days ago

0.5.2

26 days ago

0.5.1

2 months ago

0.5.0

2 months ago

0.4.5

2 months ago

0.4.4

2 months ago

0.4.6

2 months ago

0.4.3

2 months ago

0.4.1

2 months ago

0.4.2

2 months ago

0.4.0

2 months ago

0.3.10

2 months ago

0.3.9

3 months ago

0.3.8

3 months ago

0.3.7

4 months ago

0.3.6

4 months ago

0.3.5

4 months ago

0.3.4

4 months ago

0.3.3

4 months ago

0.3.0

4 months ago

0.3.2

4 months ago

0.3.1

4 months ago

0.2.11

6 months ago

0.2.10

6 months ago

0.2.9

6 months ago

0.2.7

6 months ago

0.2.6

6 months ago

0.2.8

6 months ago

0.2.5

8 months ago

0.2.4

8 months ago

0.2.2-alpha

8 months ago

0.1.9-alpha

8 months ago

0.2.0-alpha

8 months ago

0.2.3-alpha

8 months ago

0.2.1-alpha

8 months ago

0.2.2

8 months ago

0.1.8-alpha

9 months ago

0.1.7-alpha

9 months ago

0.1.6-alpha

9 months ago

0.1.5-alpha

9 months ago

0.1.4-alpha

9 months ago

0.1.3-alpha

9 months ago

0.1.2-alpha

9 months ago

0.1.1-alpha

9 months ago

0.1.0-alpha

9 months ago

0.0.9-alpha

9 months ago

0.0.8-alpha

9 months ago

0.0.7-alpha

9 months ago

0.0.6-alpha

9 months ago

0.0.5-alpha

9 months ago

0.0.4-alpha

9 months ago

0.0.3

9 months ago

0.0.2

10 months ago

0.0.1

10 months ago