直通视频接入

1. API 接口

1.1. createLivePlayer

描述

创建直通播放实例

实例

  • livePlayer = playerjs.createLivePlayer(domList: domElement Array, options: Object)

参数详情

domList:

div DOM 容器的数组,需要设置样式的宽高,不然视频可能塌缩或出现其他样式问题。

options:

1.1.1. 基础配置项

字段 类型 描述 默认值 是否必填
deviceInfos object[] 设备信息集合
├ devId string deviceInfos 子元素字段;设备唯一标识
├ channels string deviceInfos 子元素字段;通道号列表;多个通道之间用逗号隔开,例如 1,2,3,4。
streamType string 码流类型: MAJOR:主码流; MINOR:子码流; MAJOR
mediaProtocol string 媒体协议:HTTP_FLV(S17 有效) HTTP_FLV
quality string 清晰度:SMOOTH:流畅 STANDARD:标准 CLARITY:清晰(S17 有效) STANDARD
hasAudio number 是否携带音频,默认打开音频: 0:不携带 1:携带(S17 有效) 1
expireTime number 地址过期时间,默认为 20 秒(S17 有效) 20
hasTranscode number 是否需要 H265 视频转码,默认会转码:0 => 不转码, 1 => 转码(S17 有效) 0
playMode number 播放模式:0-实时优先;1-流畅优先。mse 解码方式生效。 实时优先,默认策略,无数据时启用loading;流畅优先,缓存较少时使用慢放策略,尽量减少loading造成画面暂停,因为需要缓存,实时性稍差一些。 0

1.1.2. 安全性访问

描述

S17 生效:设备端使用 AES 等加密传输,允许 H5Player 侧进行解密播放

参数

字段 类型 描述 默认值 是否必填
hasEncrypt number AES 解密类型:0 平台解密;1 前端解密(S17 有效) 0

1.1.3. 操作留痕

描述

S17 生效:用户在访问 s17 之后,播放阶段记录的时间等信息,用该参数进行记录。

参数

字段 类型 描述 默认值 是否必填
optId string 业务操作 id,可用于操作留痕记录等(S17 有效) “”

1.1.4. 内外网访问

描述

S17 生效:允许用户通过内网或者外网访问 S17

参数

字段 类型 描述 默认值 是否必填
addrType number 地址类型:1:外网地址;2:内网地址;(S17 有效) 1

1.1.5. 【V2.0.1】网络请求类型选择

描述

允许访问多种视频源

参数

字段 类型 描述 默认值 是否必填
netRequestType number 网络请求类型,1 - S17, 4 - 设备直连(V2.0.1 新增) 1

1.1.6. 【V2.0.1】视频解密密钥

描述

设备直连生效:设备直连场景需要由集成方设置密钥进行解密播放

参数

字段 类型 描述 默认值 是否必填
encrypt object[] 密钥信息 []
├ channel number 通道信息
├ encryptType string 密钥类型,AES/RSA AES
├ aesParam object AES 信息
├ aesType number AES 加密类型,128、192、256 256
├ aesKey string AES 密钥

1.2. 方法

1.2.1. load

描述

直通播放器获取播放 flv 地址并加载视频流

示例

  • livePlayer.load()

1.2.2. stop

描述

关闭指定 devId 的 channel 通道的播放,关闭后可调用 replay 接口恢复

channel 为 0 表示关闭当前设备全部通道

整个参数不填 表示关闭所有设备

示例

  • livePlayer.stop([{channel, devId}])

参数

属性值 类型 说明
object[] 参数信息
├channel Number 设备通道号
├devId String 设备 id

1.2.4. destroy

描述

销毁指定 devId 的 channel 通道

channel 0 表示关闭当前设备全部通道

整个参数不填 表示关闭所有设备

示例

  • livePlayer.destroy([{channel, devId}])

参数

属性值 类型 说明
object[] 参数信息
├channel Number 设备通道号
├devId String 设备 id

1.2.6. replay

描述

stop 指定 devId 的 channel 通道后,允许调用该接口恢复播放

示例

  • livePlayer.replay([{channel, devId}])

参数

属性值 类型 说明
object[] 参数信息
├channel Number 设备通道号
├devId String 设备 id

1.2.6. addStream

描述

