0.0.4 • Published 3 years ago

qnweb-exam-sdk v0.0.4

Weekly downloads
-
License
-
Repository
-
Last release
3 years ago

qnweb-exam-sdk

监考系统 High Level SDK

如何安装

$ pnpm add qnweb-exam-sdk

文档

通过以下命令会使用typedoc来自动生成api文档并预览

# 生成文档
$ pnpm doc:build
# 预览文档
$ pnpm doc:preview

快速开始

import { QNExamClient } from 'qnweb-exam-sdk';

const client = QNExamClient.create();

// 检测设备是否开启以及SDK是否支持
client.test().then(result => {
  console.log('test result', result);
});

// 开始监考
// 创建媒体设备
const camera = QNCamera.create({
  elementId: 'pc-camera',
});
const microphone = QNMicrophone.create();
const screen = QNScreen.create();
// 创建检测器
const browserTabDetector = QNBrowserTabDetector.create();
const userTakerDetector = QNUserTakerDetector.create({
  interval: 3000,
  idCard: 'xxxxxxx',
  realName: 'xxxxxxx',
});
const multiplePeopleDetector = QNMultiplePeopleDetector.create({
  interval: 3000
});
// 注册回调监听
userTakerDetector.on(result => { console.log('userTakerDetector result', result) });
browserTabDetector.on(result => { console.log('browserTabDetector result', result) });
multiplePeopleDetector.on(result => { console.log('multiplePeopleDetector result', result) });
// 将设备id与设备进行绑定
examClient.registerDevice('camera', camera);
examClient.registerDevice('microphone', microphone);
examClient.registerDevice('screen', screen);
// 开启检测,设备检测需要绑定到对应设备上
examClient.enable(browserTabDetector);
examClient.enable(userTakerDetector, 'camera');
examClient.enable(multiplePeopleDetector, 'camera');
// 开始监考
examClient.start({
  rtcToken: 'xxx',
  aiToken: 'xxxxxx',
  userData: 'xxxxx'
})

API概览

QNDetector

检测器

QNVideoDetector

视频检测器

描述
QNMultiplePeopleDetector多人同框检测器
QNOutOfScreenDetector用户出框检测器
QNUserTakerDetector用户替考检测器

QNBrowserDetector

键盘/浏览器检测器

描述
QNBrowserTabDetector浏览器tab检测器
QNKeyboardCopyDetector复制检测器
QNKeyboardCutDetector剪切检测器
QNKeyboardPasteDetector粘贴检测器

QNDevice

媒体设备相关

描述
QNCamera摄像头
QNMicrophone麦克风
QNScreen屏幕共享

API

QNExamClient

监考类

方法类型描述
static create(): QNExamClient创建client
registerDevice(deviceId: QNDeviceId, device: QNInternalDevice): void注册设备
unregisterDevice(deviceId: QNDeviceId): void取消注册设备
enable(detector: QNDetector, deviceId?: QNDeviceId): void开启检测
disable(detector: QNDetector): void关闭检测
test(): Promise\<QNTestResult>设备调试
start(token: QNTokenParams): Promise\开始监考
stop(): Promise\结束监考

QNDetector

检测器

QNBrowserTabDetector

tab检测器

方法类型描述
static create(): QNBrowserTabDetector创建检测器(实例)
on(callback: (result: VisibilityState) => void): void注册回调
enable(): void开启检测
disable(): void关闭检测

QNKeyboardCopyDetector

复制检测器

方法类型描述
static create(): QNKeyboardCopyDetector创建检测器(实例)
on(callback: (result: ClipboardEvent) => void): void注册回调
enable(): void开启检测
disable(): void关闭检测

QNKeyboardCutDetector

剪切检测器

方法类型描述
static create(): QNKeyboardCutDetector创建检测器(实例)
on(callback: (result: ClipboardEvent) => void): void注册回调
enable(): void开启检测
disable(): void关闭检测

QNKeyboardPasteDetector

粘贴检测器

方法类型描述
static create(): QNKeyboardPasteDetector创建检测器(实例)
on(callback: (result: ClipboardEvent) => void): void注册回调
enable(): void开启检测
disable(): void关闭检测

QNMultiplePeopleDetector

多人同框检测器

方法类型描述
static create(config?: QNMediaDetectorConfig): QNMultiplePeopleDetector创建检测器(实例)
on(callback: (result: number) => void): void注册回调
enable(track: QNLocalVideoTrack | QNRemoteVideoTrack): void开启检测
disable(): void关闭检测

QNOutOfScreenDetector

用户出框检测器

方法类型描述
static create(config?: QNMediaDetectorConfig): QNOutOfScreenDetector创建检测器(实例)
on(callback: (result: boolean) => void): void注册回调
enable(track: QNLocalVideoTrack | QNRemoteVideoTrack): void开启检测
disable(): void关闭检测

