tums-player 使用说明

tums-player 使用说明1. 简介2. 使用方法2.1 本地运行demo2.2 正式部署3. 代码示例——demo.html4. 使用说明4.1 参数4.2 事件4.3 方法5. 接入TP-LINK商用云平台指南5.1 预览流程5.2 回放流程6.接入TP-LINK TUMS平台指南7. 附录7.1 错误码7.2 事件类型约束

版本备注
V1.0.01. 创建文档
2. 支持预览功能
V1.1.01. 增加商云接口调用流程
2. 增加回放功能相关参数和方法
V1.2.01. 增加语音对讲相关参数和方法
V1.3.01. 增加本地平台回放功能
V1.4.01. 增加鱼眼画面显示模式相关参数和方法
V1.5.01. 增加云台功能相关参数和方法
V1.5.11. 补充语音对讲详细参数说明
V2.0.01. 增加webcodecs解码方案及相关参数配置
V2.0.11. 增加画面旋转、镜头遮蔽、画面镜像功能

 

1. 简介

tums-player是基于TP-LINK平台封装的视频播放组件,使用过程中不必学习专业的业务概念,更不用调用繁琐的接口,能够以极简的嵌入方式,快速在应用中集成视频功能。

覆盖的平台包含:H5/web

浏览器支持:

 

2. 使用方法

2.1 本地运行demo

  1. 下载tums-player-demo
  2. 解压代码
  3. 参考readme.pdf,启动demo

2.2 正式部署

  1. 下载tums-player
  2. 将压缩包移至服务器或前端项目后解压,需注意播放器资源路径要求为xxx/tums-player/
  3. 参照代码示例开发页面
  4. 运行服务器使用

 

3. 代码示例——demo.html

创建dom

引入sdk

初始化播放器

对接TUMS平台,若websocket地址为IP或缺少TLS/SSL证书的域名,首次连接会出现失败的情况,需浏览器先主动访问https://xxx/ws (wss替换为https),然后选择高级-继续前往对当前https地址进行授权

方法调用

示例:

 

4. 使用说明

4.1 参数

TumsPlayer类:

options说明:

参数说明类型可选值默认值是否必选
type视频流类型。目前取值有: rtsp(对接TP-LINK TUMS平台使用); relay(对接TP-LINK商用云平台使用)Stringrtsp/relayrtspY
url取流地址: TP-LINK TUMS平台使用提供的getPreviewUrl/getPlaybackUrl/getMultitransUrl接口获取; TP-LINK商用云平台通过提供的requestStreamUrl接口获取;String----Y
socketwebsocket连接地址,type为rtsp时必填String----N
decoderType解码类型,目前取值有wasm(webAssembly软解),webcodecs(webcodecs API硬解,仅少数浏览器支持)。
未配置此参数会自动根据当前浏览器环境使用对应解码方式。
配置此参数会判断当前浏览器是否支持,若不支持会出现报错。
Stringwasm/webcodecs--N
pluginPathsdk资源地址,默认是在根路径下。比如sdk路径为/static/tums-player,则pluginPath值为/staticString--‘/’N
autoplay自动播放Boolean--trueN
resolution分辨率,目前取值有VGA(子码流),HD(主码流),初始传入此值仅用于标记当前实例的分辨率,实际播放效果以url为准StringVGA/HD''N
cover显示的画面是否覆盖父节点宽高,默认按画面原始比例显示Boolean--falseN
streamType流类型,目前取值有video(预览),sdvod(回放,仅支持TP-LINK商用云平台)Stringvideo/sdvodvideoN
userIdsearchVideo接口返回的用户id,type为relay且streamType为sdvod时必填Number----N
startTime回放开始时间戳(见注1)Number--当天00:00N
endTime回放结束时间戳Number----N
eventType回放事件类型(仅支持TP-LINK商用云平台, TP-LINK TUMS平台 需要在获取回放url时设置)Number[]见注2[1, 2]N
scale回放倍速Number[0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16]1N
talkEnable语音对讲使能Boolean--trueN
screenshotEnable截图使能Boolean--trueN
volume音量Number[1, 100]50N
fishEyeDisplayMode鱼眼画面显示模式String'ORIGIN': 原图;
‘FISHEYE_360D’:顶装360度全景;
‘FISHEYE_180D’:顶装180度全景;
‘FISHEYE_WIN_PLANE_T
OP_QUAD’:顶装四分屏;
‘FISHEYE_LONGITUDE’:壁装全景拉伸;
‘ORIGIN’N
authSessionId鉴权Id(/tums/account/v1/login登录接口获取的sessionId,TP-LINK TUMS平台回放功能必选)String--''N
queryAddress回放api访问前缀(TP-LINK TUMS平台回放功能必选)String--''N
videoSessionId回放功能视频数据会话id(通过addPlaybackChn接口获取,TP-LINK TUMS平台回放功能必选)String--''N
videoDevId设备id(TP-LINK TUMS平台回放功能必选)String--''N
storageDevId回放数据存储设备idString--''N
useMultitrans本地平台回放功能是否使用Multitrans协议Boolean--falseN

 

