onPlayerEvent method
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);
}