QNUserTakerDetector

用户替考检测器

方法类型描述
static create(config?: QNUserTakerDetectorConfig): QNOutOfScreenDetector创建检测器(实例)
on(callback: (result: number) => void): void注册回调
enable(track: QNLocalVideoTrack | QNRemoteVideoTrack): void开启检测
disable(): void关闭检测

QNDevice

媒体设备

QNCamera

摄像头

属性类型描述
cameraVideoTrackQNCameraVideoTrack摄像头视频轨道
方法类型描述
static create(config?: QNCameraConfig): QNCamera创建摄像头(实例)
static getCameras(skipPermissionCheck?: boolean): Promise\[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)[]枚举可用的摄像头输入设备
start(): Promise\采集/播放摄像头视频流
stop(): Promise\停止采集/播放摄像头视频流

QNMicrophone

麦克风

属性类型描述
microphoneAudioTrackQNMicrophoneAudioTrack麦克风音频轨道
方法类型描述
static create(config?: QNMicrophoneConfig): QNMicrophone创建麦克风(实例)
static getMicrophones(skipPermissionCheck?: boolean): Promise\[MediaDeviceInfo](https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo)[]枚举可用的麦克风输入设备
start(): Promise\采集/播放麦克风音频流
stop(): Promise\停止采集/播放麦克风音频流

QNScreen

屏幕共享

属性类型描述
screenVideoTrackQNScreenVideoTrack屏幕共享视频流
方法类型描述
static create(config?: QNScreenConfig): QNScreen创建屏幕共享(实例)
start(): Promise\采集/播放屏幕共享视频流
stop(): Promise\停止采集/播放屏幕共享视频流

类型定义

QNDeviceId

export type QNDeviceId = 'camera' | 'microphone' | 'screen';

QNTokenParams

export interface QNTokenParams {
  rtcToken: string; // rtc房间token
  aiToken?: string; // ai检测token
  userData?: string; // 用户加入rtc房间扩展字段
}

QNInternalDevice

export type QNInternalDevice = QNCamera | QNMicrophone | QNScreen; // 内置设备

QNTestResult

export interface QNTestResult {
  isCameraEnabled: boolean, // 摄像头是否正常开启
  isMicrophoneEnabled: boolean, // 麦克风是否正常开启
  isScreenEnabled: boolean, // 屏幕共享是否正常开启
  isSDKSupport: boolean; // SDK 是否支持
}

QNMediaDetectorConfig

export interface QNMediaDetectorConfig {
  interval?: number; // 检测间隔时间,单位ms,默认为1000ms
}

QNUserTakerDetectorConfig

export interface QNUserTakerDetectorConfig extends QNMediaDetectorConfig {
  realName: string; // 姓名
  idCard: string; // 身份证号
}

QNCameraConfig

export interface QNNumberRange {
  max?: number; // 最大值
  min?: number; // 最小值
  exact?: number; // 希望能取到exact的值,如果失败就抛出错误
  ideal?: number; // 优先取ideal的值, 其次取min-max范围内一个支持的值, 否则就抛出错误
}

export type QNOptimizationMode = QNVideoOptimizationMode; // 传输优化模式, motion: 流畅优先, detail: 清晰优先, 默认浏览器根据自身算法确定模式

export interface QNCameraConfig {
  cameraId?: string, // 选择摄像头id
  elementId?: string, // 绑定元素的id
  bitrate?: number, // 传输的码率,单位 kbps
  frameRate?: number, // 帧率
  height?: number | QNNumberRange, // 视频高度
  width?: number | QNNumberRange, // 视频宽度
  optimizationMode?: QNOptimizationMode; // 传输优化模式
}

QNMicrophoneConfig

export interface QNMicrophoneConfig {
  microphoneId?: string, // 选择麦克风id
  elementId?: string, // 绑定元素的id
  bitrate?: number, // 传输的码率,单位 kbps
  // 以下建议不要更改,浏览器会根据设备自动适配
  sampleRate?: number, // 采样率
  sampleSize?: number, // 采样大小
  stereo?: boolean, // 是否采用双声道
  AEC?: boolean, // 是否启动 automatic echo cancellation
  AGC?: boolean, // 是否启动 audio gain control
  ANS?: boolean, // 是否启动 automatic noise suppression
}

QNScreenConfig

export interface QNScreenConfig {
  elementId?: string, // 绑定元素的id
  bitrate?: number, // 传输的码率,单位 kbps
  width?: number | QNNumberRange, // 输出画面的宽度
  height?: number | QNNumberRange, // 输出画面的高度
  optimizationMode?: QNOptimizationMode; // 传输优化模式
}
0.0.3

3 years ago

0.0.4

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago

0.0.0-beta.1

3 years ago