对接TP-LINK商用云平台,使用云台功能需传递以下参数:

参数说明类型可选值默认值是否必选
appKey从商用云平台获取的开发者密钥ID (AK)String--Y
appSecret从商用云平台获取的开发者密钥(SK)String--Y
proxyServer商用云平台地址String-'https://api-smbcloud.tplinkcloud.com.cn/'N

使用镜头遮蔽、画面镜像、画面旋转时需要传递以下参数:

参数说明类型可选值默认值是否必选
parentIdnvr设备idString--ipc通过nvr接入时需传递
channelipc通道号Number--ipc通过nvr接入时需传递
devIdipc设备idString--Y

注:

  1. 时间戳指从1970年1月1日开始所经过的毫秒数。

  2. 事件类型定义,需要区分直连IPC和NVR通道。

    直连IPC(取值范围见6.2):

    数组包含指定事件类型即可。eg: [1, 2, 3] 表示同时回放定时、移动侦测和遮挡侦测类型。

    NVR通道:

    目前仅支持:1 定时类型,2 动检类型。传值[1, 0]表示只回放定时类型,[2, 0]表示只回放动检类型,[3, 0]表示同时回放两种类型。

 

4.2 事件

事件说明回调参数
ready当播放器实例化完成时触发event: {detail: player实例 }
play当媒介数据将要开始播放时触发event: {detail: player实例 }
pause当媒介数据暂停时触发event: {detail: player实例 }
stream开始推流时触发event: {detail: player实例 }
playing当媒介数据已开始播放时触发event: {detail: player实例 }
error发生错误时触发event: {detail: {code: 0, message: '', type: 'audio'/'video'}},code详见错误码列表, type默认为video
warning发生警告时触发event: {detail: {code: 0, message: ''}},code详见错误码列表
disconnected与服务器断开连接时触发event: { detail: { code: 0, reason: '' } }
ended当媒介数据播放结束时触发event: {detail: player实例 }
zoom当画面放大时触发event: {detail: {scale: 放大的倍率,见注3} }
videoRecordFinished录制文件下载时触发,目前录制超过10min将会自动下载

注:

  1. 进入电子放大状态后,在画面中单击鼠标左键放大画面,右键缩小画面,也可使用滚轮操作;放大范围:[1, 5],粒度为0.25。

 

4.3 方法

