AliRTCSdk v2.5
阿里云实时音视频 SDK,覆盖在全球范围内的实时音视频开发平台,为您提供高可用、高品质、超低延时的音视频通信服务。
AliRtcEngine

category  AliRtcEngine(Plugin)
 
class  AliRtcEngine
 

详细描述

AliRTC功能的插件扩展


类说明

◆ AliRtcEngine(Plugin)

category AliRtcEngine(Plugin)

构造函数

(int) - enablePlugin:pluginName:pluginType:opType:option:
 
(int) - removePlugin:
 
(int) - setPluginOption:opType:option:
 
(int) - getPluginOption:opType:option:
 
(int) - enablePlugin:pluginName:pluginType:opType:option:
 
(int) - removePlugin:
 
(int) - setPluginOption:opType:option:
 
(int) - getPluginOption:opType:option:
 

函数文档

◆ enablePlugin:pluginName:pluginType:opType:option: [1/2]

- (int) enablePlugin: (NSString *_Nullable)  moduleName
pluginName: (NSString *_Nullable)  pluginName
pluginType: (int)  pluginType
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

开启音视频处理算法插件

RTC采用插件件形式提供音视频增强及特效能力,可通过官网组件文档 进行组件下载,参考插件集成文档集成进RTC引擎;

参数
moduleName插件库包名,组件文档中会有对应描述,包名中不包含插件后缀名如:iOS/Mac平台使用虚拟背景插件bokeh.framework,则包名为bokeh,Windows平台插件库名为:bokeh.dll,则moduleName 为bokeh;
pluginName插件类名,根据下载的插件库中头文件中描述进行设置 如:虚拟背景插件头文件中描述了 pluginName 为 PluginBokeh;
pluginType插件类型,值为AliRtcPluginDataType 与AliRtcPluginOperationType组合, 如:视频前处理插件 pluginType = (AliRtcPluginDataTypeVideo << 16)|AliRtcPluginPreOperation; 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;
opType插件初始化参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option插件初始化参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • >0: 返回注册的插件ID,插件移除及插件设置和插件信息获取需要使用此返回值;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:插件库库加载失败,插件库未添加到工程中,可参考官网组件文档 按照集成文档进行集成;
    • AliRtcPluginErrorInitError: 插件初始化失败,插件类型,参数类型或参数为非法值,可参考插件集成文档检查pluginType,opType,option初始值是否符合要求;
注解
  • 入会前入会后均可调用;
  • 如果重复调用会返回之前已经注册插件ID;
  • 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;

扩展类 AliRtcEngine.

◆ removePlugin: [1/2]

- (int) removePlugin: (uint32_t)  pluginId

关闭音视频处理算法插件

参数
pluginId开启音视频处理算法插件接口调用成功后返回值;
返回
  • >0: 返回删除插件ID 即pluginId;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin:pluginId为非法值或重复调用关闭接口,请检查pluginId值是否为开启插件接口调用成功后返回值;
注解
  • 入会前入会后均可调用;
  • 重复调用返回 AliRtcPluginErrorNoFindPlugin 错误码;

扩展类 AliRtcEngine.

◆ setPluginOption:opType:option: [1/2]

- (int) setPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

根据插件ID设置插件

参数
pluginId插件开启接口调用成功后返回值;
opType设置插件参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option设置插件参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • 0: 参数设置成功;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • opType及option 取值及范围要准守已开启插件头文件接口描述;

扩展类 AliRtcEngine.

◆ getPluginOption:opType:option: [1/2]

- (int) getPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (void *_Nonnull)  option 

根据插件ID获取插件内部信息

参数
pluginId开启插件接口调用成功后返回值;
opType获取信息类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option返回的信息写入地址,插件会根据opType类型将返回的信息重写入option,需要进行内存初始化,长度请参考接入文档及插件头文件描述;
返回
  • 0: 参数设置成功
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考插件接入文档及头文件中获取插件信息接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
  • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;

扩展类 AliRtcEngine.

◆ enablePlugin:pluginName:pluginType:opType:option: [2/2]

- (int) enablePlugin: (NSString *_Nullable)  moduleName
pluginName: (NSString *_Nullable)  pluginName
pluginType: (int)  pluginType
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

开启音视频处理算法插件

RTC采用插件件形式提供音视频增强及特效能力,可通过官网组件文档 进行组件下载,参考插件集成文档集成进RTC引擎;

参数
moduleName插件库包名,组件文档中会有对应描述,包名中不包含插件后缀名如:iOS/Mac平台使用虚拟背景插件bokeh.framework,则包名为bokeh,Windows平台插件库名为:bokeh.dll,则moduleName 为bokeh;
pluginName插件类名,根据下载的插件库中头文件中描述进行设置 如:虚拟背景插件头文件中描述了 pluginName 为 PluginBokeh;
pluginType插件类型,值为AliRtcPluginDataType 与AliRtcPluginOperationType组合, 如:视频前处理插件 pluginType = (AliRtcPluginDataTypeVideo << 16)|AliRtcPluginPreOperation; 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;
opType插件初始化参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option插件初始化参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • >0: 返回注册的插件ID,插件移除及插件设置和插件信息获取需要使用此返回值;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:插件库库加载失败,插件库未添加到工程中,可参考官网组件文档 按照集成文档进行集成;
    • AliRtcPluginErrorInitError: 插件初始化失败,插件类型,参数类型或参数为非法值,可参考插件集成文档检查pluginType,opType,option初始值是否符合要求;
注解
  • 入会前入会后均可调用;
  • 如果重复调用会返回之前已经注册插件ID;
  • 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;

扩展类 AliRtcEngine.

◆ removePlugin: [2/2]

- (int) removePlugin: (uint32_t)  pluginId

关闭音视频处理算法插件

参数
pluginId开启音视频处理算法插件接口调用成功后返回值;
返回
  • >0: 返回删除插件ID 即pluginId;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin:pluginId为非法值或重复调用关闭接口,请检查pluginId值是否为开启插件接口调用成功后返回值;
注解
  • 入会前入会后均可调用;
  • 重复调用返回 AliRtcPluginErrorNoFindPlugin 错误码;

扩展类 AliRtcEngine.

◆ setPluginOption:opType:option: [2/2]

- (int) setPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

根据插件ID设置插件

参数
pluginId插件开启接口调用成功后返回值;
opType设置插件参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option设置插件参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • 0: 参数设置成功;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • opType及option 取值及范围要准守已开启插件头文件接口描述;

扩展类 AliRtcEngine.

◆ getPluginOption:opType:option: [2/2]

- (int) getPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (void *_Nonnull)  option 

根据插件ID获取插件内部信息

参数
pluginId开启插件接口调用成功后返回值;
opType获取信息类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option返回的信息写入地址,插件会根据opType类型将返回的信息重写入option,需要进行内存初始化,长度请参考接入文档及插件头文件描述;
返回
  • 0: 参数设置成功
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考插件接入文档及头文件中获取插件信息接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
  • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;

扩展类 AliRtcEngine.

◆ AliRtcEngine

class AliRtcEngine

继承自 NSObject, <AliRtcEngineDelegate>, NSObject , 以及 <AliRtcEngineDelegate> .

构造函数

(int) - setAudioOnlyMode:
 
(int) - joinChannel:name:onResult:
 
(int) - joinChannel:name:onResultWithUserId:
 
(int) - setParameter:
 
(int) - leaveChannel
 
(int) - switchChannel:
 
(int) - setChannelProfile:
 
(int) - setClientRole:
 
