onPlayerEvent method

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

event type:

事件类型: 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 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;
      _changeState(TXPlayerState.playing);
      break;
    case TXVodPlayEvent.PLAY_EVT_PLAY_BEGIN:
      if (_isNeedDisposed) return;
      _changeState(TXPlayerState.playing);
      break;
    case TXVodPlayEvent.PLAY_EVT_PLAY_PROGRESS: // Playback 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: // Downstream video resolution change.
      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;
        }
      }
      int videoDegree = map['EVT_KEY_VIDEO_ROTATION'] ?? 0;
      if (Platform.isIOS && videoDegree == -1) {
        videoDegree = 0;
      }
      value = _value!.copyWith(degree: videoDegree);
      break;
    case TXVodPlayEvent.PLAY_EVT_VOD_PLAY_PREPARED: // VOD loading completed.
      break;
    case TXVodPlayEvent.PLAY_EVT_VOD_LOADING_END: // Loading ended
      break;
    case TXVodPlayEvent.PLAY_ERR_NET_DISCONNECT:
      _changeState(TXPlayerState.failed);
      break;
    case TXVodPlayEvent.PLAY_ERR_FILE_NOT_FOUND:
      _changeState(TXPlayerState.failed);
      break;
    case TXVodPlayEvent.PLAY_ERR_HLS_KEY:
      _changeState(TXPlayerState.failed);
      break;
    case TXVodPlayEvent.PLAY_WARNING_RECONNECT:
      break;
    case TXVodPlayEvent.PLAY_WARNING_DNS_FAIL:
      break;
    case TXVodPlayEvent.PLAY_WARNING_SEVER_CONN_FAIL:
      break;
    case TXVodPlayEvent.PLAY_WARNING_SHAKE_FAIL:
      break;
    case TXVodPlayEvent.EVENT_SUBTITLE_DATA:
      String subtitleDataStr = map[TXVodPlayEvent.EXTRA_SUBTITLE_DATA] ?? "";
      if (subtitleDataStr != "") {
        map[TXVodPlayEvent.EXTRA_SUBTITLE_DATA] = subtitleDataStr.trim().replaceAll('\\N', '\n');
      }
      break;
    default:
      break;
  }
  _eventStreamController.add(map);
}