方法说明参数返回值
init播放器初始化同options
destroy播放器销毁Promise
start开始播放
stop停止播放
pause暂停播放
play继续播放
fullscreen全屏放大(controlEl: HtmlDomElement, forceRotate: Boolean)
controlEl: 全屏放大后在画面中插入的dom节点,可选
forceRotate: 是否强制横屏,默认为false
exitFullscreen退出全屏
screenshot视频截图(download: Boolean)
download: 是否自动下载截图,默认为true
base64格式图片数据,png格式
on监听事件,与事件列表对应(eventName: String, callback: Function)
off注销事件(eventName: String, callback: Function)
setResolution设置分辨率(url: String, resolution: String)
url: 新分辨率对应视频流地址,
resolution: VGA(子码流)、HD(主码流),可选
setPlaybackConfig设置回放参数(options: Object)
options参数内容如下
startTime、endTime、scale、eventType(可任意组合)
getPlaybackTime获取当前回放时间戳timestamp:Number
toggleZoomState切换电子放大状态(见注3)(state: Number)
state: 1,进入放大状态;0,退出放大状态
setZoomScale设置放大倍率(scale: Number)
scale: 取值[1, 5],超过范围的值不生效
startVoiceIntercom开始语音对讲(options: Object)
详细内容见下方语音对讲参数说明
stopVoiceIntercom结束语音对讲
playAudio移动端需在用户操作页面触发touch等事件后,在事件回调中执行此方法开始播放音频
getVolume获取当前播放音量volume: Number
setVolume设置播放音量(volume: Number)
volume: 取值[0, 100]
setFishEyeDisplayMode设置鱼眼画面显示模式(mode: String)
startRecording开启预览录像。受浏览器内存限制,建议录像时间不超过1分钟(options: Object)
options参数内容如下
micStream: Boolean,是否录制麦克风声音,默认false
Promise
开始录像后resolve
stopRecording停止预览录像并下载录像文件(fileName: String, download: Boolean)
fileName: 文件名,最终下载文件名格式为${文件名}_${时间戳}.mp4
download: 是否自动下载文件,默认true
Promise
返回录像文件blob类型数据
getRecordInfo获取预览录像信息recordInfo: Object
包含参数内容如下:
time: 录像时间,单位毫秒
size: 录像文件大小,单位kb
getLensMaskValue获取镜头遮蔽状态Promise
设备不支持时将返回error_code信息
设备支持时可从 result.lens_mask.lens_mask_info.enabled中取得具体状态
setLensMaskValue设置镜头遮蔽状态(maskStatus: String)
maskStatus: on/off
Promise
根据返回的error_code信息判断设置成功或者失败
getImageSwitch获取图像切换配置,目前可包含镜像和画面旋转Promise
失败时返回相关error_code信息
成功时可以通过result.flip_type和result.rotate_type分别取得镜像状态和旋转状态。
saveImageSwitch设置图像切换配置,目前可包含镜像和画面旋转(config: Object)
config.flip_type: 镜像状态
取值:
off:关闭
left_and_right:左右
up_and_down:上下
center:中心
config.rotate_type:旋转状态
off :关闭
anticlockwise_180 :逆时针旋转180
clockwise_90 :顺时针旋转90
anticlockwise_90 :逆时针旋转90
Promise
根据返回的error_code信息判断设置成功或者失败
getModuleSpec获取设备能力集,目前包含镜像和镜头遮蔽,画面旋转默认全部ipc均支持Promise
失败时返回相关error_code信息
成功时返回data
data. lensMaskEnable: 镜头遮蔽使能
data. flipEnable: 画面镜像使能
data.rotateEnable: 画面旋转使能

 

语音对讲参数说明

对接TP-LINK商用云平台:

参数说明类型是否必选
url通过requestStreamUrl接口获取的语音对接地址String
mode通话模式,取值:
half_duplex:半双工模式
vad:VAD人声检测模式
aec:AEC全双工模式
默认为aec(双向语音对讲)
String

示例:

对接TP-LINK TUMS平台(接口调用详见第6节):