(AliRtcClientRole- getClientRole
 
(int) - refreshAuthInfo:
 
(int) - setLocalViewConfig:forTrack:
 
(int) - startPreview
 
(int) - stopPreview
 
(int) - setCameraCapturerConfiguration:
 
(int) - publishLocalVideoStream:
 
(int) - enableLocalVideo:
 
(int) - muteLocalCamera:forTrack:
 
(void) - setVideoEncoderConfiguration:
 
(void) - setScreenShareEncoderConfiguration:
 
(int) - muteLocalMic:mode:
 
(int) - publishLocalAudioStream:
 
(int) - startScreenShareWithDesktopId:config:
 
(int) - startScreenShareWithWindowId:config:
 
(int) - stopScreenShare
 
(int) - updateScreenShareConfig:
 
(NSArray< AliRtcScreenSourceInfo * > *_Nullable) - getScreenShareSourceInfoWithType:
 
(int) - setRemoteViewConfig:uid:forTrack:
 
(int) - setRemoteAudioVolume:volume:
 
(int) - muteRemoteAudioPlaying:mute:
 
(int) - muteAllRemoteAudioPlaying:
 
(BOOL) - isLocalVideoStreamPublished
 
(BOOL) - isScreenSharePublished
 
(BOOL) - isLocalAudioStreamPublished
 
(int) - publishLocalDualStream:
 
(BOOL) - isDualStreamPublished
 
(int) - setRemoteVideoStreamType:type:
 
(int) - setRemoteDefaultVideoStreamType:
 
(int) - subscribeAllRemoteAudioStreams:
 
(int) - subscribeAllRemoteVideoStreams:
 
(int) - subscribeRemoteAudioStream:sub:
 
(int) - subscribeRemoteVideoStream:track:sub:
 
(int) - setDefaultSubscribeAllRemoteAudioStreams:
 
(int) - setDefaultSubscribeAllRemoteVideoStreams:
 
(NSArray< NSString * > *_Nullable) - getOnlineRemoteUsers
 
(BOOL) - isUserOnline:
 
(AliRtcConnectionStatus- getCurrentConnectionStatus
 
(NSArray< AliRtcDeviceInfo * > *_Nullable) - getAudioCaptures
 
(NSString *_Nullable) - getCurrentAudioCapture
 
(NSString *_Nullable) - getCurrentAudioCaptureID
 
(void) - setCurrentAudioCapture:
 
(void) - setCurrentAudioCaptureWithID:
 
(NSArray< AliRtcDeviceInfo * > *_Nullable) - getAudioRenderers
 
(NSString *_Nullable) - getCurrentAudioRenderer
 
(NSString *_Nullable) - getCurrentAudioRendererID
 
(void) - setCurrentAudioRenderer:
 
(void) - setCurrentAudioRendererWithID:
 
(NSArray< AliRtcDeviceInfo * > *_Nullable) - getCameraList
 
(NSString *_Nullable) - getCurrentCamera
 
(NSString *_Nullable) - getCurrentCameraID
 
(void) - setCurrentCamera:
 
(void) - setCurrentCameraWithID:
 
(void) - startAudioCapture
 
(void) - startAudioCapture:
 
(void) - stopAudioCapture
 
(void) - startAudioPlayer
 
(void) - stopAudioPlayer
 
(int) - enableAudioDTX:
 
(int) - enableAudioAMD:
 
(int) - startIntelligentDenoise
 
(void) - stopIntelligentDenoise
 
(int) - enableMusicMode:
 
(int) - setRecordingDeviceMute:
 
(BOOL) - getRecordingDeviceMute
 
(int) - setPlaybackDeviceMute:
 
(BOOL) - getPlaybackDeviceMute
 
(void) - setLogLevel:
 
(int) - setRecordingVolume:
 
(int) - setPlayoutVolume:
 
(int) - setRecordingDeviceVolume:
 
(int) - getRecordingDeviceVolume
 
(int) - setPlayoutDeviceVolume:
 
(int) - getPlayoutDeviceVolume
 
(int) - setAudioProfile:audio_scene:
 
(int) - setAudioEffectVoiceChangerMode:
 
(int) - setAudioEffectPitchValue:
 
(int) - setAudioEffectReverbMode:
 
(int) - setAudioEffectReverbParamType:value:
 
(BOOL) - isCameraOn
 
(BOOL) - isInCall
 
(BOOL) - isAudioOnly
 
(NSDictionary *_Nullable) - getUserInfo:
 
(int) - showDebugView:showType:userId:
 
(int) - addVideoWatermark:image:config:
 
(int) - clearVideoWatermark:
 
(int) - setPublishImage:
 
(int) - enableSystemAudio:deviceName:
 
(bool) - isSystemAudioEnabled
 
(int) - setSystemAudioRecordingVolume:
 
(int) - getSystemAudioRecordingVolume
 
(int) - setSystemAudioPlayoutVolume:
 
(int) - getSystemAudioPlayoutVolume
 
(int) - startTestAudioRecordWithName:
 
(int) - stopTestAudioRecord
 
(int) - startTestAudioPlayoutWithName:filePath:loopCycles:
 
(int) - stopTestAudioPlayout
 
(int) - startLastmileDetect
 
(int) - stopLastmileDetect
 
(void) - subscribeAudioData:
 
(void) - unSubscribeAudioData:
 
(int) - enableAudioVolumeIndication:smooth:reportVad:
 
(void) - setSubscribeAudioNumChannel:
 
(void) - setSubscribeAudioSampleRate:
 
(void) - registerVideoSampleObserver
 
(void) - unregisterVideoSampleObserver
 
(BOOL) - getVideoCaptureData:videoSample:
 
(BOOL) - getVideoPreEncoderData:videoSample:
 
(BOOL) - getVideoRenderData:videoTrack:videoSample:
 
(int) - setExternalVideoSource:sourceType:renderMode:
 
(int) - pushExternalVideoFrame:sourceType:
 
(int) - setExternalAudioSource:withSampleRate:channelsPerFrame:
 
(int) - pushExternalAudioFrameRawData:samples:timestamp:
 
(int) - setExternalAudioVolume:
 
(int) - getExternalAudioVolume
 
(int) - setMixedWithMic:
 
(int) - setExteranlAudioRender:sampleRate:channelsPerFrame:
 
(int) - pushExternalAudioRenderRawData:sampleLength:sampleRate:channelsPerFrame:timestamp:
 
(int) - startAudioAccompanyWithFile:onlyLocalPlay:replaceMic:loopCycles:
 
(int) - stopAudioAccompany
 
(int) - setAudioAccompanyVolume:
 
(int) - setAudioAccompanyPublishVolume:
 
(int) - getAudioAccompanyPublishVolume
 
(int) - setAudioAccompanyPlayoutVolume:
 
(int) - getAudioAccompanyPlayoutVolume
 
(int) - pauseAudioAccompany
 
(int) - resumeAudioAccompany
 
(int) - getAudioAccompanyDuration
 
(int) - getAudioAccompanyCurrentPosition
 
(int) - setAudioAccompanyPosition:
 
(int) - preloadAudioEffectWithSoundId:filePath:
 
(int) - unloadAudioEffectWithSoundId:
 
(int) - playAudioEffectWithSoundId:filePath:cycles:publish:
 
(int) - stopAudioEffectWithSoundId:
 
(int) - stopAllAudioEffects
 
(int) - setAudioEffectPublishVolumeWithSoundId:volume:
 
(int) - getAudioEffectPublishVolumeWithSoundId:
 
(int) - setAudioEffectPlayoutVolumeWithSoundId:volume:
 
(int) - getAudioEffectPlayoutVolumeWithSoundId:
 
(int) - setAllAudioEffectsPlayoutVolume:
 
(int) - setAllAudioEffectsPublishVolume:
 
(int) - pauseAudioEffectWithSoundId:
 
(int) - pauseAllAudioEffects
 
(int) - resumeAudioEffectWithSoundId:
 
(int) - resumeAllAudioEffects
 
(BOOL) - startRecord:recordFormat:filePath:audioConfig:videoConfig:isFragment:
 
(BOOL) - updateRecordLayout:
 
(BOOL) - addRecordTemplate:
 
(BOOL) - startRecord:recordLayout:
 
(BOOL) - pauseRecord
 
(BOOL) - resumeRecord
 
(void) - stopRecord
 
(BOOL) - isBeautifierAvailable
 
(BOOL) - isBeautifierEnabled
 
(int) - setBeautyEffect:config:
 
(int) - snapshotVideo:type:
 
(void) - startLiveStreamingWithAuthInfo:onResult:
 
(int) - stopLiveStreaming
 
(int) - setLiveStreamingViewConfig:
 
(int) - setExternalAudioRenderVolume:
 
(int) - getExternalAudioRenderVolume
 
(int) - sendMediaExtensionMsg:repeatCount:
 
(void) - postFeedbackWithUid:channleId:description:type:timeStamp:
 
(AliRtcEngine *_Nullable) - createChannelWithDelegate:extras:
 
(void) - destroyChannel
 
(int) - startPublishLiveStreamWithURL:liveTranscoding:
 
(int) - updatePublishLiveStreamWithURL:liveTranscoding:
 
(int) - stopPublishLiveStreamWithURL:
 
(AliRtcLiveTranscodingState- GetPublishLiveStreamStateWithURL:
 
(int) - startChannelRelay:
 
(int) - updateChannelRelay:
 
(int) - stopChannelRelay
 
(void) - setPublishVideoStreamAttribute:attr:
 
(int) - enableEncryption:
 
(int) - enableBackgroundExchange:imagePath:scalMode:
 
(int) - enableBackgroundBlur:blurDegree:
 
(int) - enablePlugin:pluginName:pluginType:opType:option:
 
(int) - enablePlugin:pluginName:pluginType:opType:option:
 
(int) - removePlugin:
 
(int) - removePlugin:
 
(int) - setPluginOption:opType:option:
 
(int) - setPluginOption:opType:option:
 
(int) - getPluginOption:opType:option:
 
(int) - getPluginOption:opType:option:
 
- 构造函数 继承自 <AliRtcEngineDelegate>
(void) - onJoinChannelResult:channel:elapsed:
 
(void) - onJoinChannelResult:channel:userId:elapsed:
 
(void) - onLeaveChannelResult:stats:
 
(void) - onAudioPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onVideoPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onScreenSharePublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onRemoteUserOnLineNotify:elapsed:
 
(void) - onRemoteUserOffLineNotify:offlineReason:
 
(void) - onRemoteTrackAvailableNotify:audioTrack:videoTrack:
 
(void) - onAudioSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onVideoSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onScreenShareSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onSubscribeStreamTypeChanged:oldStreamType:newStreamType:elapseSinceLastState:channel:
 
(void) - onUpdateRoleNotifyWithOldRole:newRole:
 
(void) - onNetworkQualityChanged:upNetworkQuality:downNetworkQuality:
 
(void) - onPublishStaticVideoFrame:isStaticFrame:
 
(void) - onConnectionLost
 
(void) - onTryToReconnect
 
(void) - onConnectionRecovery
 
(void) - onConnectionStatusChange:reason:
 
(void) - onBye:
 
(void) - onOccurWarning:message:
 
(void) - onOccurError:message:
 
(void) - onPerformanceLow
 
(void) - onPerformanceRecovery
 
(void) - onFirstAudioPacketSentWithTimecost:
 
(void) - onFirstVideoPacketSentWithVideoTrack:timeCost:
 
(void) - onFirstAudioPacketReceivedWithUid:timeCost:
 
(void) - onFirstVideoPacketReceivedWithUid:videoTrack:timeCost:
 
(void) - onFirstRemoteAudioDecodedWithUid:elapsed:
 
(void) - onFirstRemoteVideoFrameDrawn:videoTrack:width:height:elapsed:
 
(void) - onFirstLocalVideoFrameDrawn:height:elapsed:
 
(void) - onAudioSampleCallback:audioSample:
 
(void) - onPlaybackAudioFrameBeforeMixing:audioSample:
 
(void) - onAudioVolumeCallback:totalVolume:
 
(void) - onActiveSpeaker:
 
(BOOL) - onGetIfUserFetchObserverData
 
(AliRtcVideoFormat- onGetVideoFormatPreference
 
(AliRtcVideoObserAlignment- onGetVideoAlignment
 
(NSInteger) - onGetVideoObservedFramePosition
 
(BOOL) - onGetObserverDataMirrorApplied
 
(BOOL) - onGetSmoothRenderingEnabled
 
(BOOL) - onCaptureVideoSample:videoSample:
 
(BOOL) - onPreEncodeVideoSample:videoSample:
 
(BOOL) - onRemoteVideoSample:videoSource:videoSample:
 
(void) - onUserAudioMuted:audioMuted:
 
(void) - onUserVideoMuted:videoMuted:
 
(void) - onUserVideoEnabled:videoEnabled:
 
(void) - onUserAudioInterruptedBegin:
 
(void) - onUserAudioInterruptedEnded:
 
(void) - onUserWillResignActive:
 
(void) - onUserWillBecomeActive:
 
(void) - onTextureCreate:
 
(int) - onTextureUpdate:width:height:videoSample:
 
(void) - onTextureDestory
 
(void) - onAudioPlayingStateChanged:errorCode:
 
(void) - onRemoteAudioAccompanyStarted:
 
(void) - onRemoteAudioAccompanyFinished:
 
(void) - onAudioEffectFinished:
 
(void) - onAuthInfoWillExpire
 
(void) - onAuthInfoExpired
 
(void) - onLastmileDetectResultWithQuality:
 
(void) - onVideoResolutionChanged:videoTrack:width:height:
 
(void) - onMediaRecordEvent:filePath:
 
(void) - onRtcStats:
 
(void) - onRtcLocalVideoStats:
 
(void) - onRtcRemoteVideoStats:
 
(void) - onRtcLocalAudioStats:
 
(void) - onRtcRemoteAudioStats:
 
(void) - onMediaExtensionMsgReceived:message:
 
(void) - onDownlinkMessageNotify:
 
(void) - onUplinkMessageResponse:
 
(void) - onAudioRouteChanged:
 
(void) - onSnapshotComplete:videoTrack:image:success:
 
(void) - onPublishLiveStreamStateChanged:state:errCode:
 
(void) - onPublishTaskStateChanged:state:
 
(void) - onChannelRelayStateChanged:code:message:
 
(void) - onChannelRelayEvent:
 
(void) - onRemoteVideoChanged:trackType:state:reason:
 
(void) - onRequestVideoExternalEncoderParameter:parameter:
 
(void) - onRequestVideoExternalEncoderFrame:frameType:
 
(void) - onJoinChannelResult:channel:elapsed:
 
(void) - onJoinChannelResult:channel:userId:elapsed:
 
(void) - onLeaveChannelResult:stats:
 
(void) - onAudioPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onVideoPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onScreenSharePublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onScreenSharePublishStateChangedWithInfo:newState:elapseSinceLastState:channel:info:
 
(void) - onRemoteUserOnLineNotify:elapsed:
 
(void) - onRemoteUserOffLineNotify:offlineReason:
 
(void) - onRemoteTrackAvailableNotify:audioTrack:videoTrack:
 
(void) - onAudioSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onVideoSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onScreenShareSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onSubscribeStreamTypeChanged:oldStreamType:newStreamType:elapseSinceLastState:channel:
 
(void) - onUpdateRoleNotifyWithOldRole:newRole:
 
(void) - onNetworkQualityChanged:upNetworkQuality:downNetworkQuality:
 
(void) - onPublishStaticVideoFrame:isStaticFrame:
 
(void) - onConnectionLost
 
(void) - onTryToReconnect
 
(void) - onConnectionRecovery
 
(void) - onConnectionStatusChange:reason:
 
(void) - onBye:
 
(void) - onOccurWarning:message:
 
(void) - onOccurError:message:
 
(void) - onPerformanceLow
 
(void) - onPerformanceRecovery
 
(void) - onFirstAudioPacketSentWithTimecost:
 
(void) - onFirstVideoPacketSentWithVideoTrack:timeCost:
 
(void) - onFirstAudioPacketReceivedWithUid:timeCost:
 
(void) - onFirstVideoPacketReceivedWithUid:videoTrack:timeCost:
 
(void) - onFirstRemoteAudioDecodedWithUid:elapsed:
 
(void) - onFirstRemoteVideoFrameDrawn:videoTrack:width:height:elapsed:
 
(void) - onFirstLocalVideoFrameDrawn:height:elapsed:
 
(void) - onAudioVolumeCallback:totalVolume:
 
(void) - onActiveSpeaker:
 
(void) - onAudioSampleCallback:audioSample:
 
(void) - onPlaybackAudioFrameBeforeMixing:audioSample:
 
(void) - onAudioDeviceRecordLevel:
 
(void) - onAudioDevicePlayoutLevel:
 
(void) - onAudioDevicePlayoutEnd
 
(void) - onAudioDeviceStateChanged:deviceType:deviceState:
 
(void) - onVideoDeviceStateChanged:deviceType:deviceState:
 
(void) - onVideoResolutionChanged:videoTrack:width:height:
 
(void) - onLastmileDetectResultWithQuality:
 
(BOOL) - onGetIfUserFetchObserverData
 
(AliRtcVideoFormat- onGetVideoFormatPreference
 
(AliRtcVideoObserAlignment- onGetVideoAlignment
 
(NSInteger) - onGetVideoObservedFramePosition
 
(BOOL) - onGetObserverDataMirrorApplied
 
(BOOL) - onGetSmoothRenderingEnabled
 
(BOOL) - onCaptureVideoSample:videoSample:
 
(BOOL) - onPreEncodeVideoSample:videoSample:
 
(BOOL) - onRemoteVideoSample:videoSource:videoSample:
 
(void) - onMediaRecordEvent:filePath:
 
(void) - onRtcStats:
 
(void) - onRtcLocalVideoStats:
 
(void) - onRtcRemoteVideoStats:
 
(void) - onRtcLocalAudioStats:
 
(void) - onRtcRemoteAudioStats:
 
(void) - onMediaExtensionMsgReceived:message:
 
(void) - onSnapshotComplete:videoTrack:image:success:
 
(void) - onUserAudioMuted:audioMuted:
 
(void) - onUserVideoMuted:videoMuted:
 
(void) - onUserVideoEnabled:videoEnabled:
 
(void) - onUserAudioInterruptedBegin:
 
(void) - onUserAudioInterruptedEnded:
 
(void) - onUserWillResignActive:
 
(void) - onUserWillBecomeActive:
 
(void) - onChannelRelayStateChanged:code:message:
 
(void) - onChannelRelayEvent:
 
(void) - onRemoteVideoChanged:trackType:state:reason:
 
(void) - onPublishLiveStreamStateChanged:state:errCode:
 
(void) - onPublishTaskStateChanged:state:
 
(void) - onAudioPlayingStateChanged:errorCode:
 
(void) - onRemoteAudioAccompanyStarted:
 
(void) - onRemoteAudioAccompanyFinished:
 
(void) - onAudioEffectFinished:
 
(void) - onRequestVideoExternalEncoderParameter:parameter:
 
(void) - onRequestVideoExternalEncoderFrame:frameType:
 
(void) - onAuthInfoWillExpire
 
(void) - onAuthInfoExpired
 

类方法

(instancetype _Nonnull) + sharedInstance:extras:
 
(void) + destroy
 
(NSString *_Nonnull) + getSdkVersion
 
(int) + setLogDirPath:
 
(void) + uploadLog
 
(NSString *_Nullable) + getErrorDescription:
 
(void) + setH5CompatibleMode:
 
(BOOL) + getH5CompatibleMode
 

Engine的生命周期,工作参数以及频道操作

(instancetype _Nonnull) + sharedInstance:extras:
 
(void) + destroy
 
(NSString *_Nonnull) + getSdkVersion
 
(int) + setLogDirPath:
 
(void) + uploadLog
 
(NSString *_Nullable) + getErrorDescription:
 
(int) - enableDelegateMainQueue:
 
(int) - setDelegateQueue:
 
(int) - setAudioOnlyMode:
 
(int) - joinChannel:name:onResult:
 
(int) - joinChannel:name:onResultWithUserId:
 
(int) - setParameter:
 
(int) - leaveChannel
 
(int) - switchChannel:
 
(int) - setChannelProfile:
 
(int) - setClientRole:
 
(AliRtcClientRole- getCurrentClientRole
 
(int) - refreshAuthInfo:
 

其他

(void) + setH5CompatibleMode:
 
(BOOL) + getH5CompatibleMode
 
(void) - setLogLevel:
 
(BOOL) - isCameraOn
 
(BOOL) - isInCall
 
(BOOL) - isAudioOnly
 
(NSDictionary *_Nullable) - getUserInfo:
 
(int) - showDebugView:showType:userId:
 

设置和操作本地的媒体

(int) - setLocalViewConfig:forTrack:
 
(int) - startPreview
 
(int) - stopPreview
 
(int) - setCameraCapturerConfiguration:
 
(int) - enableLocalVideo:
 
(int) - muteLocalCamera:forTrack:
 
(int) - publishLocalVideoStream:
 
(void) - setVideoEncoderConfiguration:
 
(void) - setScreenShareEncoderConfiguration:
 
(int) - muteLocalMic:
 
(int) - muteLocalMic:mode:
 
(int) - publishLocalAudioStream:
 

操作来自远端的媒体

(int) - setRemoteViewConfig:uid:forTrack:
 
(int) - setRemoteAudioVolume:volume:
 
(int) - muteRemoteAudioPlaying:mute:
 
(int) - muteAllRemoteAudioPlaying:
 
(int) - muteAllRemoteVideoRendering:
 

用户管理

(BOOL) - isLocalVideoStreamPublished
 
(BOOL) - isLocalAudioStreamPublished
 
(int) - publishLocalDualStream:
 
(BOOL) - isDualStreamPublished
 
(int) - startScreenShare
 
(int) - startScreenShare:mode:
 
(int) - stopScreenShare
 
(int) - setAudioShareAppVolume:
 
(BOOL) - isScreenSharePublished
 
(int) - setRemoteVideoStreamType:type:
 
(int) - setRemoteDefaultVideoStreamType:
 
(int) - subscribeAllRemoteAudioStreams:
 
(int) - subscribeAllRemoteVideoStreams:
 
(int) - subscribeRemoteAudioStream:sub:
 
(int) - subscribeRemoteVideoStream:track:sub:
 
(int) - setDefaultSubscribeAllRemoteAudioStreams:
 
(int) - setDefaultSubscribeAllRemoteVideoStreams:
 
(NSArray< NSString * > *_Nullable) - getOnlineRemoteUsers
 
(BOOL) - isUserOnline:
 
(AliRtcConnectionStatus- getCurrentConnectionStatus
 

设备管理

(int) - enableSpeakerphone:
 
(BOOL) - isEnableSpeakerphone
 
(int) - setRecordingVolume:
 
(int) - setPlayoutVolume:
 
(int) - setAudioProfile:audio_scene:
 
(int) - setAudioSessionOperationRestriction:
 
(int) - setDeviceVolumeType:
 
(int) - switchCamera
 
(AliRtcCameraDirection- getCurrentCameraDirection
 
(int) - setCameraZoom:
 
(int) - setCameraFlash:
 
(BOOL) - isCameraFocusPointSupported
 
(BOOL) - isCameraExposurePointSupported
 
(int) - setCameraFocusPoint:
 
(int) - setCameraExposurePoint:
 
(BOOL) - isCameraAutoFocusFaceModeSupported
 
(BOOL) - setCameraAutoFocusFaceModeEnabled:
 
(void) - startAudioCapture
 
(void) - startAudioCapture:
 
(void) - stopAudioCapture
 
(void) - startAudioPlayer
 
(void) - stopAudioPlayer
 

音视频裸数据输入输出

(void) - setSubscribeAudioNumChannel:
 
(void) - setSubscribeAudioSampleRate:
 
(void) - subscribeAudioData:
 
(void) - unSubscribeAudioData:
 
(int) - enableAudioVolumeIndication:smooth:reportVad:
 
(void) - registerVideoSampleObserver
 
(void) - unregisterVideoSampleObserver
 
(BOOL) - getVideoCaptureData:videoSample:
 
(BOOL) - getVideoPreEncoderData:videoSample:
 
(BOOL) - getVideoRenderData:videoTrack:videoSample:
 
(void) - registerLocalVideoTexture
 
(void) - unregisterLocalVideoTexture
 
(int) - setExternalVideoSource:sourceType:renderMode:
 
(int) - pushExternalVideoFrame:sourceType:
 
(int) - setExternalAudioSource:withSampleRate:channelsPerFrame:
 
(int) - pushExternalAudioFrameRawData:samples:timestamp:
 
(int) - setExternalAudioVolume:
 
(int) - getExternalAudioVolume
 
(int) - setMixedWithMic:
 
(int) - setExteranlAudioRender:sampleRate:channelsPerFrame:
 
(int) - pushExternalAudioRenderRawData:sampleLength:sampleRate:channelsPerFrame:timestamp:
 

音乐伴奏音效

(int) - setAudioEffectPitchValue:
 
(int) - setAudioEffectVoiceChangerMode:
 
(int) - setAudioEffectReverbMode:
 
(int) - setAudioEffectReverbParamType:value:
 
(int) - startAudioAccompanyWithFile:onlyLocalPlay:replaceMic:loopCycles:
 
(int) - stopAudioAccompany
 
(int) - setAudioAccompanyVolume:
 
(int) - setAudioAccompanyPublishVolume:
 
(int) - getAudioAccompanyPublishVolume
 
(int) - setAudioAccompanyPlayoutVolume:
 
(int) - getAudioAccompanyPlayoutVolume
 
(int) - pauseAudioAccompany
 
(int) - resumeAudioAccompany
 
(int) - getAudioAccompanyDuration
 
(int) - getAudioAccompanyCurrentPosition
 
(int) - setAudioAccompanyPosition:
 
(int) - preloadAudioEffectWithSoundId:filePath:
 
(int) - unloadAudioEffectWithSoundId:
 
(int) - playAudioEffectWithSoundId:filePath:cycles:publish:
 
(int) - stopAudioEffectWithSoundId:
 
(int) - stopAllAudioEffects
 
(int) - setAudioEffectPublishVolumeWithSoundId:volume:
 
(int) - getAudioEffectPublishVolumeWithSoundId:
 
(int) - setAudioEffectPlayoutVolumeWithSoundId:volume:
 
(int) - getAudioEffectPlayoutVolumeWithSoundId:
 
(int) - setAllAudioEffectsPlayoutVolume:
 
(int) - setAllAudioEffectsPublishVolume:
 
(int) - pauseAudioEffectWithSoundId:
 
(int) - pauseAllAudioEffects
 
(int) - resumeAudioEffectWithSoundId:
 
(int) - resumeAllAudioEffects
 
(int) - enableAudioDTX:
 
(int) - enableAudioAMD:
 
(int) - enableEarBack:
 
(int) - setEarBackVolume:
 
(int) - startIntelligentDenoise
 
(void) - stopIntelligentDenoise
 
(int) - enableMusicMode:
 

文件录制

(BOOL) - startRecord:recordFormat:filePath:audioConfig:videoConfig:
 
(void) - stopRecord
 

网络测试

(int) - startLastmileDetect
 
(int) - stopLastmileDetect
 

低延时互动直播模式

(void) - startLiveStreamingWithAuthInfo:onResult:
 
(int) - stopLiveStreaming
 
(int) - setLiveStreamingViewConfig:
 

美颜控制

(BOOL) - isBeautifierAvailable
 
(BOOL) - isBeautifierEnabled
 
(int) - setBeautyEffect:config:
 

视频画面截图

(int) - snapshotVideo:type:
 

媒体扩展信息

(int) - sendMediaExtensionMsg:repeatCount:
 
(int) - addVideoWatermark:image:config:
 
(int) - clearVideoWatermark:
 
(int) - setPublishImage:
 

问题上报

(void) - postFeedbackWithUid:channleId:description:type:timeStamp:
 

消息通道

(int) - sendDownlinkMessageResponse:
 
(int) - sendUplinkMessage:
 

多频道

(AliRtcEngine *_Nullable) - createChannelWithDelegate:extras:
 
(void) - destroyChannel
 

旁路转推

(int) - startPublishLiveStreamWithURL:liveTranscoding:
 
(int) - updatePublishLiveStreamWithURL:liveTranscoding:
 
(int) - stopPublishLiveStreamWithURL:
 
(AliRtcLiveTranscodingState- GetPublishLiveStreamStateWithURL:
 

跨频道转推

(int) - startChannelRelay:
 
(int) - updateChannelRelay:
 
(int) - stopChannelRelay
 
(void) - setPublishVideoStreamAttribute:attr:
 
(int) - enableEncryption:
 
(int) - enableBackgroundExchange:imagePath:scalMode:
 
(int) - enableBackgroundBlur:blurDegree:
 

函数文档

◆ sharedInstance:extras: [1/2]

+ (instancetype _Nonnull) sharedInstance: (id< AliRtcEngineDelegate >_Nullable)  delegate
extras: (NSString *_Nullable)  extras 

获取一个AliRtcEngine实例

参数
delegate用于接收AliRTC回调的代理。
extras用于接收来自客户灰度下发的参数,通过JSON配置SDK的特别功能,可以是空字符串。详情请参见官网有关extras功能说明

该方法为同步调用,以单例的形式提供对象创建。

注解
注意 同一时间只会存在一个主实例。
创建子实例,请参考使用 createChannelWithDelegate:extras:

◆ destroy [1/2]

+ (void) destroy

销毁AliRtcEngine实例

调用该方法将会释放所有内部使用的资源,当完成音视频通信之后都建议调用该方法释放实例.调用该方法后,你将不能再使用 AliRtcEngine 的其他方法和任何回调,如需要再次使用需要重新调用 AliRtcEngine::sharedInstance:extras: 方法创建一个新的实例。

注解
该接口为同步接口,需要等待内部资源释放之后才能执行其他方法,为避免主线程阻塞,建议开发者放在子线程调用该方法,但需要注意的是如需在销毁后再次创建 AliRtcEngine 实例,请开发者务必保证 destroy 方法执行结束后再创建实例。
为避免死锁,不建议在任何SDK的回调中调用本方法

◆ getSdkVersion [1/2]

+ (NSString *_Nonnull) getSdkVersion

查询SDK当前版本号

返回
当前的SDK版本号,格式为字符串,例:"2.5.0.x"
注解
在任何时刻都可以调用

◆ setLogDirPath: [1/2]

+ (int) setLogDirPath: (NSString *_Nullable)  logDirPath

设置SDK日志文件保存路径

参数
logDirPath日志文件保存目录的绝对路径,该参数是一个目录路径,而不是文件的路径。
返回
注解
调用此接口,请在调用其他所有SDK接口前调用本接口,避免日志出现丢失。同时,App必须保证指定的目录已存在并且可以写入。
如果,目标路径不可写入或创建日志文件失败,则会使用默认日志路径。本次设置将无效。

◆ uploadLog [1/2]

+ (void) uploadLog

上传日志文件

用户主动调用此接口,将当前日志目录下的所有未上传的日志文件进行压缩、打包、上传。

注解
上传过程中,如果有进入频道等操作,会自动停止上传行为,避免影响入会体验。

◆ getErrorDescription: [1/2]

+ (NSString *_Nullable) getErrorDescription: (NSInteger)  errCode

根据错误码,获取错误码描述

参数
errCode错误码,详见 AliRtcErrorCode
返回
错误码描述字符串
注解
在任何时刻都可以调用

◆ enableDelegateMainQueue:

- (int) enableDelegateMainQueue: (BOOL)  enabled

是否分发回调到主线程队列

设置是否分发回调到主线程队列,当enabled 为 NO 时,将分发至设置的回调队列,见 setDelegateQueue:,如果未设置,则使用SDK内部默认子线程队列

参数
enabled
  • YES: 回调分发至主线程队列
  • NO: 回调分发至 setDelegateQueue: 设置的队列
返回
  • 0: 成功
  • 非0: 失败
注解
回调默认分发至主线程队列(Default:YES)

◆ setDelegateQueue:

- (int) setDelegateQueue: (NSOperationQueue *_Nullable)  queue

指定回调线程队列

参数
queue回调queue
返回
  • 0: 成功
  • 非0: 失败
注解
enableDelegateMainQueue为YES时,此接口设置无效,回调线程为主线程;
enableDelegateMainQueue为NO时,可通过此接口指定回调线程,若不设置,则使用SDK的默认子线程

◆ setAudioOnlyMode: [1/2]

- (int) setAudioOnlyMode: (BOOL)  audioOnly

设置音频模式还是音视频模式

参数
audioOnly
  • YES: 只有音频推流和拉流(纯音频)
  • NO: 音视频都支持
返回
  • 0: 成功
  • 非0: 失败
注解
只可以在 joinChannel:name:onResultWithUserId: 之前设置

◆ joinChannel:name:onResult: [1/2]

- (int) joinChannel: (AliRtcAuthInfo *_Nonnull)  authInfo
name: (NSString *_Nullable)  userName
onResult: (void(^)(NSInteger errCode, NSString *_Nonnull channel, NSInteger elapsed))  onResult 

加入频道

参数
authInfo认证信息,从App Server获取。
userName任意用于显示的用户名称。不是用户ID
onResult当joinChannel执行结束后调用这个回调
返回
  • 0: 成功
  • <0: 失败
注解
已废弃

◆ joinChannel:name:onResultWithUserId: [1/2]

- (int) joinChannel: (AliRtcAuthInfo *_Nonnull)  authInfo
name: (NSString *_Nullable)  userName
onResultWithUserId: (void(^)(NSInteger errCode, NSString *_Nonnull channel, NSString *_Nonnull userId, NSInteger elapsed))  onResult 

加入频道

该方法让用户加入频道,一个频道内可以加入多个用户进行互相通话。

一般在调用该方法前会根据场景先选择频道模式,通过调用 setChannelProfile: 实现,默认频道模式为通信模式 AliRtcChannelProfile::AliRtcCommunication

// 设置频道为互动模式
[self.engine setChannelProfile:AliRtcInteractivelive];
// 设置角色为主播角色
[self.engine setClientRole:AliRtcClientRoleInteractive];
// 加入频道 onResult和onJoinChannelResult均会回调
[self.engine joinChannel:authInfo name:name onResult:^(NSInteger errCode, NSString * channel, NSString * userId, NSInteger elapsed){
if (errCode == 0) {
//加入频道成功
} else {
//加入频道失败
}
}];
参数
authInfo认证信息,从App Server获取。
userName任意用于显示的用户名称。不是用户ID
onResult当joinChannel执行结束后调用这个回调
返回
注解

◆ setParameter: [1/2]

- (int) setParameter: (NSString *_Nonnull)  param

设置自定义参数

参数
param自定义参数
返回
  • 0: 成功
  • 非0: 失败

◆ leaveChannel [1/2]

- (int) leaveChannel

离开频道

调用该方法代表离开频道,即挂断或者停止通话。

该方法为异步方法,调用后收到 onLeaveChannelResult:stats: 代表退出频道完成,同时会触发远端用户收到 onRemoteUserOffLineNotify:offlineReason: 回调。

如果未加入频道入会,leaveChannel 不会有任何影响。加入频道后,必须要调用该方法离开频道,否则无法加入其他频道。

返回
注解

◆ switchChannel: [1/2]

- (int) switchChannel: (AliRtcAuthInfo *_Nonnull)  authInfo

切换频道

当我们已经在一个频道中想要加入另外一个频道时,通常我们需要离会之后在收到离会回调之后再加入到另外一个频道中,调用方法可以实现快速切换频道。

成功调用该方切换频道后,本地会先收到离开原频道的回调 onLeaveChannelResult:stats: ,再收到成功加入新频道的回调 onJoinChannelResult:channel:userId:elapsed:.

参数
authInfo认证信息,从App Server获取。
返回
  • 0: 成功
  • 非0: 失败
注解
该方法需要在加入一个频道后才可以调用
该方法仅在互动模式AliRtcInteractiveLive和观看角色AliRtcClientRoleLive下调用有效

◆ setChannelProfile: [1/2]

- (int) setChannelProfile: (AliRtcChannelProfile profile

设置频道模式

根据业务需求可以配置不同的频道模式,AliRTC会根据不用的频道模式模式采用不用的策略,目前主要提供通信模式(默认)、互动模式、低延迟互动直播模式

【通信模式 AliRtcCommunication】

  • 该适用于音视频通话场景,所有加入频道的人都可以推/拉音视频流
  • 该模式典型的应用场景:1v1语音聊天、1v1视频聊天、远程问诊、远程面试等

【互动模式 AliRtcInteractivelive】

  • 该模式适用于互动场景,在该模式下有主播和观众两种角色,主播、观众角色可以进行切换,可以通过 setClientRole: 进行设置。
    • 主播角色:可以推流、拉流
    • 观众角色:只可以拉流
  • 该模式典型的应用场景:语聊房、在线教育大班课等

【低延迟互动直播模式 AliRtcInteractiveWithLowLatencyLive】

  • 该模式适用于大型直播场景,与互动模式的差别是观众端使用 startLiveStreamingWithAuthInfo:onResult: 进行拉流
  • 该模式典型应用场景:千人大方会、在线直播培训等
参数
profile频道模式类型, 详细请参考 AliRtcChannelProfile
返回
  • 0: 成功
  • 非0: 失败
    • AliRtcErrInner(-1) : SDK未初始化或已销毁
注解
  • 相同频道内的用户必须使用同一种频道模式
  • 该方法只在入会之前调用有效,会议中不可以重新设置,leaveChannel 后可以重新设置

◆ setClientRole: [1/2]

- (int) setClientRole: (AliRtcClientRole role

设置互动模式下的用户角色

该方法在 ChannelProfile 设置为 AliRtcInteractivelive 时有效

该方法为异步方法,可以在入会前调用,也可以在入会后调用进行用户角色切换,默认角色为:观众角色

参数
role用户角色类型 AliRtcClientRole
返回
  • 0: 成功
  • <0: 失败
    • AliRtcErrInner(-1) : SDK未初始化或已销毁
注解
只在频道模式为 AliRtcInteractivelive 下调用有意义,入会前/会议中均可设置
加入频道后,调用该方法,需要等 onUpdateRoleNotifyWithOldRole:newRole: 回调后,才能再次调用有效

◆ getCurrentClientRole

- (AliRtcClientRole) getCurrentClientRole

获取互动模式下当前用户角色

返回
AliRtcClientRole 当前用户角色类型
注解
只在频道模式为 AliRtcInteractivelive 下调用有意义

◆ refreshAuthInfo: [1/2]

- (int) refreshAuthInfo: (AliRtcAuthInfo *_Nonnull)  authInfo

刷新鉴权信息

该方法用于更新鉴权信息 AliRtcAuthInfo ,主要为了防止鉴权过期,导致推流失败,当我们收到 onAuthInfoWillExpire 回调时,应用应当更新鉴权信息

参数
authInfo鉴权信息
返回
  • 0: 成功
  • <0: 失败

◆ setLocalViewConfig:forTrack: [1/2]

- (int) setLocalViewConfig: (AliVideoCanvas *_Nullable)  viewConfig
forTrack: (AliRtcVideoTrack track 

设置本地预览显示视图

参数
viewConfig本地视频显示属性, 详细见 AliVideoCanvas
track只支持 AliRtcVideoTrackCameraAliRtcVideoTrackScreen
返回
  • 0 : 成功
  • < 0 : 失败
注解
支持joinChannel之前和之后切换窗口。如果canvas或者 AliVideoCanvas::view 为nil,则停止显示。 如果需要重新设置 AliVideoCanvas::renderMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas::renderMode。 如果需要重新设置 AliVideoCanvas::mirrorMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas::mirrorMode

◆ startPreview [1/2]

- (int) startPreview

开启本地视频预览

返回
  • 0 : 成功
  • <0 : 失败
注解
如果没有调用 setLocalViewConfig:forTrack: 设置显示的view,则无法预览。 可以在 joinChannel:name:onResultWithUserId: 之前就开启预览会自动打开摄像头。

◆ stopPreview [1/2]

- (int) stopPreview

关闭本地视频预览

返回
  • 0 : 成功
  • < 0 : 失败
注解
leaveChannel 会自动停止本地预览;如果没有在推相机流,则会自动关闭摄像头。

◆ setCameraCapturerConfiguration: [1/2]

- (int) setCameraCapturerConfiguration: (AliRtcCameraCapturerConfiguration *_Nonnull)  config

设置camera采集偏好

参数
config偏好设置
返回
  • 0: 成功
  • 非0: 失败
注解
必须在打开摄像头之前设置,如 AliRtcEngine::startPreviewAliRtcEngine::joinChannel:name:onResult: / AliRtcEngine::joinChannel:name:onResultWithUserId:之前设置

◆ enableLocalVideo: [1/2]

- (int) enableLocalVideo: (BOOL)  enabled

禁用或启用本地视频采集

参数
enabled
  • YES : 启用本地视频采集
  • NO : 禁用本地视频采集
返回
  • 0 : 成功
  • < 0 : 失败
注解
默认为开启状态, 通过监听 onUserVideoEnabled:videoEnabled: 获取用法是否禁用或启用本地视频采集状态。

◆ muteLocalCamera:forTrack: [1/2]

- (int) muteLocalCamera: (BOOL)  mute
forTrack: (AliRtcVideoTrack track 

是否将停止本地视频数据发送

参数
muteYES表示视频数据发送黑帧;NO表示恢复正常
track只支持 AliRtcVideoTrackCamera
返回
  • 0: 表示Success
  • 非0: 表示Failure
注解
发送黑色的视频帧。本地预览也呈现黑色。采集,编码,发送模块仍然工作, 只是视频内容是黑色帧

◆ publishLocalVideoStream: [1/2]

- (int) publishLocalVideoStream: (BOOL)  enabled

是否推送本地视频流

参数
enabled是否开启/关闭本地视频流推流
  • YES: 开启视频流推送
  • NO: 关闭视频流推送
返回
  • 0: 设置成功
  • <0: 设置失败
    • AliRtcErrInner: SDK内部状态错误,需检查是否创建SDK实例成功
注解

◆ setVideoEncoderConfiguration: [1/2]

- (void) setVideoEncoderConfiguration: (AliRtcVideoEncoderConfiguration *_Nonnull)  config

设置相机流视频编码属性

该方法用于设置相机流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节

参数
config预定义的编码属性,详见 AliRtcVideoEncoderConfiguration
注解
  • 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次相机流视频编码属性,建议在入会前调用

◆ setScreenShareEncoderConfiguration: [1/2]

- (void) setScreenShareEncoderConfiguration: (AliRtcScreenShareEncoderConfiguration *_Nonnull)  config

设置屏幕流视频编码属性

该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节

参数
config预定义的屏幕共享编码属性,详见 AliRtcScreenShareEncoderConfiguration
注解
  • 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用

◆ muteLocalMic:

- (int) muteLocalMic: (BOOL)  mute

停止/恢复本地音频数据发送

参数
mute
  • YES: 本地音频发送空帧
  • NO: 恢复正常音频数据发送
返回
  • 0: 成功
  • 非0: 失败
注解
mute是指音频流发送静音帧,采集和编码模块仍然在工作。

◆ muteLocalMic:mode: [1/2]

- (int) muteLocalMic: (BOOL)  mute
mode: (AliRtcMuteLocalAudioMode mode 

停止/恢复本地音频数据发送

参数
muteYES表示静音本地音频,发送静音帧; NO表示取消静音;
mode静音模式,静音模式分三种,详见 AliRtcMuteLocalAudioMode,默认模式为静音本地麦克风采集音频和所有外部输入音频;
返回
  • 0: 成功
  • 非0: 失败
注解
静音是指音频流发送静音帧,采集和编码模块仍然在工作

◆ publishLocalAudioStream: [1/2]

- (int) publishLocalAudioStream: (BOOL)  enabled

是否推送音频流

参数
enabled是否开启/关闭本地音频流推流
  • YES: 开启音频流推送
  • NO: 关闭音频流推送
返回
  • 0: 设置成功
  • <0: 设置失败
    • AliRtcErrInner: SDK内部状态错误,需检查是否创建SDK实例成功
注解

◆ setRemoteViewConfig:uid:forTrack: [1/2]

- (int) setRemoteViewConfig: (AliVideoCanvas *_Nullable)  canvas
uid: (NSString *_Nonnull)  uid
forTrack: (AliRtcVideoTrack track 

设置远端视频显示视图

参数
canvas本地视频显示属性, 详细见 AliVideoCanvas
uid用户ID,从App server分配的唯一标示符
track只支持 AliRtcVideoTrack#AliRtcVideoTrackCameraAliRtcVideoTrack#AliRtcVideoTrackScreen
返回
  • 0 :成功
  • < 0 :失败
注解
支持joinChannel之前和之后切换窗口。如果canvas或者 AliVideoCanvas#view 为nil,则停止显示。 如果需要重新设置 AliVideoCanvas#renderMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas#renderMode。 如果需要重新设置 AliVideoCanvas#mirrorMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas#mirrorMode

◆ setRemoteAudioVolume:volume: [1/2]

- (int) setRemoteAudioVolume: (NSString *_Nonnull)  uid
volume: (NSInteger)  volume 

调节本地播放的指定远端用户音量

参数
uid用户ID,从App server分配的唯一标示符
volume播放音量,取值范围[0,100] 0:静音;100:原始音量
返回
  • 0: 成功
  • 非0: 失败

◆ muteRemoteAudioPlaying:mute: [1/2]

- (int) muteRemoteAudioPlaying: (NSString *_Nonnull)  uid
mute: (BOOL)  mute 

停止/恢复远端指定用户的音频流的播放

参数
uid用户ID , 从App server分配的唯一标示符
muteYES表示停止播放; NO表示恢复播放
返回
  • 0: 成功
  • 非0: 失败
注解
拉流和解码不受影响, 支持joinChannel之前和之后设置

◆ muteAllRemoteAudioPlaying: [1/2]

- (int) muteAllRemoteAudioPlaying: (BOOL)  mute

停止/恢复远端的所有音频流的播放

参数
muteYES表示停止播放;NO表示恢复播放
返回
  • 0: 成功
  • 非0: 失败
注解
拉流和解码不受影响, 支持joinChannel之前和之后设置

◆ muteAllRemoteVideoRendering:

- (int) muteAllRemoteVideoRendering: (BOOL)  mute

mute/unmute远端的所有视频track的渲染

参数
muteYES表示停止渲染;NO表示恢复渲染
返回
0表示Success 非0表示Failure
注解
拉流和解码不受影响。支持joinChannel之前和之后设置

◆ isLocalVideoStreamPublished [1/2]

- (BOOL) isLocalVideoStreamPublished

查询是否设置推送视频流

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解

◆ isLocalAudioStreamPublished [1/2]

- (BOOL) isLocalAudioStreamPublished

查询是否设置推送音频流

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解

◆ publishLocalDualStream: [1/2]

- (int) publishLocalDualStream: (BOOL)  enabled

是否推送次要视频流

参数
enabled是否开启/关闭次要视频流推送
  • YES: 开启次要视频流推送
  • NO: 关闭次要视频流推送
返回
  • 0: 设置成功
  • <0: 设置失败
    • AliRtcErrInner: SDK内部状态错误,需检查是否创建SDK实例成功
注解
  • 次要视频流为低分辨率的本地视频流,视频内容与本地视频流相同,分辨率默认为160 x 120 (或 160 x 90),宽高比与本地视频流一致。开启次要视频流推送后,接收方可以通过 AliRtcEngine::setRemoteVideoStreamType:type: 方法选择订阅高分辨率或低分辨率视频流
  • 次要视频流只在推送视频流的前提下才会推送,设置推送次要视频流前,请确认已通过 AliRtcEngine::publishLocalVideoStream: 方法开启视频流推送
  • SDK默认设置不推送次要视频流,加入频道前调用此接口设置推送次要视频流,将在加入频道成功时生效,加入频道成功后可以随时调用此接口开启/关闭次要视频流推送
  • 次要视频推流结果发生变化时,SDK会触发 AliRtcEngineDelegate::onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel: 回调通知次要视流最新状态

◆ isDualStreamPublished [1/2]

- (BOOL) isDualStreamPublished

查询是否设置推送次要流

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解

◆ startScreenShare

- (int) startScreenShare

启动屏幕分享

返回
  • 0:成功
  • 非0:失败

◆ startScreenShare:mode:

- (int) startScreenShare: (NSString *_Nonnull)  appGroup
mode: (AliRtcScreenShareMode mode 

启动屏幕分享

参数
appGroup插件和宿主app约定使用相同的appGroup @prarm mode 屏幕共享模式,详见 AliRtcScreenShareMode
注解
返回
  • 0:成功
  • 非0:失败

◆ stopScreenShare [1/2]

- (int) stopScreenShare

停止屏幕分享

返回
  • 0:成功
  • 非0:失败

◆ setAudioShareAppVolume:

- (int) setAudioShareAppVolume: (int)  volume

设置共享App音频的音量大小

参数
volume共享App音频音量大小, 取值范围[0, 100], 默认值:50
返回
  • 0:成功
  • 非0:失败

◆ isScreenSharePublished [1/2]

- (BOOL) isScreenSharePublished

查询是否设置推送屏幕分享

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解

◆ setRemoteVideoStreamType:type: [1/2]

- (int) setRemoteVideoStreamType: (NSString *_Nonnull)  uid
type: (AliRtcVideoStreamType streamType 

设置订阅相机流格式,大流或小流

参数
uid用户ID,从App server分配的唯一标示符
streamType流类型
返回
  • 0:设置成功
  • 非0:设置失败
    • AliRtcErrInner :
      • SDK内部状态错误,需检查是否创建SDK实例成功
      • 参数不合法,需要检查参数是否正确
      • 纯音频模式不支持该设置,请确认是否在纯音频模式下
      • 视频订阅禁止,请检查是否调用了subscribeAllRemoteVideoStreams:NO
注解
推流端当前默认不推送小流,只有发送端调用了 publishLocalDualStream: 打开双流模式,接收端才可以选择订阅大流还是小流,否则订阅的只能是大流;
如果调用了subscribeAllRemoteVideoStreams:NO,该方法调用不生效

◆ setRemoteDefaultVideoStreamType: [1/2]

- (int) setRemoteDefaultVideoStreamType: (AliRtcVideoStreamType streamType

设置默认订阅的相机流格式,大流或小流;如果不设置,则默认订阅大流;

参数
streamType流类型
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner :
      • SDK内部状态错误,需检查是否创建SDK实例成功
      • 纯音频模式不支持该设置,请确认是否在纯音频模式下
      • 视频订阅禁止,请检查是否调用了subscribeAllRemoteVideoStreams:NO
注解
如果调用了subscribeAllRemoteVideoStreams:NO,该方法调用不生效

◆ subscribeAllRemoteAudioStreams: [1/2]

- (int) subscribeAllRemoteAudioStreams: (BOOL)  sub

停止/恢复订阅所有远端音频流

参数
sub是否订阅所有远端音频流
  • YES:订阅所有用户的音频流
  • NO:停止订阅所有用户的音频流
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner : SDK内部状态错误,需检查是否创建SDK实例成功
注解

◆ subscribeAllRemoteVideoStreams: [1/2]

- (int) subscribeAllRemoteVideoStreams: (BOOL)  sub

停止/恢复订阅所有远端视频流

参数
sub是否订阅所有远端视频流
  • YES:订阅所有用户的视频流
  • NO:停止订阅所有用户的视频流
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner : SDK内部状态错误,需检查是否创建SDK实例成功
注解

◆ subscribeRemoteAudioStream:sub: [1/2]

- (int) subscribeRemoteAudioStream: (NSString *_Nonnull)  uid
sub: (BOOL)  sub 

停止/恢复订阅特定远端用户的音频流

参数
uid用户ID,从App server分配的唯一标示符
sub是否订阅远端用户的音频流
  • YES:订阅指定用户的音频流
  • NO:停止订阅指定用户的音频流
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner :
      • SDK内部状态错误,需检查是否创建SDK实例成功
      • 音频订阅禁止,请检查是否调用了subscribeAllRemoteAudioStreams:NO
注解

◆ subscribeRemoteVideoStream:track:sub: [1/2]

- (int) subscribeRemoteVideoStream: (NSString *_Nonnull)  uid
track: (AliRtcVideoTrack track
sub: (BOOL)  sub 

停止/恢复订阅远端用户的视频流

参数
uid用户ID,从App server分配的唯一标示符
track视频流类型
sub是否订阅远端用户的视频流
  • YES:订阅指定用户的视频流
  • NO:停止订阅指定用户的视频流
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner :
      • SDK内部状态错误,需检查是否创建SDK实例成功
      • 视频订阅禁止,请检查是否调用了subscribeAllRemoteVideoStreams:NO
注解

◆ setDefaultSubscribeAllRemoteAudioStreams: [1/2]

- (int) setDefaultSubscribeAllRemoteAudioStreams: (BOOL)  sub

设置是否默认订阅音频流

参数
sub是否默认订阅音频流
  • YES:(Default)默认订阅音频流,
  • NO:默认不订阅音频流
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner : SDK内部状态错误,需检查是否创建SDK实例成功
注解
  • 入会前入会后均可调用;
  • 如果在加入频道前调用 setDefaultSubscribeAllRemoteAudioStreams:NO,则入会后默认不再订阅任何音频流;
  • 如果在加入频道后调用 setDefaultSubscribeAllRemoteAudioStreams:NO,默认不再订阅设置后加入频道的用户的音频流;
  • 不管是否默认订阅,都可以调用 subscribeRemoteAudioStream:sub:,对指定的用户进行订阅或取消订阅操作;
  • 订阅行为统一受到 subscribeAllRemoteAudioStreams: 这个总开关控制,假设 subscribeAllRemoteAudioStreams: 设置为NO,则订阅全部关闭,其他启动行为全部不生效;

◆ setDefaultSubscribeAllRemoteVideoStreams: [1/2]

- (int) setDefaultSubscribeAllRemoteVideoStreams: (BOOL)  sub

设置是否默认订阅视频流

参数
sub是否默认订阅视频流
  • YES:(Default)默认订阅视频流
  • NO:默认不订阅视频流
返回
  • 0:设置成功
  • <0:设置失败
    • AliRtcErrInner : SDK内部状态错误,需检查是否创建SDK实例成功
注解
  • 入会前入会后均可调用;
  • 如果在加入频道前调用 setDefaultSubscribeAllRemoteVideoStreams:NO,则入会后默认不再订阅任何视频流;
  • 如果在加入频道后调用 setDefaultSubscribeAllRemoteVideoStreams:NO,默认不再订阅设置后加入频道的用户的视频流;
  • 不管是否默认订阅,都可以调用 subscribeRemoteVideoStream:track:sub:,对指定的用户进行订阅或取消订阅操作;
  • 订阅行为统一受到 subscribeAllRemoteVideoStreams: 这个总开关控制,假设 subscribeAllRemoteVideoStreams: 设置为NO,则订阅全部关闭,其他启动行为全部不生效;

◆ getOnlineRemoteUsers [1/2]

- (NSArray< NSString * > *_Nullable) getOnlineRemoteUsers

获取远端在线用户列表

返回
当前频道内所有在线用户userid列表
注解
若当前频道ChannelProfile设置为 AliRtcInteractivelive 模式,只有设置角色为 AliRtcClientRoleInteractive 的用户为在线用户,本方法不返回角色为 AliRtcClientRoleLive 的用户

◆ isUserOnline: [1/2]

- (BOOL) isUserOnline: (NSString *_Nonnull)  uid

查询用户是否在线

参数
uid用户ID,从App server分配的唯一标示符。不可为NULL
返回
  • YES,用户在线
  • NO,用户不在线
注解
根据特定的UserID,查询该用户是否在线。

◆ getCurrentConnectionStatus [1/2]

- (AliRtcConnectionStatus) getCurrentConnectionStatus

获取当前网络链接状态

返回
当前链接状态, 参考 AliRtcConnectionStatus
注解
网络链接状态发生变化时,SDK会通过 onConnectionStatusChange:reason: 回调通知
入会前调用此接口,均返回状态 AliRtcConnectionStatusDisconnected

◆ enableSpeakerphone:

- (int) enableSpeakerphone: (BOOL)  enable

设置音频输出为听筒还是扬声器

参数
enable
  • YES: 扬声器模式(默认)
  • NO: 听筒模式
返回
  • 0: 成功
  • <0: 失败

◆ isEnableSpeakerphone

- (BOOL) isEnableSpeakerphone

获取当前音频输出为听筒还是扬声器

返回
  • YES: 扬声器模式;
  • NO: 听筒模式

◆ setRecordingVolume: [1/2]

- (int) setRecordingVolume: (NSInteger)  volume

设置录音音量

参数
volume录音音量,取值范围[0,400]
  • 0:静音
  • <100:减小音量
  • >100:放大音量
返回
  • 0: 成功
  • 非0: 失败

◆ setPlayoutVolume: [1/2]

- (int) setPlayoutVolume: (NSInteger)  volume

设置播放音量

参数
volume播放音量,取值范围[0,400]
  • 0:静音
  • <100:减小音量
  • >100:放大音量
返回
  • 0: 成功
  • 非0: 失败

◆ setAudioProfile:audio_scene: [1/2]

- (int) setAudioProfile: (AliRtcAudioProfile audio_profile
audio_scene: (AliRtcAudioScenario audio_scene 

设置音频profile

参数
audio_profile音频采集/编码模式参数, 详见 AliRtcAudioProfile;
audio_scene音频场景模式参数,详见 AliRtcAudioScenario;
返回
  • 0: 成功
  • 其他: 失败
注解
只支持 joinChannel:name:onResultWithUserId: 前设置有效;

◆ setAudioSessionOperationRestriction:

- (int) setAudioSessionOperationRestriction: (AliRtcAudioSessionOperationRestriction restriction

设置SDK对AVAudioSession的控制权限

参数
restriction控制权限
返回
  • 0: 成功
  • 非0: 失败

◆ setDeviceVolumeType:

- (int) setDeviceVolumeType: (AliRtcDeviceVolumeType type

设置SDK设备音量类型

参数
type音量类型
返回
  • 0: 成功
  • 非0: 失败

◆ switchCamera

- (int) switchCamera

切换前后摄像头

返回
  • 0: 成功
  • 非0: 失败
注解
只有iOS和android提供这个接口

◆ getCurrentCameraDirection

- (AliRtcCameraDirection) getCurrentCameraDirection

获取当前摄像头方向,默认前置摄像头

返回
摄像头方向
  • AliRtcCameraDirectionFront 前置
  • AliRtcCameraDirectionBack 后置
  • AliRtcCameraDirectionInvalid 无效
注解
只有iOS和android提供这个接口,在Camera 已经open之后调用,否则会返回 AliRtcCameraDirectionInvalid

◆ setCameraZoom:

- (int) setCameraZoom: (float)  zoom

设置摄像头缩放

参数
zoom缩放级别,范围从 1 到 camera支持的最大 zoom值
返回
  • 0: 成功
  • 非0: 失败
注解
只有iOS和android提供这个接口

◆ setCameraFlash:

- (int) setCameraFlash: (BOOL)  flash

设置摄像头闪光灯开关

参数
flash是否打开闪光灯
返回
  • 0: 成功
  • 非0: 失败
注解
只有iOS和android提供这个接口,一般后置摄像头有闪光灯功能

◆ isCameraFocusPointSupported

- (BOOL) isCameraFocusPointSupported

摄像头是否支持手动聚焦

返回
  • YES: 支持
  • NO: 不支持
注解
只有iOS和android提供这个接口,用来检查当前camera是否可以设置聚焦点

◆ isCameraExposurePointSupported

- (BOOL) isCameraExposurePointSupported

摄像头是否支持设置曝光点

返回
  • YES: 支持
  • NO: 不支持
注解
只有iOS和android提供这个接口,用来检查当前camera是否可以设置曝光点

◆ setCameraFocusPoint:

- (int) setCameraFocusPoint: (CGPoint)  point

设置摄像头手动聚焦点

参数
point聚焦点坐标
返回
  • 0: 成功
  • 非0: 失败
注解
只有iOS和android提供这个接口,调用后camera对所设点做一次曝光调整,后面一直保持这个对焦值

◆ setCameraExposurePoint:

- (int) setCameraExposurePoint: (CGPoint)  point

设置摄像头曝光点

参数
point曝光点
返回
  • 0: 成功
  • 非0: 失败
注解
只有iOS和android提供这个接口,调用后camera对所设点做一次曝光调整,后面一直保持这个曝光值

◆ isCameraAutoFocusFaceModeSupported

- (BOOL) isCameraAutoFocusFaceModeSupported

摄像头是否支持人脸聚焦

返回
  • YES: 支持
  • NO: 不支持
注解
只有iOS和android提供这个接口,在camera没有打开的情况下返回 NO, 在camera打开的情况下,如果当前camera同时支持人脸识别和对焦功能则返回 YES

◆ setCameraAutoFocusFaceModeEnabled:

- (BOOL) setCameraAutoFocusFaceModeEnabled: (BOOL)  enable

设置摄像头人脸对焦

参数
enableYES: 开启; NO:关闭
返回
  • YES: 成功
  • NO: 失败
注解
只有iOS和android提供这个接口,如果 AliRtcEngine::isCameraAutoFocusFaceModeSupported 返回 YES 且此调用enable为 YES 的情况下,实时对焦到采集到数据的人脸上

◆ startAudioCapture [1/2]

- (void) startAudioCapture

开启音频采集

此接口可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备:

注解
  • 调用此接口后,离会后采集设备保持开启状态

◆ startAudioCapture: [1/2]

- (void) startAudioCapture: (BOOL)  keepAlive

开启音频采集

此接口可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备:

参数
keepAliveYES: 离会后采集设备保持开启状态;NO: 离会后采集设备关闭

◆ stopAudioCapture [1/2]

- (void) stopAudioCapture

关闭音频采集

注解
调用此接口后,入会后、离会再入会,采集设备保持关闭状态

◆ startAudioPlayer [1/2]

- (void) startAudioPlayer

开启音频播放

注解
此接口可以控制提前打开音频播放,如果不设置,则SDK会在订阅到音频流后自动打开音频播放

◆ stopAudioPlayer [1/2]

- (void) stopAudioPlayer

关闭音频播放

注解
此接口可以控制关闭音频播放,与 startAudioPlayer 对应

◆ setLogLevel: [1/2]

- (void) setLogLevel: (AliRtcLogLevel logLevel

设置日志等级

参数
logLevelLog级别,详见 AliRtcLogLevel 枚举类型
注解
设置 SDK 的输出日志等级。默认值为 AliRtcLogLevel::AliRtcLogLevelInfo
调用此接口,请在仅次于 SetLogDirPath 接口调用之后再调用本接口,避免因日志等级切换造成的打印丢失。

◆ isCameraOn [1/2]

- (BOOL) isCameraOn

检查camera是否打开

返回
  • YES: 表示摄像头已打开
  • NO: 表示摄像头没有打开
注解
该接口用于检查当前camera的状态

◆ isInCall [1/2]

- (BOOL) isInCall

获取状态:当前是否在频道中

返回
  • YES: 表示当前已经加入了频道。
  • NO: 表示当前不在频道中。
注解
该方法可在加入频道前或加入频道后调用。

◆ isAudioOnly [1/2]

- (BOOL) isAudioOnly

查询是否纯音频模式

返回
  • YES: 表示纯音频模式
  • NO: 表示非纯音频模式

◆ getUserInfo: [1/2]

- (NSDictionary *_Nullable) getUserInfo: (NSString *_Nonnull)  uid

查询远端用户状态

参数
uid用户ID。从App server分配的唯一标示符
返回
dict App提供的容器,用于存放用户数据,dict类型为字典类型,通过{Key,Value}进行访问。
  • dict[userID] != "" 成功 - dict[userID] == @"" 失败
注解
通过 uid 查询,指定远端用户的状态信息,在参数dict中,以字典{key,value}的形式,返回用户的全部状态信息。
Key信息:
  • userID: 远端用户的ID。
  • isOnline: 远端用户是否在线。
  • sessionID: 远端用户的会话ID。
  • callID: 当前会话的callID。
  • displayName: 远端用户的名称。
  • hasAudio: 远端用户是否推送了音频流。
  • hasCameraMaster: 远端用户是否推送了相机大流。
  • hasCameraSlave: 远端用户是否推送了相机小流。
  • hasScreenSharing: 远端用户是否推送了屏幕流。
  • requestAudio, 本端是否订阅了此远端用户的音频流。
  • requestCameraMaster, 本端是否订阅了此远端用户的相机大流。此状态,系在成功订阅该用户摄像头大流前的状态。
  • requestCameraSlave, 本端是否订阅了此远端用户的相机小流。此状态,系在成功订阅该用户摄像头小流前的状态。
  • requestScreenSharing, 本端是否订阅了此远端用户的屏幕流。此状态,系在成功订阅该用户屏幕共享前的状态。
  • preferCameraMaster, 远端用户是否开启了大流优先。
  • subScribedAudio: 本端是否拉到了此远端用户的音频流。
  • subScribedCameraMaster: 本端是否拉到了此远端用户的相机大流。
  • subScribedCamearSlave: 本端是否拉到了此远端用户的相机小流。
  • subScribedScreenSharing: 本端是否拉到了此远端用户的屏幕流。
  • hasCameraView: 本端是否设置了此远端用户相机流的view。
  • hasScreenView: 本端是否设置了此远端用户屏幕流的view。
  • muteAudioPlaying: 本端是否静音了此远端用户。

◆ setH5CompatibleMode: [1/2]

+ (void) setH5CompatibleMode: (BOOL)  comp

设置H5兼容模式

互动模式下,是否需要与Web SDK互通。如果使用Native SDK用户加入频道,需要与通过Web SDK加入频道的用户进行互通,则必须使用H5兼容模式,否则,Web用户查看Native用户将是黑屏。

参数
comp
  • YES: 兼容H5。
  • NO: 传统模式,不兼容H5。
注解
不支持在创建AliRtcEngine实例之后更改H5兼容模式,必须在创建实例之前就调用此方法。

◆ getH5CompatibleMode [1/2]

+ (BOOL) getH5CompatibleMode

检查当前是否兼容H5、与Web SDK互通

返回
  • YES: 兼容H5。
  • NO: 不兼容H5。

◆ showDebugView:showType:userId: [1/2]

- (int) showDebugView: (UITextView *_Nonnull)  view
showType: (AliRtcShowDebugViewType showType
userId: (NSString *_Nullable)  userId 

展示用户Debug数据

参数
view对外展示的View,由客户传入,显示样式由客户指定
showType展示类型:0: 不显示 1.音频 2.视频 3.全部;另外可以传入特殊的值来展示
userId对应用户ID

◆ setSubscribeAudioNumChannel: [1/2]

- (void) setSubscribeAudioNumChannel: (AliRtcAudioNumChannel audioNumChannel

设置回调音频声道数,默认单声道 (混音前数据不支持该参数设置)

参数
audioNumChannel声道数,必须是 AliRtcAudioNumChannel
注解
需在 subscribeAudioData: 前进行设置

◆ setSubscribeAudioSampleRate: [1/2]

- (void) setSubscribeAudioSampleRate: (AliRtcAudioSampleRate audioSampleRate

设置回调音频采样率,默认44100(混音前数据不支持该参数设置)

参数
audioSampleRate采样率,必须是 AliRtcAudioSampleRate
注解
需在 subscribeAudioData: 前进行设置

◆ subscribeAudioData: [1/2]

- (void) subscribeAudioData: (AliRtcAudioSource audioSource

订阅音频数据

参数
audioSource音频数据源类型,详见 AliRtcAudioSource
注解
订阅音频数据输出前,需先通过 setSubscribeAudioNumChannel:setSubscribeAudioSampleRate: 设置输出音频数据参数

◆ unSubscribeAudioData: [1/2]

- (void) unSubscribeAudioData: (AliRtcAudioSource audioSource

取消订阅音频数据

参数
audioSource音频数据源类型,详见 AliRtcAudioSource

◆ enableAudioVolumeIndication:smooth:reportVad: [1/2]

- (int) enableAudioVolumeIndication: (NSInteger)  interval
smooth: (NSInteger)  smooth
reportVad: (NSInteger)  reportVad 

设置音量回调频率和平滑系数

参数
interval时间间隔,单位毫秒,最小值不得小于10ms, 建议设置300-500ms, <= 0表示不启用音量提示和说话人提示功能
smooth平滑系数,数值越大平滑程度越高,反之越低,实时性越好,建议设置3,范围[0, 9];
reportVad说话人检测开关
  • 1: 开启
  • 0: 关闭
返回
  • 0: 成功
  • <0: 失败
注解
设置之后,音频音量和说话人uid会分别通过 AliRtcEngineDelegate::onAudioVolumeCallback:totalVolume:AliRtcEngineDelegate::onActiveSpeaker: 回调

◆ getVideoCaptureData:videoSample: [1/2]

- (BOOL) getVideoCaptureData: (AliRtcVideoTrack videoTrack
videoSample: (AliRtcVideoDataSample **)  p_sample 

主动获取采集数据

参数
videoTrack视频流类型
p_sample数据接收对象
返回
  • YES: 成功
  • NO: 失败
注解
仅在 onGetIfUserFetchObserverData 返回 YES 时有效

◆ getVideoPreEncoderData:videoSample: [1/2]

- (BOOL) getVideoPreEncoderData: (AliRtcVideoTrack videoTrack
videoSample: (AliRtcVideoDataSample **)  p_sample 

主动获取编码前数据

参数
videoTrack视频流类型
p_sample数据接收对象
返回
  • YES: 成功
  • NO: 失败
注解
仅在 onGetIfUserFetchObserverData 返回 YES 时有效

◆ getVideoRenderData:videoTrack:videoSample: [1/2]

- (BOOL) getVideoRenderData: (NSString *)  uid
videoTrack: (AliRtcVideoTrack videoTrack
videoSample: (AliRtcVideoDataSample **)  p_sample 

主动获取拉流数据,onGetIfUserFetchObserverData 返回 YES 时有效

参数
uid远端用户ID
videoTrack视频流类型
p_sample数据接收对象
返回
  • YES: 成功
  • NO: 失败
注解
仅在 onGetIfUserFetchObserverData 返回 YES 时有效

◆ registerLocalVideoTexture

- (void) registerLocalVideoTexture

注册本地相机流视频OpenGL纹理数据观测器

注解
  • 成功注册本地相机流视频OpenGL纹理数据观测器后,SDK 会在捕捉到视频帧时,触发onTextureCreate、onTextureUpdate、onTextureDestory回调
  • 该接口只能对本地相机流视频有效

◆ setExternalVideoSource:sourceType:renderMode: [1/2]

- (int) setExternalVideoSource: (BOOL)  enable
sourceType: (AliRtcVideoSource type
renderMode: (AliRtcRenderMode renderMode 

启用外部视频输入源

参数
enable
  • YES 开启
  • NO 关闭
type流类型,详见 AliRtcVideoSource
  • AliRtcVideosourceCameraType 外部输入视频数据走相机流通道,如果当前相机采集打开中,调用该接口设置enable为YES,sdk会替换掉相机采集
  • AliRtcVideosourceScreenShareType 外部输入视频数据走屏幕流通道,如果当前屏幕共享采集打开中,调用该接口设置enable为YES,sdk会替换掉屏幕共享采集
renderMode处理模式,外部输入视频源宽高比和推流profile不一致时,会按照对应的rendermode做对应处理,详见 AliRtcRenderMode
  • AliRtcRenderModeAuto 自动(默认) 如果外部输入的视频宽高比和推流设置的宽高比不一致时,维持外部输入的视频宽高比,等比例缩放宽高到推流设置的宽高范围内,注意此模式下为了保证原始视频的比例和内容完整性,会导致实际推流的分辨率和设置的不一致
  • AliRtcRenderModeStretch 拉伸平铺,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频拉伸到推流设置的比例,画面会变形
  • AliRtcRenderModeFill 填充黑边,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频上下或者左右填充黑边
  • AliRtcRenderModeCrop 裁剪,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频宽或者高进行裁剪,画面内容会丢失
返回
  • 0: 成功
  • 非0: 失败

◆ pushExternalVideoFrame:sourceType: [1/2]

- (int) pushExternalVideoFrame: (AliRtcVideoDataSample *_Nonnull)  frame
sourceType: (AliRtcVideoSource type 

输入视频数据

参数
frame帧数据,详见 AliRtcVideoDataSample
type流类型,详见 AliRtcVideoSource
  • AliRtcVideosourceCameraType 外部输入视频数据走相机流通道
  • AliRtcVideosourceScreenShareType 外部输入视频数据走屏幕流通道
返回
  • 0: 成功
  • 非0: 失败
注解
如果返回值为errorCode中的AliRtcErrVideoBufferFull,代表当前buffer队列塞满,需要等待后再继续输送数据

◆ setExternalAudioSource:withSampleRate:channelsPerFrame: [1/2]

- (int) setExternalAudioSource: (BOOL)  enable
withSampleRate: (NSUInteger)  sampleRate
channelsPerFrame: (NSUInteger)  channelsPerFrame 

设置是否启用外部音频输入源

参数
enableYES:开启; NO:关闭
sampleRate采样率 16k, 48k...
channelsPerFrame声道数 1:单声道; 2:双声道
返回
  • >=0: 成功
  • <0: 失败

◆ pushExternalAudioFrameRawData:samples:timestamp: [1/2]

- (int) pushExternalAudioFrameRawData: (void *_Nonnull)  data
samples: (NSUInteger)  samples
timestamp: (NSTimeInterval)  timestamp 

输入外部音频数据推流到远端

参数
data音频数据buffer
samples音频数据buffer长度
timestamp时间戳
返回
注解
为了保证语音连续性,sdk内部会有buffer缓存送进来的音频数据,以每次送10ms数据为例,如果返回 AliRtcErrorCode::AliRtcErrAudioBufferFull 时,说明内部缓冲区已满,建议等待20ms后再重新送当前数据帧;

◆ setExternalAudioVolume: [1/2]

- (int) setExternalAudioVolume: (int)  vol

设置外部音频音量

参数
vol音量,取值范围[0,100]
返回
  • >=0: 成功
  • <0: 失败
注解
同时设置外部音频输入音量与外部音频播放音量

◆ getExternalAudioVolume [1/2]

- (int) getExternalAudioVolume

获取混音音量

返回
  • >=0: 正常混音音量,范围[0-100]
  • <0: 失败

◆ setMixedWithMic: [1/2]

- (int) setMixedWithMic: (BOOL)  mixed

设置是否与麦克风采集音频混合

参数
mixedYES:混音;NO:完全替换麦克风采集数据
返回
  • 0: 成功
  • 非0: 失败

◆ setExteranlAudioRender:sampleRate:channelsPerFrame: [1/2]

- (int) setExteranlAudioRender: (BOOL)  enable
sampleRate: (NSUInteger)  sampleRate
channelsPerFrame: (NSUInteger)  channelsPerFrame 

设置是否启用外部输入音频播放

参数
enableYES:开启; NO:关闭
sampleRate采样率 16000 48000...
channelsPerFrame声道数 1:单声道; 2:双声道
返回
  • >=0: 成功
  • <0: 失败

◆ pushExternalAudioRenderRawData:sampleLength:sampleRate:channelsPerFrame:timestamp: [1/2]

- (int) pushExternalAudioRenderRawData: (const void *_Nullable)  audioSamples
sampleLength: (NSUInteger)  sampleLength
sampleRate: (NSUInteger)  sampleRate
channelsPerFrame: (NSUInteger)  channelsPerFrame
timestamp: (long long)  timestamp 

输入外部音频数据本地播放

参数
audioSamples音频数据buffer
sampleLength音频数据buffer长度
sampleRate输入音频数据的采样率
channelsPerFrame输入音频数据的声道数
timestamp时间戳
返回
注解
为了保证语音连续性,sdk内部会有buffer缓存送进来的音频数据,以每次送10ms数据为例,如果返回 AliRtcErrorCode::AliRtcErrAudioBufferFull 时,说明内部缓冲区已满,建议等待20ms后再重新送当前数据帧;

◆ setAudioEffectPitchValue: [1/2]

- (int) setAudioEffectPitchValue: (double)  value

设置变调参数

参数
value变调参数,范围:[0.5, 2.0],1.0表示音调不变,小于1.0表示音调降低,大于1.0表示音调升高,默认1.0
返回
  • 0:成功
  • 非0:失败
注解
加入频道前和频道过程中调用都生效

◆ setAudioEffectVoiceChangerMode: [1/2]

- (int) setAudioEffectVoiceChangerMode: (AliRtcAudioEffectVoiceChangerMode mode

设置变声音效模式

参数
mode参考 AliRtcAudioEffectVoiceChangerMode 对应的变声音效模式值
返回
  • 0:成功
  • 非0:失败
注解
加入频道前和频道过程中调用都生效

◆ setAudioEffectReverbMode: [1/2]

- (int) setAudioEffectReverbMode: (AliRtcAudioEffectReverbMode mode

设置混响音效模式

参数
mode参考 AliRtcAudioEffectReverbMode 对应的混响模式
返回
  • 0:成功
  • 非0:失败
注解
加入频道前和频道过程中调用都生效

◆ setAudioEffectReverbParamType:value: [1/2]

- (int) setAudioEffectReverbParamType: (AliRtcAudioEffectReverbParamType type
value: (float)  value 

设置混响音效类型

参数
type参考 AliRtcAudioEffectReverbParamType 对应的混响类型
value混响参数值,不同混响类型的取值范围参考 AliRtcAudioEffectReverbParamType 中取值说明
返回
  • 0:成功
  • 非0:失败
注解
需要在 setAudioEffectReverbMode: 之后调用

◆ startAudioAccompanyWithFile:onlyLocalPlay:replaceMic:loopCycles: [1/2]

- (int) startAudioAccompanyWithFile: (NSString *_Nonnull)  filePath
onlyLocalPlay: (BOOL)  onlyLocalPlay
replaceMic: (BOOL)  replaceMic
loopCycles: (NSInteger)  loopCycles 

开始伴奏混音

参数
filePath伴奏文件路径
onlyLocalPlay是否只本地播放
replaceMic是否替换掉MIC
loopCycles循环次数,可以设置-1(无限循环)或者>0的正整数次,其他值无效
返回
  • 0: 成功
  • 非0: 返回错误码
注解
异步接口,可通过 onAudioPlayingStateChanged:errorCode: 监听播放器状态

◆ stopAudioAccompany [1/2]

- (int) stopAudioAccompany

停止伴奏混音

返回
  • 0: 成功
  • 非0: 返回错误码

◆ setAudioAccompanyVolume: [1/2]

- (int) setAudioAccompanyVolume: (NSInteger)  volume

设置伴奏音量

参数
volume伴奏音量,取值范围[0,100]
返回
  • 0: 成功
  • 非0: 返回错误码
注解
同时设置伴奏本地播放音量与伴奏推流音量

◆ setAudioAccompanyPublishVolume: [1/2]

- (int) setAudioAccompanyPublishVolume: (NSInteger)  volume

设置伴奏推流音量

参数
volume伴奏推流音量,取值范围[0,100]
返回
  • 0: 成功
  • 非0: 返回错误码

◆ getAudioAccompanyPublishVolume [1/2]

- (int) getAudioAccompanyPublishVolume

获取伴奏推流音量

返回
  • [0, 100]: 成功
  • 其他值: 返回错误码

◆ setAudioAccompanyPlayoutVolume: [1/2]

- (int) setAudioAccompanyPlayoutVolume: (NSInteger)  volume

设置伴奏本地播放音量

参数
volume伴奏本地播放音量,取值范围[0,100]
返回
  • 0: 成功
  • 非0: 返回错误码

◆ getAudioAccompanyPlayoutVolume [1/2]

- (int) getAudioAccompanyPlayoutVolume

获取伴奏本地播放音量

返回
  • [0, 100]: 成功
  • 其他值: 返回错误码

◆ pauseAudioAccompany [1/2]

- (int) pauseAudioAccompany

暂停伴奏混音

返回
  • 0: 成功
  • 非0: 返回错误码

◆ resumeAudioAccompany [1/2]

- (int) resumeAudioAccompany

重新开始伴奏混音

返回
  • 0: 成功
  • 非0: 返回错误码

◆ getAudioAccompanyDuration [1/2]

- (int) getAudioAccompanyDuration

获取伴奏文件时长, 单位为毫秒

返回
  • >=0: 伴奏文件时长
  • <0: 返回错误码

◆ getAudioAccompanyCurrentPosition [1/2]

- (int) getAudioAccompanyCurrentPosition

获取伴奏文件播放进度,单位为毫秒

返回
  • >=0: 伴奏文件播放进度
  • <0: 返回错误码

◆ setAudioAccompanyPosition: [1/2]

- (int) setAudioAccompanyPosition: (int)  pos

设置伴奏文件的播放位置

参数
pos进度条位置,单位为毫秒
返回
  • 0: 成功
  • 非0: 返回错误码

◆ preloadAudioEffectWithSoundId:filePath: [1/2]

- (int) preloadAudioEffectWithSoundId: (NSInteger)  soundId
filePath: (NSString *_Nonnull)  filePath 

预加载音效文件

参数
soundId用户给该音效文件分配的ID
filePath音效文件路径,支持本地文件和网络url
返回
  • 0:成功
  • 非0:失败
注解
音效相关接口为同步接口, 建议使用本地文件

◆ unloadAudioEffectWithSoundId: [1/2]

- (int) unloadAudioEffectWithSoundId: (NSInteger)  soundId

删除预加载的音效文件

参数
soundId用户给该音效文件分配的ID
返回
  • 0:成功
  • 非0:失败
注解
音效soundId应与预加载 preloadAudioEffectWithSoundId:filePath: 时传入的ID相同

◆ playAudioEffectWithSoundId:filePath:cycles:publish: [1/2]

- (int) playAudioEffectWithSoundId: (NSInteger)  soundId
filePath: (NSString *_Nonnull)  filePath
cycles: (NSInteger)  cycles
publish: (BOOL)  publish 

开始播放音效

开始播放音效接口,可以多次调用该方法传入不同的soundId和filePath,同时播放多个音效文件,音效文件播放结束后,SDK 会触发 onAudioEffectFinished: 回调

参数
soundId用户给该音效文件分配的ID,每个音效均有唯一的ID,如果你已通过 preloadAudioEffectWithSoundId:filePath: 将音效加载至内存,确保这里的soundId与 preloadAudioEffectWithSoundId:filePath: 设置的soundId相同
filePath文件路径,支持本地文件和网络url
cycles音效循环播放次数
  • ≥0:循环播放次数,例如,设置3表示总共播放3次
  • -1:无限循环播放
publish是否将音效传到远端
  • YES:发布,本地用户和远端用户都能听到音效
  • NO:不发布,只有本地用户能听到音效
返回
  • 0:成功
  • 非0:失败

◆ stopAudioEffectWithSoundId: [1/2]

- (int) stopAudioEffectWithSoundId: (NSInteger)  soundId

停止播放音效

参数
soundId用户给该音效文件分配的ID,每个音效均有唯一的ID,如果你已通过 preloadAudioEffectWithSoundId:filePath: 将音效加载至内存,确保这里的soundId与 preloadAudioEffectWithSoundId:filePath: 设置的soundId相同
返回
  • 0:成功
  • 非0:失败

◆ stopAllAudioEffects [1/2]

- (int) stopAllAudioEffects

停止播放所有音效

返回
  • 0:成功
  • 非0:失败

◆ setAudioEffectPublishVolumeWithSoundId:volume: [1/2]

- (int) setAudioEffectPublishVolumeWithSoundId: (NSInteger)  soundId
volume: (NSInteger)  volume 

设置音效推流混音音量

参数
soundId用户给该音效文件分配的ID
volume推流混音音量,范围是:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败
注解
该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ getAudioEffectPublishVolumeWithSoundId: [1/2]

- (int) getAudioEffectPublishVolumeWithSoundId: (NSInteger)  soundId

获取音效推流混音音量

参数
soundId用户给该音效文件分配的ID
返回
  • [0, 100]:音效推流混音音量
  • 其他:错误值
注解
音效推流混音音量有效范围为:[0, 100],该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ setAudioEffectPlayoutVolumeWithSoundId:volume: [1/2]

- (int) setAudioEffectPlayoutVolumeWithSoundId: (NSInteger)  soundId
volume: (NSInteger)  volume 

设置音效本地播放音量

参数
soundId用户给该音效文件分配的ID
volume音效本地播放音量,范围:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败
注解
该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ getAudioEffectPlayoutVolumeWithSoundId: [1/2]

- (int) getAudioEffectPlayoutVolumeWithSoundId: (NSInteger)  soundId

获取音效本地播放音量

参数
soundId用户给该音效文件分配的ID
返回
  • [0, 100]:音效本地播放音量
  • 其他:错误值
注解
音效本地播放音量有效范围为:[0, 100],该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ setAllAudioEffectsPlayoutVolume: [1/2]

- (int) setAllAudioEffectsPlayoutVolume: (NSInteger)  volume

设置所有音效本地播音量

参数
volume音效本地播放音量,范围:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败

◆ setAllAudioEffectsPublishVolume: [1/2]

- (int) setAllAudioEffectsPublishVolume: (NSInteger)  volume

设置所有音效推流混音音量

参数
volume推流混音音量,范围是:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败

◆ pauseAudioEffectWithSoundId: [1/2]

- (int) pauseAudioEffectWithSoundId: (NSInteger)  soundId

暂停音效

参数
soundId用户给该音效文件分配的ID
返回
  • 0:成功
  • 非0:失败

◆ pauseAllAudioEffects [1/2]

- (int) pauseAllAudioEffects

暂停所有音效

返回
  • 0:成功
  • 非0:失败

◆ resumeAudioEffectWithSoundId: [1/2]

- (int) resumeAudioEffectWithSoundId: (NSInteger)  soundId

恢复指定音效文件

参数
soundId用户给该音效文件分配的ID
返回
  • 0:成功
  • 非0:失败

◆ resumeAllAudioEffects [1/2]

- (int) resumeAllAudioEffects

恢复所有音效文件

返回
  • 0:成功
  • 非0:失败

◆ enableAudioDTX: [1/2]

- (int) enableAudioDTX: (BOOL)  enable

是否开启语音活动检测

参数
enableYES表示开启, NO表示关闭, 默认关闭
返回
  • 0: 成功
  • <0: 失败
注解
  • 入会前调用或入会后推音频流之前调用有效。
  • 开启语音活动检测可以在检测到没有语音的情况下,每隔400ms编码发送静音包,节省用户流量。

◆ enableAudioAMD: [1/2]

- (int) enableAudioAMD: (BOOL)  enable

开启音频静音检测(Audio Mute Detection, 静音不发送音频包)

参数
enableYES表示开启,NO表示关闭,默认关闭;
返回
  • 0: 成功
  • <0: 失败
注解

◆ enableEarBack:

- (int) enableEarBack: (BOOL)  enable

启用耳返

参数
enable是否启用耳返 YES:开启; NO:关闭 默认: 关闭
返回
  • 0:成功
  • 非0:失败
注解
所有设备都支持耳返,建议戴耳机的情况下开启耳返,效果更好

◆ setEarBackVolume:

- (int) setEarBackVolume: (NSInteger)  volume

设置耳返音量

参数
volume音量大小,范围是:[0 ~ 100],默认值为100
返回
  • 0:成功
  • 非0:失败

◆ startIntelligentDenoise [1/2]

- (int) startIntelligentDenoise

开启智能降噪

返回
  • 0: 成功
  • 非0: 返回错误码
注解
  • 智能降噪功能以插件形式提供,调用该接口前,请确保已集成了AliRTC提供的PluginMindRTC.framework
  • 此接口可以通话过程中控制打开智能降噪功能,通话过程中可以支持开启和关闭智能降噪
  • 默认关闭,开启后可能导致功耗增加,智能降噪适合于会议,教育等语音通讯为主的场景,不适合有背景音乐的场景

◆ stopIntelligentDenoise [1/2]

- (void) stopIntelligentDenoise

关闭智能降噪

注解
此接口可以通话过程中控制关闭智能降噪功能

◆ enableMusicMode: [1/2]

- (int) enableMusicMode: (BOOL)  enable

启用音乐模式

参数
enable是否启用音乐模式, YES表示开启, NO表示关闭, 默认关闭
返回
  • 0: 成功
  • <0: 失败
注解
此接口支持会议中过程中动态开启关闭,对有音乐的场景有一定程度的音质提升,最佳的音乐场景体检建议通过接口 setAudioProfile:audio_scene: 中设置场景为 AliRtcAudioScenario::AliRtcSceneMusicMode 来实现;

◆ startRecord:recordFormat:filePath:audioConfig:videoConfig:

- (BOOL) startRecord: (AliRtcRecordType recordType
recordFormat: (AliRtcRecordFormat recordFormat
filePath: (NSString *_Nonnull)  filePath
audioConfig: (AliRtcRecordAudioConfig *_Nullable)  audioConfig
videoConfig: (AliRtcRecordVideoConfig *_Nullable)  videoConfig 

开始录制

SDK提供了屏录录制的功能,可以录制本地或远端的音频流、视频流、相机流

参数
recordType录制类型 详细定义见 AliRtcRecordType
recordFormat录制文件格式 详细定义见 AliRtcRecordFormat
filePath文件路径
audioConfig音频设置 详细定义见 AliRtcRecordAudioConfig
videoConfig视频设置 详细定义见 AliRtcRecordVideoConfig
返回
  • YES: 成功
  • NO: 失败

◆ stopRecord [1/2]

- (void) stopRecord

停止录制

SDK提供了停止录制的功能

◆ startLastmileDetect [1/2]

- (int) startLastmileDetect

开始网络质量探测

网络质量探测需要在未入会 joinChannel:name:onResultWithUserId: 情况下调用,探测结果在 onLastmileDetectResultWithQuality: 中回调

返回
  • 0: 成功
  • <0: 失败

◆ stopLastmileDetect [1/2]

- (int) stopLastmileDetect

停止网络质量探测

返回
  • 0: 成功
  • <0: 失败

◆ startLiveStreamingWithAuthInfo:onResult: [1/2]

- (void) startLiveStreamingWithAuthInfo: (AliRtcAuthInfo *_Nonnull)  authInfo
onResult: (void(^)(int errCode))  onResult 

开始低延时互动直播拉流

该方法仅在低延迟互动模式 AliRtcInteractiveWithLowLatencyLive 下,角色为观众 AliRtcClientRolelive 时调用有意义

参数
authInfo入会鉴权信息
onResult拉流结果,errCode
注解
该接口已废弃

◆ stopLiveStreaming [1/2]

- (int) stopLiveStreaming

停止低延时互动直播拉流

返回
  • 0: 成功
  • 非0: 失败
注解
该方法仅在低延迟互动模式下,角色为观众时调用有意义
该接口已废弃

◆ setLiveStreamingViewConfig: [1/2]

- (int) setLiveStreamingViewConfig: (AliVideoCanvas *_Nullable)  canvas

设置低延时互动直播拉流渲染Canvas

参数
canvas渲染参数,包含了窗口以及渲染方式
返回
  • 0: 成功
  • <0: 失败
注解
该接口已废弃

◆ setBeautyEffect:config: [1/2]

- (int) setBeautyEffect: (BOOL)  enable
config: (AliRtcBeautyConfig *_Nullable)  config 

开启或关闭美颜功能, 并设置美颜效果参数

参数
enable
  • YES 开启美颜功能
  • NO 关闭美颜功能
config美颜效果参数, 详细定义见 AliRtcBeautyConfig
返回
  • 0 : 成功
  • < 0 : 失败

◆ snapshotVideo:type: [1/2]

- (int) snapshotVideo: (NSString *_Nullable)  userId
type: (AliRtcVideoTrack type 

视频截图功能

参数
userId用户ID,userId 为nil或者为""代表本地用户
type视频流类型,只支持 AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
返回
注解
视频截图功能为异步接口, 通过监听 AliRtcEngineDelegate::onSnapshotComplete:videoTrack:image:success: 回调获取当前截图画面。

◆ sendMediaExtensionMsg:repeatCount: [1/2]

- (int) sendMediaExtensionMsg: (NSData *_Nonnull)  data
repeatCount: (int)  repeatCount 

发送媒体扩展信息

SDK提供了发送和接收媒体扩展信息的功能,接收端参考 AliRtcEngineDelegate::onMediaExtensionMsgReceived:message:,使用场景:

  • 使用媒体扩展信息传递时间戳,计算端到端的网络延迟,或者跟自身其他业务做数据同步
  • 使用媒体扩展信息传递位控制信息。目前可以传递8 Byte数据,即64位,每一位或几位可以表示控制信息,用于自身业务上的指令传输
参数
data扩展信息内容, 长度限制为最大8字节
repeatCount重复次数,代表消息冗余度,用于防止网络丢包导致的消息丢失
返回
  • 0: 成功
  • <0: 失败
    • ERR_INNER(-1): SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
注解
使用媒体扩展信息时需要复用音视频数据通道,因此必须控制自定义消息的发送频率和消息数据长度,使用限制如下:
  • 每秒最多发送30条消息
  • 为了不影响媒体数据的传输质量,自定义消息体长度限制为8 Byte,可以用来传输时间戳,位控制信息等
  • sendMediaExtensionMsg函数中repeatCount参数为自定义消息冗余度,若大于1,则会发送多次,防止网络丢包导致的消息丢失,此时房间里的其他人也会收到多次相同的消息,需要去重
  • 发送的自定义消息,在旁路直播时,房间里的订阅者也一样会收到
  • 目前H5端不支持发送和接收媒体扩展信息

◆ addVideoWatermark:image:config: [1/2]

- (int) addVideoWatermark: (AliRtcVideoTrack track
image: (NSString *_Nonnull)  imageUrl
config: (AliRtcWatermarkConfig *_Nullable)  config 

添加水印

SDK提供了添加水印的功能,适用于推送屏幕流或者相机流场景

参数
track视频流类型,只支持 AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
imageUrlpng 文件路径
config水印配置 详细定义见 AliRtcWatermarkConfig
返回
  • 0 : 成功
  • -1 : 失败
注解
目前水印图片仅仅支持png格式

◆ clearVideoWatermark: [1/2]

- (int) clearVideoWatermark: (AliRtcVideoTrack track

去除水印

SDK提供了清理水印的功能,适用于推送屏幕流或者相机流场景

参数
track视频流类型,只支持 AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
返回
  • 0 : 成功
  • -1 : 失败

◆ setPublishImage: [1/2]

- (int) setPublishImage: (NSString *_Nullable)  imageUrl

设置上行弱网替代图片

参数
imageUrl图片路径
返回
  • 0: 成功
  • 非0: 失败
注解
当遇到弱网时,回调 onPublishStaticVideoFrame:isStaticFrame: 将触发,并使用该接口设置图片进行推流

◆ postFeedbackWithUid:channleId:description:type:timeStamp: [1/2]

- (void) postFeedbackWithUid: (NSString *_Nullable)  uid
channleId: (NSString *_Nullable)  channelId
description: (NSString *_Nonnull)  description
type: (AliRtcFeedbackType type
timeStamp: (NSTimeInterval)  timeStamp 

SDK问题反馈

参数
uid问题用户id (允许为nil)
channelId问题频道id (允许为nil)
description问题描述(支持中英文, 必填)
type问题类型,参考 AliRtcFeedbackType
timeStamp问题发生的时间戳 (Unix时间戳,大致时间,无需特别精确,可以为0)
注解
该接口在入会前、会中、离会后均可以调用,推荐会中或者离会前调用,尽可能带上所有参数信息

◆ sendDownlinkMessageResponse:

- (int) sendDownlinkMessageResponse: (AliRtcMessage *_Nonnull)  messageInfo

发送下行通道消息(反馈消息处理结果)

参数
messageInfo信息内容
返回
  • 0: 成功
  • <0: 失败
注解
接收到下行通道消息 AliRtcEngineDelegate::onDownlinkMessageNotify: 后,使用该接口发送下行接收反馈消息
已废弃使用

◆ sendUplinkMessage:

- (int) sendUplinkMessage: (AliRtcMessage *_Nonnull)  messageInfo

发送上行通道消息

参数
messageInfo信息内容
返回
  • 0: 成功
  • <0: 失败
注解
使用该接口发送上行通道消息成功后,接收反馈消息见 AliRtcEngineDelegate::onUplinkMessageResponse:
已废弃使用

◆ createChannelWithDelegate:extras: [1/2]

- (AliRtcEngine *_Nullable) createChannelWithDelegate: (id< AliRtcEngineDelegate >_Nonnull)  delegate
extras: (NSString *_Nullable)  extras 

创建子频道

参数
delegatedelegate
extrasextras [可以为空 ""],参考文档:<a href="https://help.aliyun.com/document_detail/200048.html" >extras参数配置说明。
注解
创建的子频道实例,需要通过 destroyChannel 进行释放
返回
成功返回子频道实例,失败返回nil

◆ destroyChannel [1/2]

- (void) destroyChannel

销毁子频道

使用 joinChannel:name:onResultWithUserId: 加入的是主频道,不需要调用destroyChannel销毁

◆ startPublishLiveStreamWithURL:liveTranscoding: [1/2]

- (int) startPublishLiveStreamWithURL: (NSString *_Nonnull)  streamURL
liveTranscoding: (AliRtcLiveTranscodingParam *_Nonnull)  trancoding 

开启旁路直播

SDK提供了开启旁路直播的功能,可以把实时音视频流经过混流、混音处理转为标准直播流并推送至指定CDN供应商

参数
streamURL推流地址
trancoding推流所需参数 详细定义见 AliRtcLiveTranscodingParam
返回
  • 0 : 成功
  • 非0 : 失败
    • ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
    • 其他 : 返回值参考官网错误码

◆ updatePublishLiveStreamWithURL:liveTranscoding: [1/2]

- (int) updatePublishLiveStreamWithURL: (NSString *_Nonnull)  streamURL
liveTranscoding: (AliRtcLiveTranscodingParam *_Nonnull)  trancoding 

更新旁路直播相关参数

SDK提供了更新旁路直播的功能,用于实时更新旁路直播参数

参数
streamURL推流地址
trancoding推流所需参数 详细定义见 AliRtcLiveTranscodingParam
返回
  • 0 : 成功
  • 非0 : 失败
    • ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
    • 其他 : 返回值参考官网错误码

◆ stopPublishLiveStreamWithURL: [1/2]

- (int) stopPublishLiveStreamWithURL: (NSString *_Nonnull)  streamURL

停止旁路直播

SDK提供了停止旁路直播相关参数的功能

参数
streamURL推流地址
返回
  • 0 : 成功
  • 非0 : 失败
    • ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
    • 其他 : 返回值参考官网错误码

◆ GetPublishLiveStreamStateWithURL: [1/2]

- (AliRtcLiveTranscodingState) GetPublishLiveStreamStateWithURL: (NSString *_Nonnull)  streamURL

获得旁路直播状态

参数
streamURL推流地址
返回
AliRtcLiveTranscodingState

◆ startChannelRelay: [1/2]

- (int) startChannelRelay: (AliRtcChannelRelayConfiguration *_Nonnull)  configuration

开启跨频道转推

普通情况下,一个主播只可以在一个频道内推拉流,该接口可以实现跨频道能力,支持主播(在A频道)将A频道的流推送到B频道,B频道相当于一个新主播入会并推流,对应的入会和推流回调依然会回调,与主播直接加入B频道行为一致。

如果两个频道内的两个主播互相向对应的频道进行跨频道转推,就可以实现主播间的跨频道连麦,典型场景如:两个直播间的主播PK功能。如下图示例:

                 channel-A                     channel-B
              ---------------                ---------------
 跨频道转发前: |  主播 A       |              |  主播 B        |
             |  观众 U1 U2   |              |  观众 U3 U4    |
              ---------------                ---------------

                 channel-A                     channel-B
              ---------------                ---------------
 跨频道转发后: |  主播 A B     |              |  主播 B A      |
             |  观众 U1 U2   |              |  观众 U3 U4    |
              ---------------                ---------------
参数
configuration频道配置信息 AliRtcChannelRelayConfiguration
返回
  • 0: 成功
  • <0: 失败
注解
发起跨频道转推需要满足三个条件
  • 会议模式为互动模式或者低延迟互动模式
  • 必须是主播角色
  • 必须在会议中

◆ updateChannelRelay: [1/2]

- (int) updateChannelRelay: (AliRtcChannelRelayConfiguration *_Nonnull)  configuration

更新跨频道转推

参数
configuration频道配置信息 AliRtcChannelRelayConfiguration
返回
  • 0: 成功
  • <0: 失败

◆ stopChannelRelay [1/2]

- (int) stopChannelRelay

停止跨频道转推

返回
  • 0: 成功
  • <0: 失败

◆ setPublishVideoStreamAttribute:attr: [1/2]

- (void) setPublishVideoStreamAttribute: (AliRtcVideoTrack track
attr: (NSString *_Nullable)  attr 

设置视频流属性

参数
track视频流类型,详细见 AliRtcVideoTrack
attr视频流属性
注解
已废弃使用。

◆ enableEncryption: [1/2]

- (int) enableEncryption: (BOOL)  enable

开启/关闭内置加解密功能:需要在入会前调用

参数
enable是否开启
返回
  • 0 : 成功
  • 非0 : 失败

◆ enableBackgroundExchange:imagePath:scalMode: [1/2]

- (int) enableBackgroundExchange: (BOOL)  enable
imagePath: (NSString *_Nonnull)  path
scalMode: (AliRtcBokehScaleModel model 

开启/关闭虚拟背景替换功能

需要集成虚拟背景插件,虚拟背景简介及下载详见官网组件文档

参数
enable是否开启;
path虚拟背景本地图片路径,支持JPG,PNG 格式;
model背景图缩放模式,裁剪或缩放;
  • AliRtcBokehScaleModelCrop: 等比裁剪,当背景图像宽高比和视频数据宽高比不一致时, 为了保持等比例缩放, 会将背景图像裁剪到视频比例, 超出部分背景图片内容将会丢失;
  • AliRtcBokehScaleModelFill: 填充黑边,当背景图像宽高比和视频数据宽高比不一致时, 为了保持等比例缩放, 会对背景进行黑边填充,背景图片内容会全部保留;
返回
  • 0: 成功
  • < 0: 失败 详见 AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:未进行官网组件集成,详见虚拟背景集成文档
    • AliRtcPluginErrorInitError: 参数错误,请检查图片路径地址;
注解
  • 支持平台详见官网发布日志
  • 可重复调用,背景图及缩放模式与之前设置不一致,会进行实时更新;
  • 与背景虚化为替换关系,如开启虚拟背景开关后再次开启背景虚化,则只有背景虚化效果;

◆ enableBackgroundBlur:blurDegree: [1/2]

- (int) enableBackgroundBlur: (BOOL)  enable
blurDegree: (uint32_t)  blurDegree 

开启/关闭虚拟背景虚化功能

需要集成虚拟背景插件,虚拟背景简介及下载详见官网组件文档 ; 需要下载及集成虚拟背景插件,背景替换与背景虚化不可同时使用,如开启虚拟背景开关后再次开启背景虚化,则只有背景虚化效果;

参数
enable是否开启;
blurDegree虚化程度 取值范围 [0-100];
返回
  • 0: 成功
  • < 0: 失败 详见 AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:未进行官网组件集成,详见虚拟背景集成文档
    • AliRtcPluginErrorInitError: 参数错误,请检查虚化程度取值;
注解
  • 支持平台详见官网发布日志
  • 虚化程度范围 [0-100];
  • 可重复调用,虚化值如果与之前设置不一致,会进行实时更新;
  • 与虚拟背景为替换关系,如开启背景虚化开关后再次开启虚拟背景,则只有虚拟背景效果;

◆ sharedInstance:extras: [2/2]

+ (instancetype _Nonnull) sharedInstance: (id< AliRtcEngineDelegate >_Nullable)  delegate
extras: (NSString *_Nullable)  extras 

获取一个AliRtcEngine实例

参数
delegate用于接收AliRTC回调的代理。
extras用于接收来自客户灰度下发的参数,通过JSON配置SDK的特别功能,可以是空字符串。详情请参见官网有关extras功能说明

该方法为同步调用,以单例的形式提供对象创建。

注解
注意 同一时间只会存在一个主实例。
创建子实例,请参考使用 createChannelWithDelegate:extras:

◆ destroy [2/2]

+ (void) destroy

销毁 AliRtcEngine

调用该方法将会释放所有内部使用的资源,当完成音视频通信之后都建议调用该方法释放实例.调用该方法后,你将不能再使用 AliRtcEngine 的其他方法和任何回调,如需要再次使用需要重新调用 AliRtcEngine::sharedInstance:extras: 方法创建一个新的实例。

注解
该接口为同步接口,需要等待内部资源释放之后才能执行其他方法,为避免主线程阻塞,建议开发者放在子线程调用该方法,但需要注意的是如需在销毁后再次创建 AliRtcEngine 实例,请开发者务必保证 destroy 方法执行结束后再创建实例。
为避免死锁,不建议在任何SDK的回调中调用本方法

◆ getSdkVersion [2/2]

+ (NSString *_Nonnull) getSdkVersion

查询SDK当前版本号

返回
当前的SDK版本号,格式为字符串,例:"2.5.0.x"
注解
在任何时刻都可以调用

◆ setLogDirPath: [2/2]

+ (int) setLogDirPath: (NSString *_Nullable)  logDirPath

设置SDK日志文件保存路径

参数
logDirPath日志文件保存目录的绝对路径,该参数是一个目录路径,而不是文件的路径。
返回
注解
调用此接口,请在调用其他所有SDK接口前调用本接口,避免日志出现丢失。同时,App必须保证指定的目录已存在并且可以写入。
如果,目标路径不可写入或创建日志文件失败,则会使用默认日志路径。本次设置将无效。

◆ uploadLog [2/2]

+ (void) uploadLog

上传日志文件

用户主动调用此接口,将当前日志目录下的所有未上传的日志文件进行压缩、打包、上传。

注解
上传过程中,如果有进入频道等操作,会自动停止上传行为,避免影响入会体验。

◆ getErrorDescription: [2/2]

+ (NSString *_Nullable) getErrorDescription: (NSInteger)  errCode

根据错误码,获取错误码描述

参数
errCode错误码,详见 AliRtcErrorCode
返回
错误码描述字符串
注解
在任何时刻都可以调用

◆ setAudioOnlyMode: [2/2]

- (int) setAudioOnlyMode: (BOOL)  audioOnly

设置音频模式还是音视频模式

参数
audioOnly
  • YES: 只有音频推流和拉流(纯音频)
  • NO: 音视频都支持
返回
  • 0: 成功
  • 非0: 失败
注解
只可以在 joinChannel:name:onResultWithUserId: 之前设置

◆ joinChannel:name:onResult: [2/2]

- (int) joinChannel: (AliRtcAuthInfo *_Nonnull)  authInfo
name: (NSString *_Nullable)  userName
onResult: (void(^)(NSInteger errCode, NSString *_Nonnull channel, NSInteger elapsed))  onResult 

加入频道

参数
authInfo认证信息,从App Server获取。
userName任意用于显示的用户名称。不是用户ID
onResult当joinChannel执行结束后调用这个回调
返回
  • 0: 成功
  • <0: 失败
注解
已废弃

◆ joinChannel:name:onResultWithUserId: [2/2]

- (int) joinChannel: (AliRtcAuthInfo *_Nonnull)  authInfo
name: (NSString *_Nullable)  userName
onResultWithUserId: (void(^)(NSInteger errCode, NSString *_Nonnull channel, NSString *_Nonnull userId, NSInteger elapsed))  onResult 

加入频道

该方法让用户加入频道,一个频道内可以加入多个用户进行互相通话。

一般在调用该方法前会根据场景先选择频道模式,通过调用 setChannelProfile: 实现,默认频道模式为通信模式 AliRtcChannelProfile::AliRtcCommunication

// 设置频道为互动模式
[self.engine setChannelProfile:AliRtcInteractivelive];
// 设置角色为主播角色
[self.engine setClientRole:AliRtcClientRoleInteractive];
// 加入频道 onResult和onJoinChannelResult均会回调
[self.engine joinChannel:authInfo name:name onResult:^(NSInteger errCode, NSString * channel, NSString * userId, NSInteger elapsed){
if (errCode == 0) {
//加入频道成功
} else {
//加入频道失败
}
}];
参数
authInfo认证信息,从App Server获取。
userName任意用于显示的用户名称。不是用户ID
onResult当joinChannel执行结束后调用这个回调
返回
注解

◆ setParameter: [2/2]

- (int) setParameter: (NSString *_Nonnull)  param

设置自定义参数

参数
param自定义参数
返回
  • 0: 成功
  • 非0: 失败

◆ leaveChannel [2/2]

- (int) leaveChannel

离开频道

调用该方法代表离开频道,即挂断或者停止通话。

该方法为异步方法,调用后收到 onLeaveChannelResult:stats: 代表退出频道完成,同时会触发远端用户收到 onRemoteUserOffLineNotify:offlineReason: 回调。

如果未加入频道入会,leaveChannel 不会有任何影响。加入频道后,必须要调用该方法离开频道,否则无法加入其他频道。

返回
注解

◆ switchChannel: [2/2]

- (int) switchChannel: (AliRtcAuthInfo *_Nonnull)  authInfo

切换频道

当我们已经在一个频道中想要加入另外一个频道时,通常我们需要离会之后在收到离会回调之后再加入到另外一个频道中,调用方法可以实现快速切换频道。

成功调用该方切换频道后,本地会先收到离开原频道的回调 onLeaveChannelResult:stats: ,再收到成功加入新频道的回调 onJoinChannelResult:channel:userId:elapsed:.

参数
authInfo认证信息,从App Server获取。
返回
  • 0: 成功
  • 非0: 失败
注解
该方法需要在加入一个频道后才可以调用
该方法仅在互动模式AliRtcInteractiveLive和观看角色AliRtcClientRoleLive下调用有效

◆ setChannelProfile: [2/2]

- (int) setChannelProfile: (AliRtcChannelProfile profile

设置频道模式

根据业务需求可以配置不同的频道模式,AliRTC会根据不用的频道模式模式采用不用的策略,目前主要提供通信模式(默认)、互动模式、低延迟互动直播模式

【通信模式 AliRtcCommunication】

  • 该适用于音视频通话场景,所有加入频道的人都可以推/拉音视频流
  • 该模式典型的应用场景:1v1语音聊天、1v1视频聊天、远程问诊、远程面试等

【互动模式 AliRtcInteractivelive】

  • 该模式适用于互动场景,在该模式下有主播和观众两种角色,主播、观众角色可以进行切换,可以通过 setClientRole: 进行设置。
    • 主播角色:可以推流、拉流
    • 观众角色:只可以拉流
  • 该模式典型的应用场景:语聊房、在线教育大班课等

【低延迟互动直播模式 AliRtcInteractiveWithLowLatencyLive】

  • 该模式适用于大型直播场景,与互动模式的差别是观众端使用 startLiveStreamingWithAuthInfo:onResult: 进行拉流
  • 该模式典型应用场景:千人大方会、在线直播培训等
参数
profile频道模式类型, 详细请参考 AliRtcChannelProfile
返回
  • 0: 成功
  • 非0: 失败
    • AliRtcErrInner(-1) : SDK未初始化或已销毁
注解
  • 相同频道内的用户必须使用同一种频道模式
  • 该方法只在入会之前调用有效,会议中不可以重新设置,leaveChannel 后可以重新设置

◆ setClientRole: [2/2]

- (int) setClientRole: (AliRtcClientRole role

设置互动模式下的用户角色

该方法在 ChannelProfile 设置为 AliRtcInteractivelive 时有效

该方法为异步方法,可以在入会前调用,也可以在入会后调用进行用户角色切换,默认角色为:观众角色

参数
role用户角色类型 AliRtcClientRole
返回
  • 0: 成功
  • <0: 失败
    • AliRtcErrInner(-1) : SDK未初始化或已销毁
注解
只在频道模式为 AliRtcInteractivelive 下调用有意义,入会前/会议中均可设置
加入频道后,调用该方法,需要等 onUpdateRoleNotifyWithOldRole:newRole: 回调后,才能再次调用有效

◆ getClientRole

- (AliRtcClientRole) getClientRole

获取互动模式下当前用户角色

返回
AliRtcClientRole 当前用户角色类型
注解
只在频道模式为 AliRtcInteractivelive 下调用有意义

◆ refreshAuthInfo: [2/2]

- (int) refreshAuthInfo: (AliRtcAuthInfo *_Nonnull)  authInfo

刷新鉴权信息

该方法用于更新鉴权信息 AliRtcAuthInfo ,主要为了防止鉴权过期,导致推流失败,当我们收到 onAuthInfoWillExpire 回调时,应用应当更新鉴权信息

参数
authInfo鉴权信息
返回
  • 0: 成功
  • <0: 失败

◆ setLocalViewConfig:forTrack: [2/2]

- (int) setLocalViewConfig: (AliVideoCanvas *_Nullable)  viewConfig
forTrack: (AliRtcVideoTrack track 

设置本地预览显示视图

参数
viewConfig本地视频显示属性, 详细见AliVideoCanvas
track只支持AliRtcVideoTrackCameraAliRtcVideoTrackScreen
返回
  • 0 : 成功
  • < 0 : 失败
注解
支持joinChannel之前和之后切换窗口。如果canvas或者AliVideoCanvas::view为nil,则停止显示。 如果需要重新设置AliVideoCanvas::renderMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas::renderMode。 如果需要重新设置AliVideoCanvas::mirrorMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas::mirrorMode

◆ startPreview [2/2]

- (int) startPreview

开启本地视频预览

返回
  • 0 : 成功
  • <0 : 失败
注解
如果没有调用 setLocalViewConfig:forTrack: 设置显示的view,则无法预览。 可以在 joinChannel:name:onResultWithUserId: 之前就开启预览会自动打开摄像头。

◆ stopPreview [2/2]

- (int) stopPreview

关闭本地视频预览

返回
  • 0 : 成功
  • < 0 : 失败
注解
leaveChannel 会自动停止本地预览;如果没有在推相机流,则会自动关闭摄像头。

◆ setCameraCapturerConfiguration: [2/2]

- (int) setCameraCapturerConfiguration: (AliRtcCameraCapturerConfiguration *_Nonnull)  config

设置camera采集偏好

参数
config偏好设置
返回
  • 0: 成功
  • 非0: 失败
注解
必须在打开摄像头之前设置,如 AliRtcEngine::startPreviewAliRtcEngine::joinChannel:name:onResult: / AliRtcEngine::joinChannel:name:onResultWithUserId:之前设置

◆ publishLocalVideoStream: [2/2]

- (int) publishLocalVideoStream: (BOOL)  enabled

是否推送本地视频流

参数
enabled是否开启/关闭本地视频流推送
  • YES: 开启视频流推送
  • NO: 关闭视频流推送
返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码
注解
SDK默认设置推送视频流,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效

◆ enableLocalVideo: [2/2]

- (int) enableLocalVideo: (BOOL)  enabled

禁用或启用本地视频采集

参数
enabled
  • YES : 启用本地视频采集
  • NO : 禁用本地视频采集
返回
  • 0 : 成功
  • < 0 : 失败
注解
默认为开启状态, 通过监听onUserVideoEnabled:videoEnabled:获取用法是否禁用或启用本地视频采集状态。

◆ muteLocalCamera:forTrack: [2/2]

- (int) muteLocalCamera: (BOOL)  mute
forTrack: (AliRtcVideoTrack track 

停止/恢复本地视频数据发送

参数
muteYES表示视频数据发送黑帧;NO表示恢复正常
track只支持AliRtcVideoTrackCamera
返回
  • 0: 表示Success
  • 非0: 表示Failure
注解
发送黑色的视频帧。采集,编码,发送模块仍然工作, 只是视频内容是黑色帧

◆ setVideoEncoderConfiguration: [2/2]

- (void) setVideoEncoderConfiguration: (AliRtcVideoEncoderConfiguration *_Nullable)  config

设置相机流视频编码属性

该方法用于设置相机流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节

参数
config预定义的编码属性,详见AliRtcVideoEncoderConfiguration
注解
  • 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次相机流视频编码属性,建议在入会前调用

◆ setScreenShareEncoderConfiguration: [2/2]

- (void) setScreenShareEncoderConfiguration: (AliRtcScreenShareEncoderConfiguration *_Nullable)  config

设置屏幕流视频编码属性

该方法用于设置屏幕流视频编码属性对应的视频参数,如分辨率、帧率、码率、视频方向等 所有设置的参数都有相应的范围限制,如果设置的参数不在有效范围内,SDK会自动调节

参数
config预定义的屏幕共享编码属性,详见AliRtcScreenShareEncoderConfiguration
注解
  • 该方法在入会前和入会后都可以调用,如果每次入会只需要设置一次屏幕流视频编码属性,建议在入会前调用

◆ muteLocalMic:mode: [2/2]

- (int) muteLocalMic: (BOOL)  mute
mode: (AliRtcMuteLocalAudioMode mode 

停止/恢复本地音频数据发送

参数
mute
  • YES: 本地音频发送空帧
  • NO: 恢复正常音频数据发送
返回
  • 0: 成功
  • 非0: 失败
注解
mute是指音频流发送静音帧,采集和编码模块仍然在工作。

◆ publishLocalAudioStream: [2/2]

- (int) publishLocalAudioStream: (BOOL)  enabled

是否推送音频流

参数
enabled是否开启/关闭本地音频流推送
  • YES: 开启音频流推送
  • NO: 关闭音频流推送
返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码
注解
SDK默认设置推送音频流,在加入频道前也可以调用此接口修改默认值,并在加入频道成功时生效

◆ startScreenShareWithDesktopId:config:

- (int) startScreenShareWithDesktopId: (int)  desktopId
config: (AliRtcScreenShareConfig *_Nonnull)  config 

根据桌面Id进行屏幕分享

参数
desktopId桌面Id(可通过GetScreenShareSourceInfo接口获取)
config屏幕分享配置,详见 AliRtcScreenShareConfig
返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码

◆ startScreenShareWithWindowId:config:

- (int) startScreenShareWithWindowId: (int)  windowId
config: (AliRtcScreenShareConfig *_Nonnull)  config 

根据窗口id进行屏幕分享

参数
windowId窗口id(可通过GetScreenShareSourceInfo接口获取)
config屏幕分享配置,详见 AliRtcScreenShareConfig
返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码

◆ stopScreenShare [2/2]

- (int) stopScreenShare

停止屏幕分享

返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码

◆ updateScreenShareConfig:

- (int) updateScreenShareConfig: (AliRtcScreenShareConfig *_Nonnull)  config

更新屏幕分享配置

参数
config屏幕分享配置,详见 AliRtcScreenShareConfig
返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码

◆ getScreenShareSourceInfoWithType:

- (NSArray< AliRtcScreenSourceInfo * > *_Nullable) getScreenShareSourceInfoWithType: (AliRtcScreenShareType type

获取屏幕分享源信息

参数
type屏幕分享类型,详见 AliRtcScreenShareType
返回
返回屏幕共享源列表

◆ setRemoteViewConfig:uid:forTrack: [2/2]

- (int) setRemoteViewConfig: (AliVideoCanvas *_Nonnull)  canvas
uid: (NSString *_Nonnull)  uid
forTrack: (AliRtcVideoTrack track 

设置远端视频显示视图

参数
canvas本地视频显示属性, 详细见AliVideoCanvas
uidUser ID,从App server分配的唯一标示符
track只支持AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
返回
  • 0 : 成功
  • < 0 : 失败
注解
支持joinChannel之前和之后切换窗口。如果canvas或者AliVideoCanvas::view为nil,则停止显示 如果需要重新设置AliVideoCanvas::renderMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas::renderMode 如果需要重新设置AliVideoCanvas::mirrorMode,请保持canvas中其他属性不变,仅修改 AliVideoCanvas::mirrorMode

◆ setRemoteAudioVolume:volume: [2/2]

- (int) setRemoteAudioVolume: (NSString *_Nonnull)  uid
volume: (NSInteger)  volume 

调节本地播放的指定远端用户音量

参数
uid用户ID,从App server分配的唯一标示符
volume播放音量,取值范围[0,100] 0:静音;100:原始音量
返回
  • 0: 成功
  • 非0: 失败

◆ muteRemoteAudioPlaying:mute: [2/2]

- (int) muteRemoteAudioPlaying: (NSString *_Nonnull)  uid
mute: (BOOL)  mute 

停止/恢复远端指定用户的音频流的播放

参数
uid用户ID , 从App server分配的唯一标示符
muteYES表示停止播放; NO表示恢复播放
返回
  • 0: 成功
  • 非0: 失败
注解
拉流和解码不受影响, 支持joinChannel之前和之后设置

◆ muteAllRemoteAudioPlaying: [2/2]

- (int) muteAllRemoteAudioPlaying: (BOOL)  mute

停止/恢复远端的所有音频流的播放

参数
muteYES表示停止播放;NO表示恢复播放
返回
  • 0: 成功
  • 非0: 失败
注解
拉流和解码不受影响, 支持joinChannel之前和之后设置

◆ isLocalVideoStreamPublished [2/2]

- (BOOL) isLocalVideoStreamPublished

查询是否设置推送视频流

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解
SDK默认设置推送视频流,如果需要取消推送视频流,可以通过publishLocalVideoStream方法设置为不推送

◆ isScreenSharePublished [2/2]

- (BOOL) isScreenSharePublished

查询是否设置推送屏幕分享

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解
SDK默认设置不推送屏幕分享,如果需要推送屏幕共享,可以通过startScreenShareWithDesktopIdstartScreenShareWithWindowId方法开启屏幕共享推送

◆ isLocalAudioStreamPublished [2/2]

- (BOOL) isLocalAudioStreamPublished

查询是否设置推送音频流

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解
SDK默认设置推送音频流,如果需要取消推送音频流,可以通过 publishLocalAudioStream 方法设置为不推送

◆ publishLocalDualStream: [2/2]

- (int) publishLocalDualStream: (BOOL)  enabled

是否推送次要视频流

参数
enabled是否开启/关闭次要视频流推送
  • YES: 开启次要视频流推送
  • NO: 关闭次要视频流推送
返回
  • 0: 设置成功
  • <0: 设置失败,返回错误码
注解
次要视频流只在推送视频流的前提下才会推送,设置推送次要视频流时,请确认已通过 publishLocalVideoStream 方法开启视频流推送
SDK默认设置不推送次要视频流,在加入频道前也可以调用此接口修改默认值,并在推送视频流时生效

◆ isDualStreamPublished [2/2]

- (BOOL) isDualStreamPublished

查询是否设置推送次要流

返回
  • YES: 已设置推送
  • NO: 未设置推送
注解
SDK默认设置不推送次要视频流,如果需要推送次要视频流,可以通过接口 publishLocalDualStream 方法设置为推送

◆ setRemoteVideoStreamType:type: [2/2]

- (int) setRemoteVideoStreamType: (NSString *_Nonnull)  uid
type: (AliRtcVideoStreamType streamType 

设置订阅相机流格式,大流或小流

参数
uiduserId,从App server分配的唯一标示符
streamType流类型
  • AliRtcVideoStreamTypeNone:无效参数,设置不会有任何效果
  • AliRtcVideoStreamTypeHigh:大流
  • AliRtcVideoStreamTypeLow:小流
返回
  • 0:设置成功
  • <0:设置失败
注解
推流端当前默认不推送小流,只有发送端调用了 publishLocalDualStream: 打开双流模式,接收端才可以选择订阅大流还是小流,否则订阅的只能是大流;

◆ setRemoteDefaultVideoStreamType: [2/2]

- (int) setRemoteDefaultVideoStreamType: (AliRtcVideoStreamType streamType

设置默认订阅的相机流格式,大流或小流;如果不设置,则默认订阅大流;

参数
streamType流类型
  • AliRtcVideoStreamTypeNone:无效参数,设置不会有任何效果
  • AliRtcVideoStreamTypeHigh:(Default)大流
  • AliRtcVideoStreamTypeLow:小流
返回
  • 0:设置成功
  • <0:设置失败

◆ subscribeAllRemoteAudioStreams: [2/2]

- (int) subscribeAllRemoteAudioStreams: (BOOL)  sub

停止/恢复订阅所有远端音频流

参数
sub是否订阅所有远端音频流
  • YES:订阅所有用户的音频流
  • NO:停止订阅所有用户的音频流
返回
  • 0:设置成功
  • <0:设置失败
注解

◆ subscribeAllRemoteVideoStreams: [2/2]

- (int) subscribeAllRemoteVideoStreams: (BOOL)  sub

停止/恢复订阅所有远端视频流

参数
sub是否订阅所有远端视频流
  • YES:订阅所有用户的视频流
  • NO:停止订阅所有用户的视频流
返回
  • 0:设置成功
  • <0:设置失败
注解

◆ subscribeRemoteAudioStream:sub: [2/2]

- (int) subscribeRemoteAudioStream: (NSString *_Nonnull)  uid
sub: (BOOL)  sub 

停止/恢复订阅特定远端用户的音频流

参数
uiduserId,从App server分配的唯一标示符
sub是否订阅远端用户的音频流
  • YES:订阅指定用户的音频流
  • NO:停止订阅指定用户的音频流
返回
  • 0:设置成功
  • <0:设置失败
注解

◆ subscribeRemoteVideoStream:track:sub: [2/2]

- (int) subscribeRemoteVideoStream: (NSString *_Nonnull)  uid
track: (AliRtcVideoTrack track
sub: (BOOL)  sub 

停止/恢复订阅远端用户的视频流

参数
uiduserId,从App server分配的唯一标示符
track视频流类型
  • AliRtcVideoTrackNo:无效参数,设置不会有任何效果
  • AliRtcVideoTrackCamera:相机流
  • AliRtcVideoTrackScreen:屏幕共享流
  • AliRtcVideoTrackBoth:相机流和屏幕共享流
sub是否订阅远端用户的视频流
  • YES:订阅指定用户的视频流
  • NO:停止订阅指定用户的视频流
返回
  • 0:设置成功
  • <0:设置失败
注解

◆ setDefaultSubscribeAllRemoteAudioStreams: [2/2]

- (int) setDefaultSubscribeAllRemoteAudioStreams: (BOOL)  sub

设置是否默认订阅音频流

参数
sub是否默认订阅音频流
  • YES:(Default)默认订阅音频流,
  • NO:默认不订阅音频流
返回
  • 0:设置成功
  • <0:设置失败
注解
  • 入会前入会后均可调用;
  • 如果在加入频道前调用 setDefaultSubscribeAllRemoteAudioStreams:NO,则入会后默认不再订阅任何音频流;
  • 如果在加入频道后调用 setDefaultSubscribeAllRemoteAudioStreams:NO,默认不再订阅设置后加入频道的用户的音频流;
  • 不管是否默认订阅,都可以调用 subscribeRemoteAudioStream:sub:,对指定的用户进行订阅或取消订阅操作;
  • 订阅行为统一受到 subscribeAllRemoteAudioStreams: 这个总开关控制,假设 subscribeAllRemoteAudioStreams: 设置为NO,则订阅全部关闭,其他启动行为全部不生效;

◆ setDefaultSubscribeAllRemoteVideoStreams: [2/2]

- (int) setDefaultSubscribeAllRemoteVideoStreams: (BOOL)  sub

设置是否默认订阅视频流

参数
sub是否默认订阅视频流
  • YES:(Default)默认订阅视频流
  • NO:默认不订阅视频流
返回
  • 0:设置成功
  • <0:设置失败
注解
  • 入会前入会后均可调用;
  • 如果在加入频道前调用 setDefaultSubscribeAllRemoteVideoStreams:NO,则入会后默认不再订阅任何视频流;
  • 如果在加入频道后调用 setDefaultSubscribeAllRemoteVideoStreams:NO,默认不再订阅设置后加入频道的用户的视频流;
  • 不管是否默认订阅,都可以调用 subscribeRemoteVideoStream:track:sub:,对指定的用户进行订阅或取消订阅操作;
  • 订阅行为统一受到 subscribeAllRemoteVideoStreams: 这个总开关控制,假设 subscribeAllRemoteVideoStreams: 设置为NO,则订阅全部关闭,其他启动行为全部不生效;

◆ getOnlineRemoteUsers [2/2]

- (NSArray< NSString * > *_Nullable) getOnlineRemoteUsers

获取远端在线用户列表

返回
当前频道内所有在线用户userid列表
注解
若当前频道ChannelProfile设置为 AliRtcInteractivelive 模式,只有设置角色为 AliRtcClientRoleInteractive 的用户为在线用户,本方法不返回角色为 AliRtcClientRoleLive 的用户

◆ isUserOnline: [2/2]

- (BOOL) isUserOnline: (NSString *_Nonnull)  uid

查询用户是否在线

参数
uid用户ID,从App server分配的唯一标示符。不可为NULL
返回
  • YES,用户在线
  • NO,用户不在线
注解
根据特定的UserID,查询该用户是否在线。

◆ getCurrentConnectionStatus [2/2]

- (AliRtcConnectionStatus) getCurrentConnectionStatus

获取当前网络链接状态

返回
当前链接状态, 参考 AliRtcConnectionStatus
注解
网络链接状态发生变化时,SDK会通过 onConnectionStatusChange:reason: 回调通知
入会前调用此接口,均返回状态 AliRtcConnectionStatusDisconnected

◆ setCurrentAudioCapture:

- (void) setCurrentAudioCapture: (NSString *_Nonnull)  capture

选择录音设备(Name)

参数
capture音频采集设备名称

◆ setCurrentAudioCaptureWithID:

- (void) setCurrentAudioCaptureWithID: (NSString *_Nonnull)  captureID

选择录音设备(ID)

参数
captureID音频采集设备Id

◆ setCurrentAudioRenderer:

- (void) setCurrentAudioRenderer: (NSString *_Nonnull)  renderer

选择扬声器(Name)

参数
renderer音频播放设备名称

◆ setCurrentAudioRendererWithID:

- (void) setCurrentAudioRendererWithID: (NSString *_Nonnull)  rendererID

选择扬声器(ID)

参数
rendererID音频播放设备id

◆ getCameraList

- (NSArray< AliRtcDeviceInfo * > *_Nullable) getCameraList

获取摄像头列表

返回
找到的系统中摄像头名称列表

◆ setCurrentCamera:

- (void) setCurrentCamera: (NSString *_Nonnull)  camera

选择摄像头(Name)

参数
camera摄像头名称

◆ setCurrentCameraWithID:

- (void) setCurrentCameraWithID: (NSString *_Nonnull)  cameraID

选择摄像头(ID)

参数
cameraID摄像头ID

◆ startAudioCapture [2/2]

- (void) startAudioCapture

开启音频采集

此接口可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备:

注解
  • 调用此接口后,离会后采集设备保持开启状态

◆ startAudioCapture: [2/2]

- (void) startAudioCapture: (BOOL)  keepAlive

开启音频采集

此接口可以控制提前打开音频采集,如果不设置,则SDK会自动控制音频采集设备:

参数
keepAliveYES: 离会后采集设备保持开启状态;NO: 离会后采集设备关闭

◆ stopAudioCapture [2/2]

- (void) stopAudioCapture

关闭音频采集

注解
调用此接口后,入会后、离会再入会,采集设备保持关闭状态

◆ startAudioPlayer [2/2]

- (void) startAudioPlayer

开启音频播放

注解
此接口可以控制提前打开音频播放,如果不设置,则SDK会在订阅到音频流后自动打开音频播放

◆ stopAudioPlayer [2/2]

- (void) stopAudioPlayer

关闭音频播放

注解
此接口可以控制关闭音频播放,与 startAudioPlayer 对应

◆ enableAudioDTX: [2/2]

- (int) enableAudioDTX: (BOOL)  enable

是否开启语音活动检测

参数
enableYES表示开启, NO表示关闭, 默认关闭
返回
  • 0: 成功
  • <0: 失败
注解
  • 入会前调用或入会后推音频流之前调用有效。
  • 开启语音活动检测可以在检测到没有语音的情况下,每隔400ms编码发送静音包,节省用户流量。

◆ enableAudioAMD: [2/2]

- (int) enableAudioAMD: (BOOL)  enable

开启音频静音检测(Audio Mute Detection, 静音不发送音频包)

参数
enableYES表示开启,NO表示关闭,默认关闭;
返回
  • 0: 成功
  • <0: 失败
注解

◆ startIntelligentDenoise [2/2]

- (int) startIntelligentDenoise

开启智能降噪

返回
  • 0: 成功
  • 非0: 返回错误码
注解
  • 智能降噪以插件形式提供,调用该接口前,请确保已集成了AliRTC提供的PluginMindRTC.framework
  • 此接口可以通话过程中控制打开智能降噪功能,通话过程中可以支持开启和关闭智能降噪
  • 默认关闭,开启后可能导致功耗增加,智能降噪适合于会议,教育等语音通讯为主的场景,不适合有背景音乐的场景

◆ stopIntelligentDenoise [2/2]

- (void) stopIntelligentDenoise

关闭智能降噪

注解
此接口可以通话过程中控制关闭智能降噪功能

◆ enableMusicMode: [2/2]

- (int) enableMusicMode: (BOOL)  enable

启用音乐模式

参数
enable是否启用音乐模式, YES表示开启, NO表示关闭, 默认关闭
返回
  • 0: 成功
  • <0: 失败
注解
此接口支持会议中过程中动态开启关闭,对有音乐的场景有一定程度的音质提升,最佳的音乐场景体检建议通过接口 setAudioProfile:audio_scene: 中设置场景为 AliRtcAudioScenario::AliRtcSceneMusicMode 来实现;

◆ setRecordingDeviceMute:

- (int) setRecordingDeviceMute: (BOOL)  mute

静音音频采集设备

参数
muteTRUE:设备设置为静音,FALSE: 设备设置为不静音
返回
0:方法调用成功,<0:方法调用失败

◆ getRecordingDeviceMute

- (BOOL) getRecordingDeviceMute

获取音频采集设备静音状态

返回
TRUE:已静音状态,FALSE: 非静音状态

◆ setPlaybackDeviceMute:

- (int) setPlaybackDeviceMute: (BOOL)  mute

静音音频播放设备

参数
muteTRUE:设备设置为静音,FALSE: 设备设置为不静音
返回
0:方法调用成功,<0:方法调用失败

◆ getPlaybackDeviceMute

- (BOOL) getPlaybackDeviceMute

获取音频播放设备静音状态

返回
TRUE:已静音状态,FALSE: 非静音状态

◆ setLogLevel: [2/2]

- (void) setLogLevel: (AliRtcLogLevel logLevel

设置日志等级

参数
logLevelLog级别,详见 AliRtcLogLevel 枚举类型
注解
设置 SDK 的输出日志等级。默认值为 AliRtcLogLevel::AliRtcLogLevelInfo
调用此接口,请在仅次于 SetLogDirPath 接口调用之后再调用本接口,避免因日志等级切换造成的打印丢失。

◆ setRecordingVolume: [2/2]

- (int) setRecordingVolume: (NSInteger)  volume

设置录音音量

参数
volume录音音量,取值范围[0,400]
  • 0:静音
  • <100:减小音量
  • >100:放大音量
返回
  • 0: 成功
  • 非0: 失败

◆ setPlayoutVolume: [2/2]

- (int) setPlayoutVolume: (NSInteger)  volume

设置播放音量

参数
volume播放音量,取值范围[0,400]
  • 0:静音
  • <100:减小音量
  • >100:放大音量
返回
  • 0: 成功
  • 非0: 失败

◆ setRecordingDeviceVolume:

- (int) setRecordingDeviceVolume: (NSInteger)  volume

设置音频采集设备音量

参数
volume音量范围 [0, 100]
返回
0表示Success 非0表示Failure

◆ getRecordingDeviceVolume

- (int) getRecordingDeviceVolume

获取音频采集设备音量

返回
音频采集设备音量,音量范围 [0, 100],返回-1表示失败

◆ setPlayoutDeviceVolume:

- (int) setPlayoutDeviceVolume: (NSInteger)  volume

设置音频播放设备音量

参数
volume音量范围 [0, 100]
返回
0表示Success 非0表示Failure

◆ getPlayoutDeviceVolume

- (int) getPlayoutDeviceVolume

获取音频播放设备音量

返回
音频播放设备音量,音量范围 [0, 100],返回-1表示失败

◆ setAudioProfile:audio_scene: [2/2]

- (int) setAudioProfile: (AliRtcAudioProfile audio_profile
audio_scene: (AliRtcAudioScenario audio_scene 

设置音频profile

参数
audio_profile音频采集/编码模式参数, 详见 AliRtcAudioProfile
audio_scene音频场景模式参数,详见 AliRtcAudioScenario
返回
  • 0: 成功
  • 其他: 失败
注解
只支持 joinChannel:name:onResultWithUserId: 前设置有效;

◆ setAudioEffectVoiceChangerMode: [2/2]

- (int) setAudioEffectVoiceChangerMode: (AliRtcAudioEffectVoiceChangerMode mode

设置变声音效模式

参数
mode参考 AliRtcAudioEffectVoiceChangerMode 对应的变声音效模式值
返回
  • 0:成功
  • 非0:失败
注解
加入频道前和频道过程中调用都生效

◆ setAudioEffectPitchValue: [2/2]

- (int) setAudioEffectPitchValue: (double)  value

设置变调参数

参数
value变调参数,范围:[0.5, 2.0],1.0表示音调不变,小于1.0表示音调降低,大于1.0表示音调升高,默认1.0
返回
  • 0:成功
  • 非0:失败
注解
加入频道前和频道过程中调用都生效

◆ setAudioEffectReverbMode: [2/2]

- (int) setAudioEffectReverbMode: (AliRtcAudioEffectReverbMode mode

设置混响音效模式

参数
mode参考 AliRtcAudioEffectReverbMode 对应的混响模式
返回
  • 0:成功
  • 非0:失败
注解
加入频道前和频道过程中调用都生效

◆ setAudioEffectReverbParamType:value: [2/2]

- (int) setAudioEffectReverbParamType: (AliRtcAudioEffectReverbParamType type
value: (float)  value 

设置混响音效类型

参数
type参考 AliRtcAudioEffectReverbParamType 对应的混响类型
value混响参数值,不同混响类型的取值范围参考 AliRtcAudioEffectReverbParamType 中取值说明
返回
  • 0:成功
  • 非0:失败
注解
需要在 setAudioEffectReverbMode: 之后调用

◆ isCameraOn [2/2]

- (BOOL) isCameraOn

检查camera是否打开

返回
YES表示摄像头已打开;NO表示摄像头没有打开
注解
该接口用于检查当前camera的状态

◆ isInCall [2/2]

- (BOOL) isInCall

获取状态:当前是否在频道中

返回
  • YES: 表示当前已经加入了频道。
  • NO: 表示当前不在频道中。
注解
该方法可在加入频道前或加入频道后调用。

◆ isAudioOnly [2/2]

- (BOOL) isAudioOnly

查询是否纯音频模式

返回
  • YES: 表示纯音频模式
  • NO: 表示非纯音频模式

◆ getUserInfo: [2/2]

- (NSDictionary *_Nullable) getUserInfo: (NSString *_Nonnull)  uid

查询远端用户状态

参数
uid用户ID。从App server分配的唯一标示符
返回
dict App提供的容器,用于存放用户数据,dict类型为字典类型,通过{Key,Value}进行访问。
  • dict[userID] != "" 成功 - dict[userID] == @"" 失败
注解
通过 uid 查询,指定远端用户的状态信息,在参数dict中,以字典{key,value}的形式,返回用户的全部状态信息。
Key信息:
  • userID: 远端用户的ID。
  • isOnline: 远端用户是否在线。
  • sessionID: 远端用户的会话ID。
  • callID: 当前会话的callID。
  • displayName: 远端用户的名称。
  • hasAudio: 远端用户是否推送了音频流。
  • hasCameraMaster: 远端用户是否推送了相机大流。
  • hasCameraSlave: 远端用户是否推送了相机小流。
  • hasScreenSharing: 远端用户是否推送了屏幕流。
  • requestAudio, 本端是否订阅了此远端用户的音频流。
  • requestCameraMaster, 本端是否订阅了此远端用户的相机大流。此状态,系在成功订阅该用户摄像头大流前的状态。
  • requestCameraSlave, 本端是否订阅了此远端用户的相机小流。此状态,系在成功订阅该用户摄像头小流前的状态。
  • requestScreenSharing, 本端是否订阅了此远端用户的屏幕流。此状态,系在成功订阅该用户屏幕共享前的状态。
  • preferCameraMaster, 远端用户是否开启了大流优先。
  • subScribedAudio: 本端是否拉到了此远端用户的音频流。
  • subScribedCameraMaster: 本端是否拉到了此远端用户的相机大流。
  • subScribedCamearSlave: 本端是否拉到了此远端用户的相机小流。
  • subScribedScreenSharing: 本端是否拉到了此远端用户的屏幕流。
  • hasCameraView: 本端是否设置了此远端用户相机流的view。
  • hasScreenView: 本端是否设置了此远端用户屏幕流的view。
  • muteAudioPlaying: 本端是否静音了此远端用户。

◆ setH5CompatibleMode: [2/2]

+ (void) setH5CompatibleMode: (BOOL)  comp

设置H5兼容模式

互动模式下,是否需要与Web SDK互通。如果使用Native SDK用户加入频道,需要与通过Web SDK加入频道的用户进行互通,则必须使用H5兼容模式,否则,Web用户查看Native用户将是黑屏。

参数
comp
  • YES: 兼容H5。
  • NO: 传统模式,不兼容H5。
注解
不支持在创建AliRtcEngine实例之后更改H5兼容模式,必须在创建实例之前就调用此方法。

◆ getH5CompatibleMode [2/2]

+ (BOOL) getH5CompatibleMode

检查当前是否兼容H5、与Web SDK互通

返回
  • YES: 兼容H5。
  • NO: 不兼容H5。

◆ showDebugView:showType:userId: [2/2]

- (int) showDebugView: (NSTextView *_Nonnull)  view
showType: (AliRtcShowDebugViewType showType
userId: (NSString *_Nullable)  userId 

展示用户Debug数据

参数
view对外展示的View,由客户传入,显示样式由客户指定
showType展示类型:0: 不显示 1.音频 2.视频 3.全部;另外可以传入特殊的值来展示
userId对应用户数据

◆ addVideoWatermark:image:config: [2/2]

- (int) addVideoWatermark: (AliRtcVideoTrack track
image: (NSString *_Nonnull)  imageUrl
config: (AliRtcWatermarkConfig *_Nonnull)  config 

添加水印

SDK提供了添加水印的功能,适用于推送屏幕流或者相机流场景

参数
track视频流类型,只支持 AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
imageUrlpng 文件路径
config水印配置 详细定义见 AliRtcWatermarkConfig
返回
  • 0 : 成功
  • -1 : 失败
注解
目前水印图片仅仅支持png格式

◆ clearVideoWatermark: [2/2]

- (int) clearVideoWatermark: (AliRtcVideoTrack track

去除水印

SDK提供了清理水印的功能,适用于推送屏幕流或者相机流场景

参数
track视频流类型,只支持 AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
返回
  • 0 : 成功
  • -1 : 失败

◆ setPublishImage: [2/2]

- (int) setPublishImage: (NSString *_Nullable)  imageUrl

设置上行弱网替代图片

参数
imageUrl图片路径
返回
  • 0: 成功
  • 非0: 失败
注解
当遇到弱网时,回调 onPublishStaticVideoFrame:isStaticFrame: 将触发,并使用该接口设置图片进行推流

◆ enableSystemAudio:deviceName:

- (int) enableSystemAudio: (BOOL)  enabled
deviceName: (NSString *_Nullable)  deviceName 

是否开启系统音频采集

参数
enabled是否开启
deviceName音频播放设备
返回
  • 0 : 成功
  • -1 : 失败
注解
  • mac端默认不支持采集系统音频,常见方案是通过安装Core Audio Plug-ins(https://developer.apple.com/documentation/coreaudio/creating_an_audio_server_driver_plug-in?language=objc)支持
  • 基本原理是Core Audio Plug-ins允许创建一对虚拟采集/播放设备,通过把系统默认输出设备设为虚拟播放设备,再打开同名的虚拟采集设备就可以采集到系统音频
  • 开启系统音频采集时,deviceName必须是虚拟播放设备,SDK会将系统音频输出切换为该虚拟播放设备,并打开同名的虚拟采集设备
  • 关闭系统音频采集时,deviceName可以是当前任意音频播放设备,SDK会将系统音频输出切换为该播放设备,并关闭虚拟采集设备
  • 请确保调用该接口前mac设备已经安装了虚拟采集/播放设备,安装虚拟设备的示例代码及详细说明请参考官网相关文档

◆ isSystemAudioEnabled

- (bool) isSystemAudioEnabled

系统音频采集是否处于开启状态

返回
  • YES : 开启
  • NO : 关闭

◆ setSystemAudioRecordingVolume:

- (int) setSystemAudioRecordingVolume: (int)  volume

设置系统音频采集后的推流音量

参数
volume推流音量
返回
  • 0 : 成功
  • -1 : 失败

◆ getSystemAudioRecordingVolume

- (int) getSystemAudioRecordingVolume

获取系统音频采集后的推流音量

返回
推流音量
  • 0 : 成功
  • -1 : 失败

◆ setSystemAudioPlayoutVolume:

- (int) setSystemAudioPlayoutVolume: (int)  volume

设置系统音频采集后的播放音量

参数
volume播放音量
返回
  • 0 : 成功
  • -1 : 失败

◆ getSystemAudioPlayoutVolume

- (int) getSystemAudioPlayoutVolume

获取系统音频采集后的播放音量

返回
播放音量
  • 0 : 成功
  • -1 : 失败

◆ startTestAudioRecordWithName:

- (int) startTestAudioRecordWithName: (NSString *_Nonnull)  deviceName

开始测试音频采集设备

参数
deviceName音频采集设备Name
返回
0表示Success 非0表示Failure
注解
请在joinChannel之前调用

◆ stopTestAudioRecord

- (int) stopTestAudioRecord

停止测试音频采集设备

返回
0表示Success 非0表示Failure
注解
请在joinChannel之前调用

◆ startTestAudioPlayoutWithName:filePath:loopCycles:

- (int) startTestAudioPlayoutWithName: (NSString *_Nonnull)  deviceName
filePath: (NSString *_Nonnull)  filePath
loopCycles: (NSInteger)  loopCycles 

开始测试音频播放设备

参数
deviceName音频播放设备Name
filePath音频文件路径
loopCycles循环次数,可以设置-1(无限循环)或者>0的正整数次,其他值无效
返回
0表示Success 非0表示Failure
注解
请在joinChannel之前调用

◆ stopTestAudioPlayout

- (int) stopTestAudioPlayout

停止测试音频播放设备

返回
0表示Success 非0表示Failure
注解
请在joinChannel之前调用

◆ startLastmileDetect [2/2]

- (int) startLastmileDetect

开始网络质量探测

网络质量探测需要在未入会 joinChannel:name:onResultWithUserId: 情况下调用,探测结果在 onLastmileDetectResultWithQuality: 中回调

返回
  • 0: 成功
  • <0: 失败

◆ stopLastmileDetect [2/2]

- (int) stopLastmileDetect

停止网络质量探测

返回
  • 0: 成功
  • <0: 失败

◆ subscribeAudioData: [2/2]

- (void) subscribeAudioData: (AliRtcAudioSource audioSource

订阅音频数据

参数
audioSource音频裸数据源类型,详见 AliRtcAudioSource
注解
订阅音频数据输出前,需先通过 setSubscribeAudioNumChannel:setSubscribeAudioSampleRate: 设置输出音频数据参数

◆ unSubscribeAudioData: [2/2]

- (void) unSubscribeAudioData: (AliRtcAudioSource audioSource

取消订阅音频数据

参数
audioSource音频裸数据源类型,详见 AliRtcAudioSource

◆ enableAudioVolumeIndication:smooth:reportVad: [2/2]

- (int) enableAudioVolumeIndication: (NSInteger)  interval
smooth: (NSInteger)  smooth
reportVad: (NSInteger)  reportVad 

设置音量回调频率和平滑系数

参数
interval时间间隔,单位毫秒,最小值不得小于10ms, 建议设置300-500ms, <= 0表示不启用音量提示和说话人提示功能
smooth平滑系数,数值越大平滑程度越高,反之越低,实时性越好,建议设置3,范围[0, 9];
reportVad说话人检测开关,1: 开启,0: 关闭
返回
  • 0: 成功
  • <0: 失败
注解
设置之后,音频音量和说话人uid会分别通过 AliRtcEngineDelegate::onAudioVolumeCallback:totalVolume:AliRtcEngineDelegate::onActiveSpeaker: 回调

◆ setSubscribeAudioNumChannel: [2/2]

- (void) setSubscribeAudioNumChannel: (AliRtcAudioNumChannel audioNumChannel

设置回调音频声道数,默认单声道 (混音前数据不支持该参数设置)

参数
audioNumChannel声道数,必须是 AliRtcAudioNumChannel
注解
需在 subscribeAudioData: 前进行设置

◆ setSubscribeAudioSampleRate: [2/2]

- (void) setSubscribeAudioSampleRate: (AliRtcAudioSampleRate audioSampleRate

设置回调音频采样率,默认44100 (混音前数据不支持该参数设置)

参数
audioSampleRate采样率,必须是 AliRtcAudioSampleRate
注解
需在 subscribeAudioData: 前进行设置

◆ getVideoCaptureData:videoSample: [2/2]

- (BOOL) getVideoCaptureData: (AliRtcVideoTrack videoTrack
videoSample: (AliRtcVideoDataSample **)  p_sample 

主动获取采集数据

参数
videoTrack视频流类型
p_sample数据接收对象
返回
  • YES: 成功
  • NO: 失败
注解
仅在 onGetIfUserFetchObserverData 返回 YES 时有效

◆ getVideoPreEncoderData:videoSample: [2/2]

- (BOOL) getVideoPreEncoderData: (AliRtcVideoTrack videoTrack
videoSample: (AliRtcVideoDataSample **)  p_sample 

主动获取编码前数据

参数
videoTrack视频流类型
p_sample数据接收对象
返回
  • YES: 成功
  • NO: 失败
注解
仅在 onGetIfUserFetchObserverData 返回 YES 时有效

◆ getVideoRenderData:videoTrack:videoSample: [2/2]

- (BOOL) getVideoRenderData: (NSString *)  uid
videoTrack: (AliRtcVideoTrack videoTrack
videoSample: (AliRtcVideoDataSample **)  p_sample 

主动获取拉流数据,onGetIfUserFetchObserverData 返回 YES 时有效

参数
uid远端用户ID
videoTrack视频流类型
p_sample数据接收对象
返回
  • YES: 成功
  • NO: 失败
注解
仅在 onGetIfUserFetchObserverData 返回 YES 时有效

◆ setExternalVideoSource:sourceType:renderMode: [2/2]

- (int) setExternalVideoSource: (BOOL)  enable
sourceType: (AliRtcVideoSource type
renderMode: (AliRtcRenderMode renderMode 

启用外部视频输入源

参数
enableYES 开启,NO 关闭
type流类型
renderMode外部输入视频源宽高比和推流profile不一致时,会按照对应的rendermode做对应处理

启用外部视频输入源

参数
enable
  • YES 开启
  • NO 关闭
type流类型,详见 AliRtcVideoSource
  • AliRtcVideosourceCameraType 外部输入视频数据走相机流通道,如果当前相机采集打开中,调用该接口设置enable为YES,sdk会替换掉相机采集
  • AliRtcVideosourceScreenShareType 外部输入视频数据走屏幕流通道,如果当前屏幕共享采集打开中,调用该接口设置enable为YES,sdk会替换掉屏幕共享采集
renderMode处理模式,外部输入视频源宽高比和推流profile不一致时,会按照对应的rendermode做对应处理,详见 AliRtcRenderMode
  • AliRtcRenderModeAuto 自动(默认) 如果外部输入的视频宽高比和推流设置的宽高比不一致时,维持外部输入的视频宽高比,等比例缩放宽高到推流设置的宽高范围内,注意此模式下为了保证原始视频的比例和内容完整性,会导致实际推流的分辨率和设置的不一致
  • AliRtcRenderModeStretch 拉伸平铺,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频拉伸到推流设置的比例,画面会变形
  • AliRtcRenderModeFill 填充黑边,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频上下或者左右填充黑边
  • AliRtcRenderModeCrop 裁剪,如果外部输入的视频宽高比和推流设置的宽高比不一致时,将输入视频宽或者高进行裁剪,画面内容会丢失
返回
  • 0: 成功
  • 非0: 失败

◆ pushExternalVideoFrame:sourceType: [2/2]

- (int) pushExternalVideoFrame: (AliRtcVideoDataSample *_Nonnull)  frame
sourceType: (AliRtcVideoSource type 

输入视频数据

参数
frame帧数据,详见 AliRtcVideoDataSample
type流类型,详见 AliRtcVideoSource
  • AliRtcVideosourceCameraType 外部输入视频数据走相机流通道
  • AliRtcVideosourceScreenShareType 外部输入视频数据走屏幕流通道
返回
  • 0: 成功
  • 非0: 失败
注解
如果返回值为errorCode中的AliRtcErrVideoBufferFull,代表当前buffer队列塞满,需要等待后再继续输送数据

◆ setExternalAudioSource:withSampleRate:channelsPerFrame: [2/2]

- (int) setExternalAudioSource: (BOOL)  enable
withSampleRate: (NSUInteger)  sampleRate
channelsPerFrame: (NSUInteger)  channelsPerFrame 

设置是否启用外部音频输入源

参数
enableYES:开启; NO:关闭
sampleRate采样率 16000 48000...
channelsPerFrame声道数 1:单声道; 2:双声道
返回
  • >=0: 成功
  • <0: 失败

◆ pushExternalAudioFrameRawData:samples:timestamp: [2/2]

- (int) pushExternalAudioFrameRawData: (void *_Nonnull)  data
samples: (NSUInteger)  samples
timestamp: (NSTimeInterval)  timestamp 

输入外部音频数据推流到远端

参数
data音频数据buffer
samples音频数据buffer长度
timestamp时间戳
返回
注解
为了保证语音连续性,sdk内部会有buffer缓存送进来的音频数据,以每次送10ms数据为例,如果返回 AliRtcErrorCode::AliRtcErrAudioBufferFull 时,说明内部缓冲区已满,建议等待20ms后再重新送当前数据帧;

◆ setExternalAudioVolume: [2/2]

- (int) setExternalAudioVolume: (int)  vol

设置外部音频音量

参数
vol音量,取值范围[0,100]
返回
  • >=0: 成功
  • <0: 失败
注解
同时设置外部音频输入音量与外部音频播放音量

◆ getExternalAudioVolume [2/2]

- (int) getExternalAudioVolume

获取混音音量

返回
  • >=0: 正常混音音量,范围[0-100]
  • <0: 失败

◆ setMixedWithMic: [2/2]

- (int) setMixedWithMic: (BOOL)  mixed

设置是否与麦克风采集音频混合

参数
mixedYES:混音;NO:完全替换麦克风采集数据
返回
  • 0: 成功
  • 非0: 失败

◆ setExteranlAudioRender:sampleRate:channelsPerFrame: [2/2]

- (int) setExteranlAudioRender: (BOOL)  enable
sampleRate: (NSUInteger)  sampleRate
channelsPerFrame: (NSUInteger)  channelsPerFrame 

设置是否启用外部输入音频播放

参数
enableYES:开启; NO:关闭
sampleRate采样率 16000 48000...
channelsPerFrame声道数 1:单声道; 2:双声道
返回
  • >=0: 成功
  • <0: 失败

◆ pushExternalAudioRenderRawData:sampleLength:sampleRate:channelsPerFrame:timestamp: [2/2]

- (int) pushExternalAudioRenderRawData: (const void *_Nullable)  audioSamples
sampleLength: (NSUInteger)  sampleLength
sampleRate: (NSUInteger)  sampleRate
channelsPerFrame: (NSUInteger)  channelsPerFrame
timestamp: (long long)  timestamp 

输入外部音频数据本地播放

参数
audioSamples音频数据buffer
sampleLength音频数据buffer长度
sampleRate输入音频数据的采样率
channelsPerFrame输入音频数据的声道数
timestamp时间戳
返回
注解
为了保证语音连续性,sdk内部会有buffer缓存送进来的音频数据,以每次送10ms数据为例,如果返回 ErrorCodeEnum::ERR_AUDIO_BUFFER_FULL 时,说明内部缓冲区已满,建议等待20ms后再重新送当前数据帧;

◆ startAudioAccompanyWithFile:onlyLocalPlay:replaceMic:loopCycles: [2/2]

- (int) startAudioAccompanyWithFile: (NSString *_Nonnull)  filePath
onlyLocalPlay: (BOOL)  onlyLocalPlay
replaceMic: (BOOL)  replaceMic
loopCycles: (NSInteger)  loopCycles 

开始伴奏混音

参数
filePath伴奏文件路径
onlyLocalPlay是否只本地播放
replaceMic是否替换掉MIC
loopCycles循环次数,可以设置-1(无限循环)或者正整数
返回
  • 0: 成功
  • 非0: 返回错误码
注解
异步接口,可通过 onAudioPlayingStateChanged:errorCode: 监听播放器状态

◆ stopAudioAccompany [2/2]

- (int) stopAudioAccompany

停止伴奏混音

返回
  • 0: 成功
  • 非0: 返回错误码

◆ setAudioAccompanyVolume: [2/2]

- (int) setAudioAccompanyVolume: (NSInteger)  volume

设置伴奏音量

参数
volume伴奏音量,取值范围[0,100]
返回
  • 0: 成功
  • 非0: 返回错误码
注解
同时设置伴奏本地播放音量与伴奏推流音量

◆ setAudioAccompanyPublishVolume: [2/2]

- (int) setAudioAccompanyPublishVolume: (NSInteger)  volume

设置伴奏推流音量

参数
volume伴奏推流音量,取值范围[0,100]
返回
  • 0: 成功
  • 非0: 返回错误码

◆ getAudioAccompanyPublishVolume [2/2]

- (int) getAudioAccompanyPublishVolume

获取伴奏推流音量

返回
  • [0, 100]: 成功
  • 其他值: 返回错误码

◆ setAudioAccompanyPlayoutVolume: [2/2]

- (int) setAudioAccompanyPlayoutVolume: (NSInteger)  volume

设置伴奏本地播放音量

参数
volume伴奏本地播放音量,取值范围[0,100]
返回
  • 0: 成功
  • 非0: 返回错误码

◆ getAudioAccompanyPlayoutVolume [2/2]

- (int) getAudioAccompanyPlayoutVolume

获取伴奏本地播放音量

返回
  • [0, 100]: 成功
  • 其他值: 返回错误码

◆ pauseAudioAccompany [2/2]

- (int) pauseAudioAccompany

暂停伴奏混音

返回
  • 0: 成功
  • 非0: 返回错误码

◆ resumeAudioAccompany [2/2]

- (int) resumeAudioAccompany

重新开始伴奏混音

返回
  • 0: 成功
  • 非0: 返回错误码

◆ getAudioAccompanyDuration [2/2]

- (int) getAudioAccompanyDuration

获取伴奏文件时长, 单位为毫秒

返回
  • >=0: 伴奏文件时长
  • <0: 返回错误码

◆ getAudioAccompanyCurrentPosition [2/2]

- (int) getAudioAccompanyCurrentPosition

获取伴奏文件播放进度,单位为毫秒

返回
  • >=0: 伴奏文件播放进度
  • <0: 返回错误码

◆ setAudioAccompanyPosition: [2/2]

- (int) setAudioAccompanyPosition: (int)  pos

设置伴奏文件的播放位置

参数
pos进度条位置,单位为毫秒
返回
  • 0: 成功
  • 非0: 返回错误码

◆ preloadAudioEffectWithSoundId:filePath: [2/2]

- (int) preloadAudioEffectWithSoundId: (NSInteger)  soundId
filePath: (NSString *_Nonnull)  filePath 

预加载音效文件

参数
soundId用户给该音效文件分配的ID
filePath音效文件路径,支持本地文件和网络url
返回
  • 0:成功
  • 非0:失败
注解
音效相关接口为同步接口, 建议使用本地文件

◆ unloadAudioEffectWithSoundId: [2/2]

- (int) unloadAudioEffectWithSoundId: (NSInteger)  soundId

删除预加载的音效文件

参数
soundId用户给该音效文件分配的ID
返回
  • 0:成功
  • 非0:失败
注解
音效soundId应与预加载 preloadAudioEffectWithSoundId:filePath: 时传入的ID相同

◆ playAudioEffectWithSoundId:filePath:cycles:publish: [2/2]

- (int) playAudioEffectWithSoundId: (NSInteger)  soundId
filePath: (NSString *_Nonnull)  filePath
cycles: (NSInteger)  cycles
publish: (BOOL)  publish 

开始播放音效

开始播放音效接口,可以多次调用该方法传入不同的soundId和filePath,同时播放多个音效文件,音效文件播放结束后,SDK 会触发 onAudioEffectFinished: 回调

参数
soundId用户给该音效文件分配的ID,每个音效均有唯一的ID,如果你已通过 preloadAudioEffectWithSoundId:filePath: 将音效加载至内存,确保这里的soundId与 preloadAudioEffectWithSoundId:filePath: 设置的soundId相同
filePath文件路径,支持本地文件和网络url
cycles音效循环播放次数
  • ≥0:循环播放次数,例如,设置3表示总共播放3次
  • -1:无限循环播放
publish是否将音效传到远端
  • YES:发布,本地用户和远端用户都能听到音效
  • NO:不发布,只有本地用户能听到音效
返回
  • 0:成功
  • 非0:失败

◆ stopAudioEffectWithSoundId: [2/2]

- (int) stopAudioEffectWithSoundId: (NSInteger)  soundId

停止播放音效

参数
soundId用户给该音效文件分配的ID,每个音效均有唯一的ID,如果你已通过 preloadAudioEffectWithSoundId:filePath: 将音效加载至内存,确保这里的soundId与 preloadAudioEffectWithSoundId:filePath: 设置的soundId相同
返回
  • 0:成功
  • 非0:失败

◆ stopAllAudioEffects [2/2]

- (int) stopAllAudioEffects

停止播放所有音效

返回
  • 0:成功
  • 非0:失败

◆ setAudioEffectPublishVolumeWithSoundId:volume: [2/2]

- (int) setAudioEffectPublishVolumeWithSoundId: (NSInteger)  soundId
volume: (NSInteger)  volume 

设置音效推流混音音量

参数
soundId用户给该音效文件分配的ID
volume推流混音音量,范围是:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败
注解
该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ getAudioEffectPublishVolumeWithSoundId: [2/2]

- (int) getAudioEffectPublishVolumeWithSoundId: (NSInteger)  soundId

获取音效推流混音音量

参数
soundId用户给该音效文件分配的ID
返回
  • [0, 100]:音效推流混音音量
  • 其他:错误值
注解
音效推流混音音量有效范围为:[0, 100],该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ setAudioEffectPlayoutVolumeWithSoundId:volume: [2/2]

- (int) setAudioEffectPlayoutVolumeWithSoundId: (NSInteger)  soundId
volume: (NSInteger)  volume 

设置音效本地播放音量

参数
soundId用户给该音效文件分配的ID
volume音效本地播放音量,范围:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败
注解
该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ getAudioEffectPlayoutVolumeWithSoundId: [2/2]

- (int) getAudioEffectPlayoutVolumeWithSoundId: (NSInteger)  soundId

获取音效本地播放音量

参数
soundId用户给该音效文件分配的ID
返回
  • [0, 100]:音效本地播放音量
  • 其他:错误值
注解
音效本地播放音量有效范围为:[0, 100],该方法需要在 playAudioEffectWithSoundId:filePath:cycles:publish: 后调用

◆ setAllAudioEffectsPlayoutVolume: [2/2]

- (int) setAllAudioEffectsPlayoutVolume: (NSInteger)  volume

设置所有音效本地播音量

参数
volume音效本地播放音量,范围:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败

◆ setAllAudioEffectsPublishVolume: [2/2]

- (int) setAllAudioEffectsPublishVolume: (NSInteger)  volume

设置所有音效推流混音音量

参数
volume推流混音音量,范围是:[0, 100],默认值:50
返回
  • 0:成功
  • 非0:失败

◆ pauseAudioEffectWithSoundId: [2/2]

- (int) pauseAudioEffectWithSoundId: (NSInteger)  soundId

暂停音效

参数
soundId用户给该音效文件分配的ID
返回
  • 0:成功
  • 非0:失败

◆ pauseAllAudioEffects [2/2]

- (int) pauseAllAudioEffects

暂停所有音效

返回
  • 0:成功
  • 非0:失败

◆ resumeAudioEffectWithSoundId: [2/2]

- (int) resumeAudioEffectWithSoundId: (NSInteger)  soundId

恢复指定音效文件

参数
soundId用户给该音效文件分配的ID
返回
  • 0:成功
  • 非0:失败

◆ resumeAllAudioEffects [2/2]

- (int) resumeAllAudioEffects

恢复所有音效文件

返回
  • 0:成功
  • 非0:失败

◆ startRecord:recordFormat:filePath:audioConfig:videoConfig:isFragment:

- (BOOL) startRecord: (AliRtcRecordType recordType
recordFormat: (AliRtcRecordFormat recordFormat
filePath: (NSString *_Nonnull)  filePath
audioConfig: (AliRtcRecordAudioConfig *_Nonnull)  audioConfig
videoConfig: (AliRtcRecordVideoConfig *_Nonnull)  videoConfig
isFragment: (BOOL)  isFragment 

开始录制

SDK提供了屏录录制的功能,可以录制本地或远端的音频流、视频流、相机流

参数
recordType录制类型 详细定义见 AliRtcRecordType
recordFormat录制文件格式 详细定义见 AliRtcRecordFormat
filePath文件路径
audioConfig音频设置 详细定义见 AliRtcRecordAudioConfig
videoConfig视频设置 详细定义见 AliRtcRecordVideoConfig
isFragment是否支持mp4内部分段,只在录制mp4时有效
返回
  • YES: 成功
  • NO: 失败
注解
此接口为旧接口,新接口为 startRecord:filePath:recordLayout

◆ updateRecordLayout:

- (BOOL) updateRecordLayout: (AliRtcRecordVideoLayout *_Nonnull)  layout

更新录制内容信息

SDK提供了更新录制内容信息的功能,用于实时更新录制模板内容设置

参数
layout录制视频内容及布局, 详细定义见 AliRtcRecordVideoLayout
返回
  • YES: 成功
  • NO: 失败
注解
updateRecordLayout更新录制内容信息应该在录制过程中调用

◆ addRecordTemplate:

- (BOOL) addRecordTemplate: (AliRtcRecordTemplate *_Nonnull)  recordTemplate

添加录制模板

SDK提供了添加录制模板的功能,用于添加录制模板

参数
recordTemplate录制模板, 详细定义见 AliRtcRecordTemplate
返回
  • YES: 成功
  • NO: 失败
注解
addRecordTemplate添加录制模板必须在StartRecord之前调用

◆ startRecord:recordLayout:

- (BOOL) startRecord: (NSString *_Nonnull)  filePath
recordLayout: (AliRtcRecordVideoLayout *_Nonnull)  recordLayout 

开始录制

SDK提供了屏录录制的功能,可以录制本地或远端的音频流、视频流、相机流,窗口布局设置参考 AliEngineRecordVideoLayout

参数
filePath文件路径
recordLayout视频窗口布局设置, 详细定义见 AliRtcRecordVideoLayout
返回
  • YES: 成功
  • NO: 失败
注解
startRecord之前调用必须先调用addRecordTemplate添加录制模板

◆ pauseRecord

- (BOOL) pauseRecord

暂停录制

SDK提供了暂停录制的功能

返回
  • YES: 成功
  • NO: 失败

◆ resumeRecord

- (BOOL) resumeRecord

重新开启录制

SDK提供了重新开始录制的功能

返回
  • YES: 成功
  • NO: 失败

◆ stopRecord [2/2]

- (void) stopRecord

停止录制

SDK提供了停止录制的功能

◆ setBeautyEffect:config: [2/2]

- (int) setBeautyEffect: (bool)  enable
config: (AliRtcBeautyConfig *_Nonnull)  confg 

开启或关闭美颜功能, 并设置美颜效果参数

参数
enable
  • YES 开启美颜功能
  • NO 关闭美颜功能
confg美颜效果参数, 详细定义见 AliRtcBeautyConfig
返回
  • 0 : 成功
  • < 0 : 失败

◆ snapshotVideo:type: [2/2]

- (int) snapshotVideo: (NSString *_Nullable)  userId
type: (AliRtcVideoTrack trackType 

视频截图功能

参数
userId用户ID,userId 为nil或者为""代表本地用户
trackType视频流类型,只支持 AliRtcVideoTrack::AliRtcVideoTrackCameraAliRtcVideoTrack::AliRtcVideoTrackScreen
返回
注解
视频截图功能为异步接口, 通过监听 videoTrack: image: success: 回调获取当前截图画面。

◆ startLiveStreamingWithAuthInfo:onResult: [2/2]

- (void) startLiveStreamingWithAuthInfo: (AliRtcAuthInfo *_Nonnull)  authInfo
onResult: (void(^)(int errCode))  onResult 

开始低延时互动直播拉流

该方法仅在低延迟互动模式 AliRtcInteractiveWithLowLatencyLive 下,角色为观众 AliRtcClientRolelive 时调用有意义

参数
authInfo入会鉴权信息
onResult拉流结果,errCode
  • 0: 成功
  • <0: 失败
注解
该接口已废弃

◆ stopLiveStreaming [2/2]

- (int) stopLiveStreaming

停止低延时互动直播拉流

返回
  • 0: 成功
  • <0: 失败
注解
该方法仅在低延迟互动模式下,角色为观众时调用有意义
该接口已废弃

◆ setLiveStreamingViewConfig: [2/2]

- (int) setLiveStreamingViewConfig: (AliVideoCanvas *_Nullable)  canvas

设置低延时互动直播拉流渲染Canvas

参数
canvas渲染参数,包含了窗口以及渲染方式
返回
  • 0: 成功
  • <0: 失败
注解
该接口已废弃

◆ setExternalAudioRenderVolume:

- (int) setExternalAudioRenderVolume: (int)  vol

设置音频播放音量

参数
vol音量 0-100

◆ getExternalAudioRenderVolume

- (int) getExternalAudioRenderVolume

获取音频播放音量

返回
vol 音量

◆ sendMediaExtensionMsg:repeatCount: [2/2]

- (int) sendMediaExtensionMsg: (NSData *_Nonnull)  data
repeatCount: (int)  repeatCount 

发送媒体扩展信息

SDK提供了发送和接收媒体扩展信息的功能,接收端参考 AliRtcEngineDelegate::onMediaExtensionMsgReceived:message:,使用场景:

  • 使用媒体扩展信息传递时间戳,计算端到端的网络延迟,或者跟自身其他业务做数据同步
  • 使用媒体扩展信息传递位控制信息。目前可以传递8 Byte数据,即64位,每一位或几位可以表示控制信息,用于自身业务上的指令传输
参数
data扩展信息内容, 长度限制为最大8字节
repeatCount重复次数,代表消息冗余度,用于防止网络丢包导致的消息丢失
返回
  • 0: 成功
  • <0: 失败
    • ERR_INNER(-1): SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
注解
使用媒体扩展信息时需要复用音视频数据通道,因此必须控制自定义消息的发送频率和消息数据长度,使用限制如下:
  • 每秒最多发送30条消息
  • 为了不影响媒体数据的传输质量,自定义消息体长度限制为8 Byte,可以用来传输时间戳,位控制信息等
  • sendMediaExtensionMsg函数中repeatCount参数为自定义消息冗余度,若大于1,则会发送多次,防止网络丢包导致的消息丢失,此时房间里的其他人也会收到多次相同的消息,需要去重
  • 发送的自定义消息,在旁路直播时,房间里的订阅者也一样会收到
  • 目前H5端不支持发送和接收媒体扩展信息

◆ postFeedbackWithUid:channleId:description:type:timeStamp: [2/2]

- (void) postFeedbackWithUid: (NSString *_Nullable)  uid
channleId: (NSString *_Nullable)  channelId
description: (NSString *_Nonnull)  description
type: (AliRtcFeedbackType type
timeStamp: (NSTimeInterval)  timeStamp 

SDK问题反馈

参数
uid问题用户id (允许为nil)
channelId问题频道id (允许为nil)
description问题描述(支持中英文, 必填)
type问题类型,参考 AliRtcFeedbackType
timeStamp问题发生的时间戳 (Unix时间戳,大致时间,无需特别精确,可以为0)
注解
该接口在入会前、会中、离会后均可以调用,推荐会中或者离会前调用,尽可能带上所有参数信息

◆ createChannelWithDelegate:extras: [2/2]

- (AliRtcEngine *_Nullable) createChannelWithDelegate: (id< AliRtcEngineDelegate >_Nonnull)  delegate
extras: (NSString *_Nullable)  extras 

创建子频道

参数
delegatedelegate
extrasextras [可以为空 ""],参考文档:<a href="https://help.aliyun.com/document_detail/200048.html" >extras参数配置说明。
注解
创建的子频道实例,需要通过 destroyChannel 进行释放
返回
成功返回子频道实例,失败返回nil

◆ destroyChannel [2/2]

- (void) destroyChannel

销毁子频道

使用 joinChannel:name:onResultWithUserId: 加入的是主频道,不需要调用destroyChannel销毁

◆ startPublishLiveStreamWithURL:liveTranscoding: [2/2]

- (int) startPublishLiveStreamWithURL: (NSString *_Nonnull)  streamURL
liveTranscoding: (AliRtcLiveTranscodingParam *_Nonnull)  trancoding 

开启旁路直播

SDK提供了开启旁路直播的功能,可以把实时音视频流经过混流、混音处理转为标准直播流并推送至指定CDN供应商

参数
streamURL推流地址
trancoding推流所需参数 详细定义见 AliRtcLiveTranscodingParam
返回
  • 0 : 成功
  • 非0 : 失败
    • ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
    • 其他 : 返回值参考官网错误码

◆ updatePublishLiveStreamWithURL:liveTranscoding: [2/2]

- (int) updatePublishLiveStreamWithURL: (NSString *_Nonnull)  streamURL
liveTranscoding: (AliRtcLiveTranscodingParam *_Nonnull)  trancoding 

更新旁路直播相关参数

SDK提供了更新旁路直播的功能,用于实时更新旁路直播参数

参数
streamURL推流地址
trancoding推流所需参数 详细定义见 AliRtcLiveTranscodingParam
返回
  • 0 : 成功
  • 非0 : 失败
    • ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
    • 其他 : 返回值参考官网错误码

◆ stopPublishLiveStreamWithURL: [2/2]

- (int) stopPublishLiveStreamWithURL: (NSString *_Nonnull)  streamURL

停止旁路直播

SDK提供了停止旁路直播的功能

参数
streamURL推流地址
返回
  • 0 : 成功
  • 非0 : 失败
    • ERR_INNER(-1) : SDK内部错误,可能的情况为SDK未初始化或者SDK销毁后调用
    • 其他 : 返回值参考官网错误码

◆ GetPublishLiveStreamStateWithURL: [2/2]

- (AliRtcLiveTranscodingState) GetPublishLiveStreamStateWithURL: (NSString *_Nonnull)  streamURL

获得旁路直播状态

参数
streamURL推流地址
返回
AliRtcLiveTranscodingState

◆ startChannelRelay: [2/2]

- (int) startChannelRelay: (AliRtcChannelRelayConfiguration *_Nonnull)  configuration

开启跨频道转推

普通情况下,一个主播只可以在一个频道内推拉流,该接口可以实现跨频道能力,支持主播(在A频道)将A频道的流推送到B频道,B频道相当于一个新主播入会并推流,对应的入会和推流回调依然会回调,与主播直接加入B频道行为一致。

如果两个频道内的两个主播互相向对应的频道进行跨频道转推,就可以实现主播间的跨频道连麦,典型场景如:两个直播间的主播PK功能。如下图示例:

                 channel-A                     channel-B
              ---------------                ---------------
 跨频道转发前: |  主播 A       |              |  主播 B        |
             |  观众 U1 U2   |              |  观众 U3 U4    |
              ---------------                ---------------

                 channel-A                     channel-B
              ---------------                ---------------
 跨频道转发后: |  主播 A B     |              |  主播 B A      |
             |  观众 U1 U2   |              |  观众 U3 U4    |
              ---------------                ---------------
参数
configuration频道配置信息 AliRtcChannelRelayConfiguration
返回
  • 0: 成功
  • <0: 失败
注解
发起跨频道转推需要满足三个条件
  • 会议模式为互动模式或者低延迟互动模式
  • 必须是主播角色
  • 必须在会议中

◆ updateChannelRelay: [2/2]

- (int) updateChannelRelay: (AliRtcChannelRelayConfiguration *_Nonnull)  configuration

更新跨频道转推

参数
configuration频道配置信息 AliRtcChannelRelayConfiguration
返回
  • 0: 成功
  • <0: 失败

◆ stopChannelRelay [2/2]

- (int) stopChannelRelay

停止跨频道转推

返回
  • 0: 成功
  • <0: 失败

◆ setPublishVideoStreamAttribute:attr: [2/2]

- (void) setPublishVideoStreamAttribute: (AliRtcVideoTrack track
attr: (NSString *_Nullable)  attr 

设置视频流属性

参数
track视频流类型,详细见 AliRtcVideoTrack
attr视频流属性
注解
已废弃使用。

◆ enableEncryption: [2/2]

- (int) enableEncryption: (BOOL)  enable

开启/关闭内置加解密功能:需要在入会前调用

参数
enable是否开启
返回
  • 0 : 成功
  • 非0 : 失败

◆ enableBackgroundExchange:imagePath:scalMode: [2/2]

- (int) enableBackgroundExchange: (BOOL)  enable
imagePath: (NSString *_Nonnull)  path
scalMode: (AliRtcBokehScaleModel model 

开启/关闭虚拟背景替换功能

需要集成虚拟背景插件,虚拟背景简介及下载详见官网组件文档

参数
enable是否开启;
path虚拟背景本地图片路径,支持JPG,PNG 格式;
model背景图缩放模式,裁剪或缩放;
  • AliRtcBokehScaleModelCrop: 等比裁剪,当背景图像宽高比和视频数据宽高比不一致时, 为了保持等比例缩放, 会将背景图像裁剪到视频比例, 超出部分背景图片内容将会丢失;
  • AliRtcBokehScaleModelFill: 填充黑边,当背景图像宽高比和视频数据宽高比不一致时, 为了保持等比例缩放, 会对背景进行黑边填充,背景图片内容会全部保留;
返回
  • 0: 成功
  • < 0: 失败 详见 AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:未进行官网组件集成,详见虚拟背景集成文档
    • AliRtcPluginErrorInitError: 参数错误,请检查图片路径地址;
注解
  • 支持平台详见官网发布日志
  • 可重复调用,背景图及缩放模式与之前设置不一致,会进行实时更新;
  • 与背景虚化为替换关系,如开启虚拟背景开关后再次开启背景虚化,则只有背景虚化效果;

◆ enableBackgroundBlur:blurDegree: [2/2]

- (int) enableBackgroundBlur: (BOOL)  enable
blurDegree: (uint32_t)  blurDegree 

开启/关闭虚拟背景虚化功能

需要集成虚拟背景插件,虚拟背景简介及下载详见官网组件文档 ; 需要下载及集成虚拟背景插件,背景替换与背景虚化不可同时使用,如开启虚拟背景开关后再次开启背景虚化,则只有背景虚化效果;

参数
enable是否开启;
blurDegree虚化程度 取值范围 [0-100];
返回
  • 0: 成功
  • < 0: 失败 详见 AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:未进行官网组件集成,详见虚拟背景集成文档
    • AliRtcPluginErrorInitError: 参数错误,请检查虚化程度取值;
注解
  • 支持平台详见官网发布日志
  • 虚化程度范围 [0-100];
  • 可重复调用,虚化值如果与之前设置不一致,会进行实时更新;
  • 与虚拟背景为替换关系,如开启背景虚化开关后再次开启虚拟背景,则只有虚拟背景效果;

◆ enablePlugin:pluginName:pluginType:opType:option: [1/2]

- (int) enablePlugin: (NSString *_Nullable)  moduleName
pluginName: (NSString *_Nullable)  pluginName
pluginType: (int)  pluginType
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

开启音视频处理算法插件

RTC采用插件件形式提供音视频增强及特效能力,可通过官网组件文档 进行组件下载,参考插件集成文档集成进RTC引擎;

参数
moduleName插件库包名,组件文档中会有对应描述,包名中不包含插件后缀名如:iOS/Mac平台使用虚拟背景插件bokeh.framework,则包名为bokeh,Windows平台插件库名为:bokeh.dll,则moduleName 为bokeh;
pluginName插件类名,根据下载的插件库中头文件中描述进行设置 如:虚拟背景插件头文件中描述了 pluginName 为 PluginBokeh;
pluginType插件类型,值为AliRtcPluginDataType 与AliRtcPluginOperationType组合, 如:视频前处理插件 pluginType = (AliRtcPluginDataTypeVideo << 16)|AliRtcPluginPreOperation; 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;
opType插件初始化参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option插件初始化参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • >0: 返回注册的插件ID,插件移除及插件设置和插件信息获取需要使用此返回值;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:插件库库加载失败,插件库未添加到工程中,可参考官网组件文档 按照集成文档进行集成;
    • AliRtcPluginErrorInitError: 插件初始化失败,插件类型,参数类型或参数为非法值,可参考插件集成文档检查pluginType,opType,option初始值是否符合要求;
注解
  • 入会前入会后均可调用;
  • 如果重复调用会返回之前已经注册插件ID;
  • 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;

由 category AliRtcEngine(Plugin) 提供.

◆ enablePlugin:pluginName:pluginType:opType:option: [2/2]

- (int) enablePlugin: (NSString *_Nullable)  moduleName
pluginName: (NSString *_Nullable)  pluginName
pluginType: (int)  pluginType
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

开启音视频处理算法插件

RTC采用插件件形式提供音视频增强及特效能力,可通过官网组件文档 进行组件下载,参考插件集成文档集成进RTC引擎;

参数
moduleName插件库包名,组件文档中会有对应描述,包名中不包含插件后缀名如:iOS/Mac平台使用虚拟背景插件bokeh.framework,则包名为bokeh,Windows平台插件库名为:bokeh.dll,则moduleName 为bokeh;
pluginName插件类名,根据下载的插件库中头文件中描述进行设置 如:虚拟背景插件头文件中描述了 pluginName 为 PluginBokeh;
pluginType插件类型,值为AliRtcPluginDataType 与AliRtcPluginOperationType组合, 如:视频前处理插件 pluginType = (AliRtcPluginDataTypeVideo << 16)|AliRtcPluginPreOperation; 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;
opType插件初始化参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option插件初始化参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • >0: 返回注册的插件ID,插件移除及插件设置和插件信息获取需要使用此返回值;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorLoadError:插件库库加载失败,插件库未添加到工程中,可参考官网组件文档 按照集成文档进行集成;
    • AliRtcPluginErrorInitError: 插件初始化失败,插件类型,参数类型或参数为非法值,可参考插件集成文档检查pluginType,opType,option初始值是否符合要求;
注解
  • 入会前入会后均可调用;
  • 如果重复调用会返回之前已经注册插件ID;
  • 如果需要修改已开启插件的pluginType,需要先进行插件关闭,再次开启;

由 category AliRtcEngine(Plugin) 提供.

◆ removePlugin: [1/2]

- (int) removePlugin: (uint32_t)  pluginId

关闭音视频处理算法插件

参数
pluginId开启音视频处理算法插件接口调用成功后返回值;
返回
  • >0: 返回删除插件ID 即pluginId;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin:pluginId为非法值或重复调用关闭接口,请检查pluginId值是否为开启插件接口调用成功后返回值;
注解
  • 入会前入会后均可调用;
  • 重复调用返回 AliRtcPluginErrorNoFindPlugin 错误码;

由 category AliRtcEngine(Plugin) 提供.

◆ removePlugin: [2/2]

- (int) removePlugin: (uint32_t)  pluginId

关闭音视频处理算法插件

参数
pluginId开启音视频处理算法插件接口调用成功后返回值;
返回
  • >0: 返回删除插件ID 即pluginId;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin:pluginId为非法值或重复调用关闭接口,请检查pluginId值是否为开启插件接口调用成功后返回值;
注解
  • 入会前入会后均可调用;
  • 重复调用返回 AliRtcPluginErrorNoFindPlugin 错误码;

由 category AliRtcEngine(Plugin) 提供.

◆ setPluginOption:opType:option: [1/2]

- (int) setPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

根据插件ID设置插件

参数
pluginId插件开启接口调用成功后返回值;
opType设置插件参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option设置插件参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • 0: 参数设置成功;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • opType及option 取值及范围要准守已开启插件头文件接口描述;

由 category AliRtcEngine(Plugin) 提供.

◆ setPluginOption:opType:option: [2/2]

- (int) setPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (const void *_Nullable)  option 

根据插件ID设置插件

参数
pluginId插件开启接口调用成功后返回值;
opType设置插件参数类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option设置插件参数值,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
返回
  • 0: 参数设置成功;
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • opType及option 取值及范围要准守已开启插件头文件接口描述;

由 category AliRtcEngine(Plugin) 提供.

◆ getPluginOption:opType:option: [1/2]

- (int) getPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (void *_Nonnull)  option 

根据插件ID获取插件内部信息

参数
pluginId开启插件接口调用成功后返回值;
opType获取信息类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option返回的信息写入地址,插件会根据opType类型将返回的信息重写入option,需要进行内存初始化,长度请参考接入文档及插件头文件描述;
返回
  • 0: 参数设置成功
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考插件接入文档及头文件中获取插件信息接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
  • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;

由 category AliRtcEngine(Plugin) 提供.

◆ getPluginOption:opType:option: [2/2]

- (int) getPluginOption: (uint32_t)  pluginId
opType: (uint32_t)  opType
option: (void *_Nonnull)  option 

根据插件ID获取插件内部信息

参数
pluginId开启插件接口调用成功后返回值;
opType获取信息类型,请阅读插件库接入文档,参考各个插件头文件中描述进行设置;
option返回的信息写入地址,插件会根据opType类型将返回的信息重写入option,需要进行内存初始化,长度请参考接入文档及插件头文件描述;
返回
  • 0: 参数设置成功
  • 非0: 详见AliRtcPluginErrorCode
    • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
    • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考插件接入文档及头文件中获取插件信息接口描述进行设置;
注解
  • 入会前入会后均可调用;
  • AliRtcPluginErrorNoFindPlugin: 未找到对应插件,pluginId 为非法值,请检查pluginId值是否为开启插件接口调用成功后返回值;
  • AliRtcPluginErrorCodeFailed:opType或option为非法值,请阅读插件库接入文档,参考各个插件头文件中设置接口描述进行设置;

由 category AliRtcEngine(Plugin) 提供.