onFirstRemoteVideoFrameRendered method

FutureOr<void> onFirstRemoteVideoFrameRendered(
  1. dynamic streamId,
  2. dynamic streamInfo,
  3. dynamic frameInfo
)
override

@detail callback @author zhushufan.ref @brief SDK 内部渲染成功远端视频流首帧后,收到此回调。包含以下情况:
1. 发布端首次发布视频
2. 在 1 条件下,发布端取消发布视频后,再次发布视频
3. 在 1 条件下,发布端关闭视频采集后,再次打开采集(或使用外部源时,停止推流后再次推流)
4. 在 1 条件下,订阅端取消订阅视频后,再次订阅视频(调用接口包括 subscribeAllStreamsVideo{@link #RTCRoom-subscribeAllStreamsVideo},pauseAllSubscribedStreamVideo{@link #RTCRoom#pauseAllSubscribedStreamVideo}。 @param streamId 远端流 ID @param streamInfo 远端流信息, 详见 StreamInfo{@link #StreamInfo} @param frameInfo 视频帧信息,参看 VideoFrameInfo{@link #VideoFrameInfo} @note 仅在采用内部渲染时,符合上述策略。

Implementation

FutureOr<void> onFirstRemoteVideoFrameRendered(
    dynamic streamId, dynamic streamInfo, dynamic frameInfo) async {
  if ($instance == null || $instance is! IRTCEngineEventHandler) {
    return;
  }
  return ($instance as IRTCEngineEventHandler)
      .onFirstRemoteVideoFrameRendered
      ?.call(
          streamId.toString(),
          packObject(
              streamInfo,
              () => StreamInfo.fromMap(StreamInfo.deepPackedMapValues(
                  StreamInfo.mapMemberToConstructorParams(streamInfo)))),
          packObject(
              frameInfo,
              () => VideoFrameInfo.fromMap(VideoFrameInfo.deepPackedMapValues(
                  VideoFrameInfo.mapMemberToConstructorParams(frameInfo)))));
}