参数说明类型是否必选
urlrtsp地址:
使用getMultitransUrl接口获取的rtspUrl或
使用requestBidirectionStream接口获取的参数拼接
${protocol}://${serverUrl}:${port}/
String
wssUrlwebsocket地址:
使用getMultitransUrl接口获取的wssUrl或
使用requestBidirectionStream接口获取的参数拼接
wss://${serverUrl}:${port}/ws/
String
slpDatarequestBidirectionStream接口响应的result数据
(使用getMultitransUrl接口获取url时不需要传此参数)
String
mode同上String

示例:

 

云台方法(仅对接TP-LINK商用云平台支持)

方法说明参数参数详解返回值
setPtzParams云台的转动、调焦(options: Object)
options参数内容如下
id 、 direction 、 startOrNot、speed
id:设备索引,可通过getDeviceInRegionWithPermission等接口获取;
direction:移动方向( 0表示左上、1表示上、2表示右上 、 3表示左、4表示持续水平转动、5表示右 、 6表示左下、7表示下、8表示右下 、 9表示缩小画面、10表示放大画面、 11表示聚焦近处、12表示聚焦远处) ;
startOrNot :开始或停止移动( 0表示停止,1表示开始 );
speed:移动速度(浮点型字符串,0-1之间),默认值‘0.571’
Promise,设备不支持相关指令时将返回error_code信息
resetPtzDevicePosition云台复位(id: String)id:设备索引,可通过getDeviceInRegionWithPermission等接口获取;Promise,设备不支持相关指令时将返回error_code信息

 

5. 接入TP-LINK商用云平台指南

用户需注册TP-LINK商用云平台账号成为开发者。

该账号需要安全保存,因为后续所有的开发流程都需要基于此账号进行,更重要的是,后续添加的设备与购买的服务,都归属于该账号。该账号还将作为超级管理员,可以创建子账号,从而实现应用内权限 的分配与管理:

  1. 设备添加到开发者账号下。
  2. 开发者账号授权设备权限给子账户A。
  3. 用户A通过子账户A的权限来操作设备

开发者后台通过账户登录TP-LINK商用云平台后,可通过相关协议文档获取到用于预览的视频流地址和鉴权token等信息。具体流程如下:

 

5.1 预览流程

开发者获取到AK/SK并计算出请求签名后,可参考以下请求流程获取预览链接:

getEnterpriseList
getAllProjectInfo
getRootRegionsExcludeEmptyWithPermission
getRegionChildrenExcludeEmptyWithPermission
getDeviceInRegionWithPermission
requestStreamUrl
获取企业列表, 请求头需携带X-Authorization,下同
获取项目列表
获取项目内区域根节点去除特定权限设备为空的区域
获取区域的子区域去除有特定权限设备为空区域
获取区域内有指定权限的设备
获取设备预览地址
预览url传给sdk即可播放

requestStreamUrl请求和响应参数示例:

预览时清晰度默认为流畅,若要修改清晰度,需重新调用requestStreamUrl接口配置resolution,以获取新的播放地址

 

5.2 回放流程

获取设备前的流程与预览一致,前端拿到设备ID之后,可查询设备存储的录像并进行播放:

getDeviceInRegionWithPermission
searchYear
searchVideo
是, 继续查询录像
requestStreamUrl
获取区域内有指定权限的设备
查询设备具有录像的日期, 可选
查询设备在某天所存储的录像片段
响应的录像片段长度 == endIdx - startIdx?
查询完成, 记录userId, 显示录像时间轴
获取回放地址
回放url传给sdk即可播放

回放时sdk传参必填项如下:

回放常用功能示例:

 

6.接入TP-LINK TUMS平台指南

回放/预览接口调用流程:

login
getAllProjectInfo
getRootRegionsExcludeEmpty
getRegionChildrenExcludeEmpty
setCurrentProject
getDeviceInRegionWithPermission
注5
getIpcCapability
getPreviewUrl
getMultitransUrl
requestBidirectionStream
getStoragesById
注1
支持
getMultitransUrl
注4
不支持
addPlaybackChn
注2
getPlaybackUrl
注3
成功
登录获取sessionId
获取项目信息
获取根分组信息
获取子分组信息
设置当前项目
获取分组下有预览权限的设备
选择设备
获取设备能力集
capability
预览
获取预览url
预览url传递给sdk即可播放
语音对讲
获取语音对讲url
capability.multitrans
判断是否支持multitrans
支持
调用startVoiceIntercom方法开始对讲
不支持
回放
获取设备录像的存储位置
选择存储位置
存储位置是否是nvr设备?
通过storageType判断
capability.multitrans
判断是否支持multitrans
获取回放url,即wss与socket
回放url传递给sdk即可播放
添加回放通道
获取回放url 即wss与socket
获取成功?
回放url传递给sdk即可播放

注1:

getStoragesById:传递devId获取设备数据存储位置,即存储设备id(storageDevId)。

注2:

addPlaybackChn:传递设备id、存储设备id、事件类型、回放起止时间、回放速率(目前传递'1/1'即可)获取回放通道标识,即sessionId。

注3:

getPlaybackUrl:传递addPlaybackChnsessionId、设备id、storageDevId,获取的获取回放url,准备传给sdk。

注4:

getMultitransUrl:传递devId可以直接获取到httpsPort与socket地址,若无httpsPort则使用默认值10180 ,wss地址拼接格式如下:ws://${host}:${httpsPort}/ws/,其中host是socket中的ip部分。

注5: getDeviceInRegionWithPermission接口可以根据预览权限进行设备列表查询,permissionList传[0]代表预览,传[1]代表回放。

 

7. 附录

7.1 错误码

code含义
1001请求中止
1002网络异常
1003媒体资源解析错误
1004不支持的媒体源
1005媒体资源已加密
1006媒体数据传输错误
1007连接服务器失败
1008不支持的解码类型
1101商云服务器内部错误
1102token过期或不存在
1104设备ID无效
1105达到带宽限制
1106请求预览地址参数错误
1107连接relay服务器失败
1108取流失败
1109暂不支持此视频流协议版本
1110已达到拉流请求上限
1111已长时间观看
1112VIP窗口预览数达到上限
1113VIP预览客户端数量达到上限
1114分享时段结束
1115权限不足
1120多媒体数据加密状态发生变化
1121设备正在通话中
1122解绑设备
1201设备不支持语音对讲
1202用户拒绝提供信息
1203浏览器不支持硬件设备
1204无法发现指定的硬件设备
1205无法打开麦克风
1206通话模式不支持
1207音频设备正忙,无法发起通话
1208浏览器获取麦克风权限被拒绝
1301设备离线
1302设备被移除
1303设备密码被修改
1401未知错误
1402操作超时
1403网络异常
1404服务器内部错误
1405session过期或不存在
1501回放配置失败
2001分辨率过高导致视频卡顿
2002网络不稳定导致视频卡顿
2003解码性能不足

7.2 事件类型约束

eventType事件类型eventType事件类型
1定时2移动侦测
3遮挡侦测4越界侦测
5区域入侵6进入区域
7离开区域8徘徊侦测
9人员聚集10快速移动
11停车侦测12物品遗留
13物品拿取14音频异常
15虚焦侦测16场景变更
17人脸侦测18报警
19过线统计20登陆异常
21SD卡满22SD卡错误
23SD卡拔出24网线断开
25IP冲突26人形检测
27车辆侦测28物品遗漏拿取侦测
29移动侦测云存30迎宾播报
31视频留言32移动侦测人形加强
33移动侦测车辆加强34区域入侵人形加强
35区域入侵车辆加强36越界侦测人形加强
37越界侦测车辆加强38人脸比对
39人脸相册40进入区域人形加强
41进入区域车辆加强42离开区域人形加强
43离开区域车辆加强44客流量统计
45门铃呼叫46人员到访
47车位占用48哭声检测
49人形相册50紧急呼救