事件监听相关方法
StrmWsApi 对象创建后,可以根据需要调用添加事件监听器方法,监听所关注的事件。
addEventListener
function addEventListener(type: string, listener: Handler<any>): void {
}
添加事件监听器。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| type | string | Y | 事件类型。为 StrmEvents 系列常量之一 |
| listener | Handler<any> | Y | 事件处理器 |
事件类型
SessionCreatedEvent 会话建立通知
| 属性名 | 数据类型 | 必要 | 说明 |
|---|
| firstTime | boolean | Y | 是否第一次成功建立会话 |
SessionInvalidEvent 会话失效通知
| 属性名 | 数据类型 | 必要 | 说明 |
|---|
| api | StrmWsApi | Y | API 对象 |
| token | string | Y | 所要失效的令牌 |
StrmNotif 媒体状态变更通知
| 属性名 | 数据类型 | 必要 | 说明 |
|---|
| instId | string | Y | 媒体服务实例ID。此ID从媒体服务的运行配置中取得,可由用户配置,应为URL-safe字符串。 |
| act | string | Y | 通知的类型:- ✳
sent: 下发指令(当终端未及时推流时,服务端可能多次下发指令,因此此通知也可能多次推送)。 - ✳
failed: 终端指令失败(终端不在线或终端应答提出指令已经失败)。 - ✳
id: 终端开始推流。 - ✳
ready: 流已经准备好,此时客户端可以打开流URL(URL由playUrl属性指出)。注意:用异步模式打开实时音视频播放时,如果目标通道已经有其他请求打开,则POST /strm/live/open请求返回的对象的ready将为true。返回后,服务端不会发送act为ready的流媒体状态通知。 - ✳
qr: 终端媒体流网络传输质量报告。在接收终端媒体流过程中,媒体服务将定时产生此报告。企业应用可据此向终端发出实时音视频传输状态通知(0x9105)。此通知不需推送到客户端。 - ✳
closed: 流已经关闭,如果客户端此时仍在播放,则应停止播放。具体关闭原因请检查closeCause和closeReason属性。注意:流关闭并不意味着终端已经关闭码流,如果有其他请求仍在使用码流,则终端码流将仍然保持推流,只是当前的请求ID(reqId)已经关闭、失效。
|
| reqId | string | | 请求ID。 |
| typ | string | Y | 流的类型:live: 表示流为直播流replay: 表示流为回放流
|
| simNo | string | Y | 终端识别号 |
| chan | int | Y | 音视频逻辑通道号(参见JT/T 1076-2016 表2) |
| playUrl | string | | 流媒体播放URL。仅当act == ready时有效 |
| wsUrl | string | | WebSocket地址,用于对讲时客户端提交音频数据。此地址使用stomp协议。仅当请求的流类型为实时流,且数据类型(dataTyp)为2: 对讲时有效 |
| taUrl | string | | WebSocket地址,用于对讲时客户端提交音频数据。此地址使用二进制websocket协议。仅当请求的流类型为实时流,且数据类型(dataTyp)为2: 对讲时有效 |
| mediaTyp | string | | 流的媒体类型: 。仅当 act 为 ready时有效 |
| lostRate | int | | 丢包率。0-100。仅当act == qr时有效。 |
| closeCause | int | | 流关闭的原因代码:1: 客户端请求关闭流2: 终端码流断开3: (未使用)4: 服务端发生未处理的异常5: 客户端流请求保持超时6: 终端未能在一定时间内推流7: 终端媒体格式错误或不能识别12: 当客户端成功请求打开一个流后,如果在配置的时间内(默认1分钟)未消费。 该属性仅当act == closed时有效 |
| closeReason | string | | 流关闭的原因,文字信息。该属性仅当act == closed时有效 |
| ac | int | | 源音频编码格式。仅当act == ready时且媒体中含有音频时有效。为下列常量之一:65536: PCM65542: G711-U65543: G711-A69633: ADPCM69667: G72686018: AAC
|
| aBitrate | int | | 音频码率。单位:位/秒。仅当act == ready时且媒体中含有音频时有效。 |
| vc | int | | 源视频编码格式。仅当act == ready时且媒体中含有视频时有效。为下列常量之一: |
| frameRate | string | | 帧率。浮点数,以字符串表示。仅当act == ready时且媒体中含有音频时有效。 |
| playedAvDumpUrl | string | | (since 4.0.10) 取转储文件下载URL,仅当播放请求时指定了 saveOnServer 且 act == `closed 时返回。 下载此 URL 时,和下载其他资源一样,需提供 token |
changeCodeStrm, pause, resume三个事件主要用于实时播放共享时提示用户,这样其他控制客户端执行切换码流、暂停流、恢复流时,当前客户端能够提示用户,使得用户能够了解码流发生变化的原因。
StrmNotif 各种通知类型使用的属性
下表表示各种类型(act)
的通知是否使用reqId, playUrl, wsUrl, waUrl, taUrl, mediaTyp, lostRate, closeCause, closeReason
等属性。对应格子空的,表示不使用该属性。
| act | reqId | playUrl | wsUrl | taUrl | mediaTyp | lostRate | closeCause/closeReason | ac | aBitRate | vc | frameRate | playedAvDumpUrl |
|---|
sent | 使用 | - | - | - | - | - | - | | | | | |
failed | 使用 | - | - | - | - | - | - | | | | | |
id | 使用 | - | - | - | - | - | - | | | | | |
ready | 使用 | 使用 | 使用 | 当请求为对讲时使用 | 使用 | - | - | 使用 | 使用 | 使用 | 使用 | |
qr | - | - | - | - | - | 使用 | - | | | | | |
closed | 使用 | - | - | - | - | - | 使用 | | | | | 使用 |
AvUploadNotif 远程录像上传状态变更通知
| 属性 | 数据类型 | 必要 | 说明 |
|---|
| reqId | string | Y | 请求ID。上传远程录像请求 (POST /strm_media/stored/upload)接口返回的请求ID(reqId) |
| simNo | string | Y | 终端识别号 |
| st | int | Y | 录像上传状态代码:
1: 请求已创建
2: 终端已经应答
3: 上传中
4: 上传已完成
5: 失败
6: 已经取消
7: 超时 |
| uploadedSz | int | | 已上传文件大小。当(st == 3)或(st == 4)时出现本属性 |
| fileName | string | | 文件名。仅当st == 4时出现本属性 |
| url | string | | 下载URL。仅当st == 4时出现本属性 |
| uploadTm | string | | 上传完成时间。格式:yyyy-MM-dd HH:mm:ss。仅当st == 4时出现本属性 |
removeEventListener
function removeEventListener(type: string, listener: Handler<any>): void {
}
移除事件监听器。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| type | string | Y | 事件类型。为 StrmEvents 系列常量之一 |
| listener | Handler<any> | Y | 事件处理器 |
addStrmNotifListener
function addStrmNotifListener(listener: Handler<StrmNotif>): void {
}
添加媒体状态变更通知。通常在事件处理方法中针对 StrmNofit.ACT__strmReady
进行处理。本方法等同于调用 addEventListener(StrmEvents.EVENT_strmNotif, listener)。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| listener | Handler<StrmNotif> | Y | 事件处理器 |
removeStrmNotifListener
function removeStrmNotifListener(listener: Handler<StrmNotif>): void {
}
移除媒体状态变更通知。本方法等同于调用 removeEventListener(StrmEvents.EVENT_strmNotif, listener)。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| listener | Handler<StrmNotif> | Y | 事件处理器 |
addSessionCreatedListener
function addSessionCreatedListener(listener: Handler<SessionCreatedEvent>): void {
}
添加会话创建事件监听器。本方法等同于调用 addEventListener(StrmEvents.EVENT_sessionCreated, listener)。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| listener | Handler<SessionCreatedEvent> | Y | 事件处理器 |
removeSessionCreatedListener
function removeSessionCreatedListener(listener: Handler<SessionCreatedEvent>) {
}
移除会话创建事件监听器。本方法等同于调用 removeEventListener(StrmEvents.EVENT_sessionCreated, listener)。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| listener | Handler<SessionCreatedEvent> | Y | 事件处理器 |
addSessionInvalidListener
function addSessionInvalidListener(listener: Handler<SessionInvalidEvent>): void {
}
添加会话失效事件监听器。本方法等同于调用 addEventListener(StrmEvents.EVENT_sessionInvalid, listener)。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| listener | Handler<SessionInvalidEvent> | Y | 事件处理器 |
removeSessionInvalidListener
function removeSessionInvalidListener(listener: Handler<SessionInvalidEvent>): void {
}
移除会话失效事件监听器。本方法等同于调用 removeEventListener(StrmEvents.EVENT_sessionInvalid, listener)。
| 参数名 | 数据类型 | 必要 | 说明 |
|---|
| listener | Handler<SessionInvalidEvent> | Y | 事件处理器 |