onPlayerEvent method

  1. @override
void onPlayerEvent(
  1. Map event
)
override

event type

event 类型 see:https://cloud.tencent.com/document/product/454/7886#.E6.92.AD.E6.94.BE.E4.BA.8B.E4.BB.B6

Implementation

@override
void onPlayerEvent(Map<dynamic, dynamic> event) {
  final Map<dynamic, dynamic> map = event;
  switch (map["event"]) {
    case TXVodPlayEvent.PLAY_EVT_RTMP_STREAM_BEGIN:
      break;
    case TXVodPlayEvent.PLAY_EVT_RCV_FIRST_I_FRAME:
      if (_isNeedDisposed) return;
      if (_state == TXPlayerState.buffering) _changeState(TXPlayerState.playing);
      break;
    case TXVodPlayEvent.PLAY_EVT_PLAY_BEGIN:
      if (_isNeedDisposed) return;
      if (_state == TXPlayerState.buffering) _changeState(TXPlayerState.playing);
      break;
    case TXVodPlayEvent.PLAY_EVT_PLAY_PROGRESS: //EVT_PLAY_PROGRESS
      break;
    case TXVodPlayEvent.PLAY_EVT_PLAY_END:
      _changeState(TXPlayerState.stopped);
      break;
    case TXVodPlayEvent.PLAY_EVT_PLAY_LOADING:
      _changeState(TXPlayerState.buffering);
      break;
    case TXVodPlayEvent.PLAY_EVT_CHANGE_RESOLUTION: //下行视频分辨率改变
      if (defaultTargetPlatform == TargetPlatform.android) {
        int? videoWidth = event[TXVodPlayEvent.EVT_VIDEO_WIDTH];
        int? videoHeight = event[TXVodPlayEvent.EVT_VIDEO_HEIGHT];
        videoWidth ??= event[TXVodPlayEvent.EVT_PARAM1];
        videoHeight ??= event[TXVodPlayEvent.EVT_PARAM2];
        if ((videoWidth != null && videoWidth > 0) && (videoHeight != null && videoHeight > 0)) {
          resizeVideoWidth = videoWidth.toDouble();
          resizeVideoHeight = videoHeight.toDouble();
          videoLeft = event["videoLeft"] ?? 0;
          videoTop = event["videoTop"] ?? 0;
          videoRight = event["videoRight"] ?? 0;
          videoBottom = event["videoBottom"] ?? 0;
        }
      }
      break;
    // Live broadcast, stream switching succeeded (stream switching can play videos of different sizes):
    case TXVodPlayEvent.PLAY_EVT_STREAM_SWITCH_SUCC:
      break;
    case TXVodPlayEvent.PLAY_ERR_NET_DISCONNECT: //disconnect
      _changeState(TXPlayerState.failed);
      break;
    case TXVodPlayEvent.PLAY_WARNING_RECONNECT: //reconnect
      break;
    case TXVodPlayEvent.PLAY_WARNING_DNS_FAIL: //dnsFail
      break;
    case TXVodPlayEvent.PLAY_WARNING_SEVER_CONN_FAIL: //severConnFail
      break;
    case TXVodPlayEvent.PLAY_WARNING_SHAKE_FAIL: //shakeFail
      break;
    case TXVodPlayEvent.PLAY_ERR_STREAM_SWITCH_FAIL: //failed
      _changeState(TXPlayerState.failed);
      break;
    default:
      break;
  }
  _eventStreamController.add(map);
}