当前播放实例下,追加指定 devId 的 channel 通道

示例

  • livePlayer.addStream([{channel, devId, dom}])

参数

属性值 类型 说明
object[] 参数信息
├channel Number 设备通道号
├devId String 设备 id
├dom HTMLElement div DOM 容器

1.2.7. getRenderInfoList

描述

可以通过实例获取到渲染相关信息

示例

  • renderInfoList= livePlayer.getRenderInfoList()

返回值

renderInfoList:

[ { channel: 1, // 通道号,如果是虚拟回放,是虚拟后的通道号 realChannel: 2, // 用户传入的通道号 index: 1, // 实例渲染dom顺序 number devId: "devId123", // devId string volume: 0.2, // 音量 number domContainer: HTMLDom, // 渲染的dom的容器div } ]
属性名 类型 说明
domObject Object[] 带有 dom 的对象与通道数据的对象
|-index number 实例渲染 dom 顺序
|-devId String 设备号
|-channel number 通道号,如果是虚拟回放,是虚拟后的通道号
|-realChannel number 用户传入的通道号
|-volume number 当前通道音量
|-domContainer HTML DOM 渲染的 dom 的容器 div

1.2.8. getStartTime

描述

获取直通播放的开始时间,返回客户端 utc 时间戳,单位 ms。

示例

  • livePlayer.getStartTime()

注:如果要获取结束时间,请参考 HOOKS 中 afterDestory

1.2.9. getDuration

描述

获取直通播放的时长,单位 ms。

示例

  • livePlayer.getDuration()

1.3. 属性

1.3.1. streamType:object

描述

获取播放器码流类型 | 设置切换的码流类型

示例

  • 获取:livePlayer.streamType
  • 设置:livePlayer.streamType = [{ devId: 'devId', channel: 1, streamType : 'MAJOR' }]

参数

属性值 类型 说明
streamType:Object devId String 设备 Id
channel Number 设备通道号
streamType String 设置取值范围:MAJOR(主码流)、MINOR(子码流)

1.3.2. volume:object

描述

获取播放器各通道音量 | 设置播放器通道音量

示例

  • 获取:livePlayer.volume
  • 设置:livePlayer.volume = [{ devId: 'devId', channel: 1, volume: 0.5 }]

参数

属性值 类型 说明
volume:Object devId String 设备 Id
channel Number 设备通道号
volume Number 预期通道音量,范围 0 - 1

1.3.3. (readonly)status:object

描述

获取播放器当前播放状态

示例

  • 获取:[{ state: string, info: { channel: string ,devId: string}}] = livePlayer.status

state 值状态包括:

{ newIns: "newIns", // player实例初始化后,未加载数据流 initialized: "initialized", // 已获取到视频流链接 onLoading: "onLoading", // 用户执行load,正在加载数据流 afterReady: "afterReady", // 数据流加载成功,未收到用户指令 playing: "playing", // 播放中 seeking: "seeking", // seek中间态 framePlaying: "framePlaying", // 逐帧播放状态 paused: "paused", // 暂停状态 stopped: "stopped", // 停止状态 destroyed: "destroyed", // 销毁状态 play: 'play', // 播放状态,单渲染器使用 free: 'free', // 黑屏状态,单渲染器使用 playEnded: "playEnded", // 播放结束状态 };

2.扩展功能接入

扩展功能

3. 接入示例

<script src="./h5-player.js"></script>
<script>
 const StPlayer = playerjs;
 StPlayer.config = {
     baseURL: 'http://192.168.132.72:21250'
 };
 StPlayer.defaultHeaders = {
     _appId: '1',
     _tenantId: '2',
 }
let livePlayer = null;
 // 开始直通
 function play() {
     if (livePlayer) return;
     const doms = document.getElementsByClassName('div');
     const domList = Array.from(doms);
     // Initialize the live view player.
     livePlayer = StPlayer.createLivePlayer(domList, {
         deviceInfos: [{
             devId:'03d430b6365943f1b02bdde73aceddf8',
             channel: '1,2'
         }]
         streamType: 'MAJOR',
     });
     livePlayer.load();
 }
 // 关闭直通
 function closeVideo() {
     if (livePlayer) {
         livePlayer.destory();
         livePlayer = null;
     }
 }
</script>