rtcEngine$onFirstRemoteVideoFrameRendered$info$withFrameInfo method
FutureOr<void>
rtcEngine$onFirstRemoteVideoFrameRendered$info$withFrameInfo(
- dynamic engine,
- dynamic streamId,
- dynamic info,
- dynamic frameInfo,
override
@detail callback
@author zhushufan.ref
@brief SDK 内部渲染成功远端视频流首帧后,收到此回调。包含以下情况:
1. 发布端首次发布视频
2. 在 1 条件下,发布端取消发布视频后,再次发布视频
3. 在 1 条件下,发布端关闭视频采集后,再次打开采集(或使用外部源时,停止推流后再次推流)
4. 在 1 条件下,订阅端取消订阅视频后,再次订阅视频(调用接口包括 subscribeAllStreamsVideo:{@link #ByteRTCRoom-subscribeAllStreamsVideo}pauseAllSubscribedStreamVideo:{@link #ByteRTCRoom-pauseAllSubscribedStreamVideo}/resumeAllSubscribedStreamVideo:{@link #ByteRTCRoom-resumeAllSubscribedStreamVideo})
@param engine ByteRTCEngine 对象
@param streamId 远端流 ID。
@param info 远端流信息,参看 ByteRTCStreamInfo{@link #ByteRTCStreamInfo}。
@param frameInfo 视频帧信息,参看 ByteRTCVideoFrameInfo{@link #ByteRTCVideoFrameInfo}
@note 仅在采用内部渲染时,符合上述策略。
Implementation
FutureOr<void> rtcEngine$onFirstRemoteVideoFrameRendered$info$withFrameInfo(
dynamic engine, dynamic streamId, dynamic info, dynamic frameInfo) async {
if ($instance == null || $instance is! IRTCEngineEventHandler) {
return;
}
return ($instance as IRTCEngineEventHandler)
.onFirstRemoteVideoFrameRendered
?.call(
streamId.toString(),
packObject(
info,
() => StreamInfo.fromMap(StreamInfo.deepPackedMapValues(
StreamInfo.mapMemberToConstructorParams(info)))),
packObject(
frameInfo,
() => VideoFrameInfo.fromMap(VideoFrameInfo.deepPackedMapValues(
VideoFrameInfo.mapMemberToConstructorParams(frameInfo)))));
}