NERtc iOS SDK  V5.5.40
NERtcEngineDelegate.h
浏览该文件的文档.
1 /*
2  * Copyright (c) 2021 NetEase, Inc. All rights reserved.
3  */
4 
5 #import <Foundation/Foundation.h>
7 #import "NERtcEngineEnum.h"
8 #import "NERtcEngineBase.h"
9 #import <CoreVideo/CoreVideo.h>
10 
11 #pragma clang diagnostic push
12 #pragma clang diagnostic ignored "-Wdocumentation"
13 
14 
15 NS_ASSUME_NONNULL_BEGIN
16 
25 @protocol NERtcEngineDelegate <NSObject>
26 
27 @optional
28 
43 - (void)onNERtcEngineDidError:(NERtcError)errCode;
44 
63 - (void)onNERtcEngineDidWarning:(NERtcWarning)warnCode msg:(NSString *)msg;
64 
65 - (void)onNERtcEngineApiDidExecuted:(NSString *)apiName errCode:(NERtcError)errCode msg:(NSString *)msg;
66 
81 - (void)onNERtcEngineConnectionStateChangeWithState:(NERtcConnectionStateType)state
82  reason:(NERtcReasonConnectionChangedType)reason;
83 
97 - (void)onNERtcEngineDidLeaveChannelWithResult:(NERtcError)result;
98 
114 - (void)onNERtcEngineDidDisconnectWithReason:(NERtcError)reason;
115 
128  - (void)onNERtcEngineRejoinChannel:(NERtcError)result;
129 
156  - (void)onNERtcEngineUserDidJoinWithUserID:(uint64_t)userID userName:(NSString *)userName;
157 
199 - (void)onNERtcEngineUserDidJoinWithUserID:(uint64_t)userID userName:(NSString *)userName joinExtraInfo:(nullable NERtcUserJoinExtraInfo *)joinExtraInfo;
200 
201 
225 - (void)onNERtcEngineUserDidLeaveWithUserID:(uint64_t)userID reason:(NERtcSessionLeaveReason)reason;
226 
269 - (void)onNERtcEngineUserDidLeaveWithUserID:(uint64_t)userID reason:(NERtcSessionLeaveReason)reason leaveExtraInfo:(nullable NERtcUserLeaveExtraInfo *)leaveExtraInfo;
270 
292 - (void)onNERtcEngineDidClientRoleChanged:(NERtcClientRole)oldRole newRole:(NERtcClientRole)newRole;
293 
305 
317 - (void)onNERtcEngineUserAudioDidStart:(uint64_t)userID;
318 
330 - (void)onNERtcEngineUserAudioDidStop:(uint64_t)userID;
331 
347 - (void)onNERtcEngineUserVideoDidStartWithUserID:(uint64_t)userID videoProfile:(NERtcVideoProfileType)profile;
348 
362 - (void)onNERtcEngineUserVideoDidStop:(uint64_t)userID;
363 
378 - (void)onNERtcEngineUserSubStreamDidStartWithUserID:(uint64_t)userID subStreamProfile:(NERtcVideoProfileType)profile;
379 
392 - (void)onNERtcEngineUserSubStreamDidStop:(uint64_t)userID;
393 
416 - (void)onNERtcEngineMediaRightChangeWithAudio:(BOOL)isAudioBannedByServer
417  video:(BOOL)isVideoBannedByServer;
418 
431 - (void)onNERtcEngineUserSubStreamAudioDidStart:(uint64_t)userID;
432 
445 - (void)onNERtcEngineUserSubStreamAudioDidStop:(uint64_t)userID;
446 
465 - (void)onNERtcEngineUser:(uint64_t)userID subStreamAudioMuted:(BOOL)muted;
466 
467 @end
468 
479 @protocol NERtcEngineLiveStreamObserver <NSObject>
480 
481 @optional
496 - (void)onNERTCEngineLiveStreamState:(NERtcLiveStreamStateCode)state taskID:(NSString *)taskID url:(NSString *)url;
497 
498 @end
499 
510 @protocol NERtcEngineVideoFrameObserver <NSObject>
511 
512 @optional
513 
530 - (void)onNERtcEngineVideoFrameCaptured:(CVPixelBufferRef)bufferRef rotation:(NERtcVideoRotationType)rotation;
531 
532 @end
533 
543 
544 @optional
545 //
546 //- (void)onNERtcEngineAudioDeviceInterruptionBegan;
547 //
548 //- (void)onNERtcEngineAudioDeviceInterruptionEnded;
549 
560 - (void)onNERtcEngineAudioDeviceRoutingDidChange:(NERtcAudioOutputRouting)routing;
561 
562 @end
563 
572 @protocol NERtcEngineVideoRenderSink <NSObject>
573 
574 @optional
587 - (void)onNERtcEngineRenderFrame:(NERtcVideoFrame *_Nonnull)frame;
588 
589 // 渲染所需的 buffer 类型,默认为 NERtcVideoBufferTypeRawData
591 
592 @end
603 @protocol NERtcEngineVideoSEIObserver <NSObject>
604 
605 @optional
606 
623 - (void)onNERtcEngineRecvSEIMsg:(uint64_t)userID message:(NSData *)message;
624 
625 @end
626 
627 @protocol NERtcEnginePreDecodeObserver <NSObject>
628  @optional
651 - (void)onNERtcEnginePreDecoderFrame:(NERtcPreDecoderFrameInfo *)preDecoderFrame;
652 
653 @end
654 
656 
657  @optional
658 
681 - (void)onNERtcEngineRequestSendKeyFrame:(NERtcStreamChannelType)videoStreamType;
682 
710 - (void)onNERtcEngineBitrateUpdated:(int)bitrateBps
711  videoStreamType:(NERtcStreamChannelType)videoStreamType;
712 
740 - (void)onNERtcEngineVideoCodecUpdated:(NERtcVideoCodecType)videoCodecType
741  videoStreamType:(NERtcStreamChannelType)videoStreamType;
742 
743 @end
744 
754 NERtcEngineVideoFrameObserver, // deprecated, USE setVideoFrameObserver:(id<NERtcEngineVideoFrameObserver>)videoframeObserver instead
758 
759 @optional
760 
775 - (void)onNERtcEngineUserVideoProfileDidUpdate:(uint64_t)userID maxProfile:(NERtcVideoProfileType)maxProfile;
776 
794 - (void)onNERtcEngineUser:(uint64_t)userID videoMuted:(BOOL)muted;
795 
826 - (void)onNERtcEngineUser:(uint64_t)userID videoMuted:(BOOL)muted streamType:(NERtcStreamChannelType)streamType;
827 
841 - (void)onNERtcEngineUser:(uint64_t)userID audioMuted:(BOOL)muted;
842 
857 - (void)onNERtcEngineFirstVideoDataDidReceiveWithUserID:(uint64_t)userID;
858 
887 - (void)onNERtcEngineFirstVideoDataDidReceiveWithUserID:(uint64_t)userID streamType:(NERtcStreamChannelType)streamType;
888 
927 - (void)onNERtcEngineRemoteVideoSizeDidChangedWithUserID:(uint64_t)userID width:(uint32_t)width height:(uint32_t)height streamType:(NERtcStreamChannelType)streamType;
928 
962 - (void)onNERtcEngineLocalVideoRenderSizeChanged:(NERtcStreamChannelType)streamType width:(uint32_t)width height:(uint32_t)height;
963 
974 - (void)onNERtcEngineFirstAudioDataDidReceiveWithUserID:(uint64_t)userID;
975 
987 - (void)onEngineFirstAudioFrameDecoded:(uint64_t)userID;
1010 - (void)onNERtcEngineLocalFirstAudioPacketSent:(NERtcAudioStreamType)streamType;
1029 - (void)onEngineFirstVideoFrameDecoded:(uint64_t)userID width:(uint32_t)width height:(uint32_t)height;
1030 
1066 - (void)onEngineFirstVideoFrameDecoded:(uint64_t)userID width:(uint32_t)width height:(uint32_t)height streamType:(NERtcStreamChannelType)streamType;
1067 
1108 - (void)onEngineFirstVideoFrameRender:(uint64_t)userID width:(uint32_t)width height:(uint32_t)height elapsed:(uint64_t)elapsed streamType:(NERtcStreamChannelType)streamType;
1109 
1124 - (void)onNERtcEngineAudioDeviceStateChangeWithDeviceID:(NSString *)deviceID deviceType:(NERtcAudioDeviceType)deviceType deviceState:(NERtcAudioDeviceState)deviceState;
1125 
1144 - (void)onNERtcEngineVideoDeviceStateChangeWithDeviceID:(NSString *)deviceID deviceType:(NERtcVideoDeviceType)deviceType deviceState:(NERtcVideoDeviceState)deviceState;
1145 
1158 - (void)onNERtcEngineNetworkConnectionTypeChanged:(NERtcNetworkConnectionType)newConnectionType;
1159 
1181 - (void)onAudioMixingStateChanged:(NERtcAudioMixingState)state errorCode:(NERtcAudioMixingErrorCode)errorCode;
1182 
1195 - (void)onAudioMixingTimestampUpdate:(uint64_t)timeStampMS;
1196 
1197 
1209 - (void)onAudioEffectFinished:(uint32_t)effectId;
1210 
1238 - (void)onAudioEffectTimestampUpdateWithId:(uint32_t)effectId timeStampMS:(uint64_t)timeStampMS;
1239 
1258 - (void)onLocalAudioVolumeIndication:(int)volume;
1259 
1278 - (void)onLocalAudioVolumeIndication:(int)volume withVad:(BOOL)enableVad;
1279 
1280 
1303 -(void)onRemoteAudioVolumeIndication:(nullable NSArray<NERtcAudioVolumeInfo*> *)speakers totalVolume:(int)totalVolume;
1304 
1319 - (void)onNERtcEngineHardwareResourceReleased:(NERtcError)result;
1320 
1337 - (void)onNERtcCameraFocusChanged:(CGPoint)focusPoint;
1338 
1353 - (void)onNERtcCameraExposureChanged:(CGPoint)exposurePoint;
1354 
1355 
1356 
1372 
1386 - (void)onNERtcEngineAudioHasHowling:(BOOL)flag;
1387 
1400 - (void)onNERtcEngineChannelMediaRelayStateDidChange:(NERtcChannelMediaRelayState)state channelName:(NSString *)channelName;
1401 
1416 - (void)onNERtcEngineDidReceiveChannelMediaRelayEvent:(NERtcChannelMediaRelayEvent)event channelName:(NSString *)channelName error:(NERtcError)error;
1417 
1431 - (void)onNERtcEngineAudioRecording:(NERtcAudioRecordingCode)code filePath:(NSString *)filePath;
1432 
1433 
1454 - (void)onNERtcEngineLocalPublishFallbackToAudioOnly:(BOOL)isFallback streamType:(NERtcStreamChannelType)streamType;
1455 
1479 - (void)onNERtcEngineRemoteSubscribeFallbackToAudioOnly:(uint64_t)uid isFallback:(BOOL)isFallback streamType:(NERtcStreamChannelType)streamType;
1480 
1496 - (void)onNERtcEngineLastmileQuality:(NERtcNetworkQuality)quality;
1497 
1514 - (void)onNERtcEngineLastmileProbeTestResult:(NERtcLastmileProbeResult *)result;
1515 
1535 - (void)onNERtcEngineVirtualBackgroundSourceEnabled:(BOOL)enabled reason:(NERtcVirtualBackgroundSourceStateReason)reason;
1536 
1551 - (void)onNERtcEngineLocalVideoWatermarkStateWithStreamType:(NERtcStreamChannelType)type
1552  state:(NERtcLocalVideoWatermarkState)state;
1565 
1598 - (void)onNERtcEngineUpdatePermissionKey:(NSString *)key error:(NERtcError)error timeout:(NSUInteger)timeout;
1599 
1612 - (void)onNERtcEngineUserDataDidStart:(uint64_t)userID;
1613 
1624 - (void)onNERtcEngineUserDataDidStop:(uint64_t)userID;
1625 
1638 - (void)onNERtcEngineUserDataReceiveMessage:(uint64_t)userID data:(NSData *)data;
1639 
1650 - (void)onNERtcEngineUserDataStateChanged:(uint64_t)userID;
1651 
1664 - (void)onNERtcEngineUserDataBufferedAmountChanged:(uint64_t)userID previousAmount:(uint64_t)previousAmount;
1665 
1674 - (void)onNERtcEngineLabFeatureDidCallbackWithKey:(NSString*)key param:(id)param;
1675 
1676 @end
1677 
1688 @protocol NERtcEngineAudioFrameObserver <NSObject>
1689 
1690 @optional
1691 
1710 - (void)onNERtcEngineAudioFrameDidRecord:(NERtcAudioFrame *)frame;
1711 
1712 
1731 - (void)onNERtcEngineAudioFrameWillPlayback:(NERtcAudioFrame *)frame;
1732 
1755 - (void)onNERtcEnginePlaybackAudioFrameBeforeMixingWithUserID:(uint64_t)userID frame:(NERtcAudioFrame *)frame;
1756 
1781 - (void)onNERtcEnginePlaybackAudioFrameBeforeMixingWithUserID:(uint64_t)userID frame:(NERtcAudioFrame *)frame channelId:(uint64_t)channelId;
1782 
1803 - (void)onNERtcEngineMixedAudioFrame:(NERtcAudioFrame *)frame;
1804 
1805 
1824 - (void)onNERtcEngineSubStreamAudioFrameDidRecord:(NERtcAudioFrame *)frame;
1825 
1848 - (void)onNERtcEnginePlaybackSubStreamAudioFrameBeforeMixingWithUserID:(uint64_t)userID frame:(NERtcAudioFrame *)frame channelId:(uint64_t)channelId;
1849 
1850 
1851 @end
1852 
1853 @protocol NERtcEnginePacketObserver <NSObject>
1854 
1855  @optional
1861 - (BOOL)onSendAudioPacket:(NERtcPacket *)packet;
1867 - (BOOL)onSendVideoPacket:(NERtcPacket *)packet;
1873 - (BOOL)onReceiveAudioPacket:(NERtcPacket *)packet;
1879 - (BOOL)onReceiveVideoPacket:(NERtcPacket *)packet;
1880 
1881 @end
1882 
1883 NS_ASSUME_NONNULL_END
1884 
1885 #pragma clang diagnostic pop
NERtcAudioMixingErrorCode
伴音错误码。
Definition: NERtcEngineEnum.h:2544
NERtcAudioDeviceState
音频设备状态。
Definition: NERtcEngineEnum.h:3070
NERtcVirtualBackgroundSourceStateReason
虚拟背景未成功启用的原因或确认成功的信息。
Definition: NERtcEngineEnum.h:1094
NERtcVideoBufferType
Definition: NERtcEngineEnum.h:1010
NERtcChannelMediaRelayEvent
媒体流转发回调事件
Definition: NERtcEngineEnum.h:3286
NERtcChannelMediaRelayState
媒体流转发状态
Definition: NERtcEngineEnum.h:3239
NERtcVideoCodecType
Definition: NERtcEngineEnum.h:2147
NERtcAudioDeviceType
音频设备类型。
Definition: NERtcEngineEnum.h:3002
NERtcLocalVideoWatermarkState
视频水印状态。
Definition: NERtcEngineEnum.h:1276
NERtcAudioOutputRouting
音频路由。
Definition: NERtcEngineEnum.h:1412
NERtcAudioMixingState
伴音任务状态。
Definition: NERtcEngineEnum.h:2515
NERtcSessionLeaveReason
用户离开房间的原因。
Definition: NERtcEngineEnum.h:121
NERtcConnectionStateType
当前房间的连接状态。
Definition: NERtcEngineEnum.h:45
NERtcVideoProfileType
视频 profile 类型。
Definition: NERtcEngineEnum.h:415
NERtcNetworkConnectionType
网络连接的类型。
Definition: NERtcEngineEnum.h:2701
NERtcAudioRecordingCode
录音回调状态码。
Definition: NERtcEngineEnum.h:2033
NERtcNetworkQuality
网络质量类型。
Definition: NERtcEngineEnum.h:3165
NERtcVideoDeviceState
视频设备状态无限制,SDK 可以完全控制 Audio Session。
Definition: NERtcEngineEnum.h:3117
NERtcClientRole
用户角色。
Definition: NERtcEngineEnum.h:206
NERtcStreamChannelType
SEI发送的流通道类型。
Definition: NERtcEngineEnum.h:1063
NERtcLiveStreamStateCode
直播推流状态。
Definition: NERtcEngineEnum.h:2911
NERtcReasonConnectionChangedType
当前engine连接状态变更的原因。
Definition: NERtcEngineEnum.h:255
NERtcVideoDeviceType
视频设备类型。
Definition: NERtcEngineEnum.h:3040
NERtcAudioStreamType
音频流类型,目前同时支持音频两路流:主流和辅流
Definition: NERtcEngineEnum.h:1706
NERtcVideoRotationType
视频数据的旋转方向
Definition: NERtcEngineEnum.h:971
NERtcError
Engine Error Code。
Definition: NERtcEngineErrorCode.h:17
NERtcWarning
Definition: NERtcEngineErrorCode.h:813
音频帧。
Definition: NERtcEngineBase.h:1517
声音音量信息。
Definition: NERtcEngineBase.h:1562
上下行 Last mile 网络质量探测结果。
Definition: NERtcEngineBase.h:2480
Definition: NERtcEngineBase.h:3085
编码完的媒体数据帧
Definition: NERtcEngineBase.h:2836
onUserJoined 回调时的一些可选信息
Definition: NERtcEngineBase.h:2770
onUserLeave 回调时的一些可选信息
Definition: NERtcEngineBase.h:2782
视频帧信息。
Definition: NERtcEngineBase.h:1607
音频数据回调 如果需要对音频数据做处理,需要实现这个 protocol
Definition: NERtcEngineDelegate.h:1688
音频会话回调
Definition: NERtcEngineDelegate.h:542
NERtcEngine 常用回调
Definition: NERtcEngineDelegate.h:25
void onNERtcEngineReconnectingStart()
重连开始回调。 客户端和服务器断开连接时,SDK 会进行重连,重连开始时触发此回调。重连结果请参考 onNERtcEngineRejoinChannel 、onNERtcEngineDidDisconn...
NERtcEngine 扩展回调。
Definition: NERtcEngineDelegate.h:757
void onNERtcEnginePermissionKeyWillExpire()
权限密钥即将过期事件回调。
直播推流状态回调 如果需要监听直播推流状态,需要实现这个 protocol
Definition: NERtcEngineDelegate.h:479
Definition: NERtcEngineDelegate.h:1853
Definition: NERtcEngineDelegate.h:627
Definition: NERtcEngineDelegate.h:655
本地视频数据采集回调 如果需要对采集数据做美颜等处理,需要实现这个 protocol。
Definition: NERtcEngineDelegate.h:510
外部视频渲染。
Definition: NERtcEngineDelegate.h:572
NERtcVideoBufferType getFrameBufferType()
注册 SEI 观测者。 注册观测者并拉流成功后,当远端流发送 SEI,本端会收到 onNERtcEngineRecvSEIMsg 回调。
Definition: NERtcEngineDelegate.h:603