StreamEvent

Stream 事件列表

Stream.on('eventName') 事件监听中的事件名称。

Members

(static) PLAYER_STATE_CHANGED

Default Value:
  • 'player-state-changed'

Audio/Video Player 状态变化事件 App 可根据状态变化来更新 UI,比如,通过监听 video player 状态变化来关闭或打开遮板。

  • 'PLAYING':开始播放
  • 'PAUSED':暂停播放
    • event.reason 为 'pause' 时,由 <audio>/<video> element 的 pause 事件触发,如下几种情况会触发:
      • 调用 HTMLMediaElement.pause 接口。
      • 在 stream.play(elementId) 后,从 DOM 中移除 elementId 对应的 div 容器。
      • 在 stream.play(elementId) 后,移动 elementId 对应的 div 容器,在 Chrome M70 版本及以下的浏览器上可能会触发该事件,此时您需要调用 Stream.resume() 继续播放。
    • event.reason 为 'mute' 时。详见事件 MediaStreamTrack.mute_event
      • 若 LocalStream 触发该事件,表明音频/视频采集暂停,通常是设备异常引起,如设备被其他应用抢占,此时需引导用户重新采集。
      • 若 RemoteStream 触发该事件,表明收到的音频/视频数据不足以播放。通常是网络抖动引起,接入侧无需做任何处理。当收到的数据足以播放时,会自动恢复。
  • 'STOPPED':停止播放

reason 状态变化原因:

Example
stream.on('player-state-changed', event => {
  console.log(`${event.type} player is ${event.state} because of ${event.reason}`);
});

(static) SCREEN_SHARING_STOPPED

Default Value:
  • 'screen-sharing-stopped'

本地屏幕分享停止事件通知,仅对本地屏幕分享流有效。

Example
stream.on('screen-sharing-stopped', () => {
  console.log('screen sharing was stopped');
});

(static) CONNECTION_STATE_CHANGED

Since:
  • v4.10.1
Default Value:
  • 'connection-state-changed'

Stream 连接状态变更事件

  • 'DISCONNECTED':连接断开
  • 'CONNECTING':正在连接中
  • 'CONNECTED':已连接
  • 'RECONNECTING':自动重连中

不同状态变更的含义:

  • DISCONNECTED -> CONNECTING: 正在尝试建立连接,调用推流或者订阅接口但尚未成功时触发。
  • CONNECTING -> CONNECTED: 连接建立成功,推流成功或订阅成功触发。
  • CONNECTED -> DISCONNECTED: 连接中断,当网络异常导致连接断开时触发。
  • DISCONNECTED -> RECONNECTING: 正在重连,当连接异常断开时,SDK 尝试自动重连时触发。
  • RECONNECTING -> CONNECTED: SDK 自动重连成功。
  • RECONNECTING -> DISCONNECTED: SDK 自动重连失败。

处理建议:可以监听该事件,准确区分出每路 Stream 的连接状态。在恰当时机给用户做提示。
例如:当出现 RECONNECTING 时,提示用户当前连接状态异常,正在进行重连,引导用户检查自身网络是否正常。

Note:

  • 若您需要监听 Stream 的连接状态变更,请在 stream-added 事件监听该事件,并在 stream-removed 事件取消该事件监听。
Example
stream.on('connection-state-changed', (event) => {
  console.log(`prevState: ${event.prevState}, state: ${event.state}`);
});

(static) ERROR

Default Value:
  • 'error'

错误事件,当出现不可恢复错误后,会抛出此事件

Example
stream.on('error', error => {
  const errorCode = error.getCode();
  if (errorCode === 0x4043) {
    // 自动播放受限,引导用户手势操作并调用 stream.resume 恢复音视频播放
    // 参考:https://trtc-1252463788.file.myqcloud.com/web/docs/module-ErrorCode.html#.PLAY_NOT_ALLOWED
  } else if (errorCode === 0x4044) {
    // 媒体设备被拔出后自动恢复失败,参考:https://trtc-1252463788.file.myqcloud.com/web/docs/module-ErrorCode.html#.DEVICE_AUTO_RECOVER_FAILED
  }
});