继承自 IRtcEngineNative .

Public 成员函数

int SetChannelProfile (CHANNEL_PROFILE profile)
 
int SetClientRole (CLIENT_ROLE_TYPE role)
 
int SetLogFilter (LOG_FILTER filter)
 
int SetLogFile (string filePath)
 
int JoinChannel (string channelName, string info, uint uid)
 
int JoinChannelByKey (string channelKey, string channelName, string info, uint uid)
 
int RenewToken (string token)
 
int LeaveChannel ()
 
int SetParameters (string parameters)
 
string GetCallId ()
 
int Rate (string callId, int rating, string desc)
 
int Complain (string callId, string desc)
 
int EnableAudio ()
 
int DisableAudio ()
 
int MuteLocalAudioStream (bool mute)
 
int MuteAllRemoteAudioStreams (bool mute)
 
int MuteRemoteAudioStream (uint uid, bool mute)
 
int SetEnableSpeakerphone (bool speakerphone)
 
int SetDefaultAudioRouteToSpeakerphone (bool speakerphone)
 
bool IsSpeakerphoneEnabled ()
 
int SwitchCamera ()
 
int SetVideoProfile (VIDEO_PROFILE_TYPE profile, bool swapWidthAndHeight)
 
int MuteLocalVideoStream (bool mute)
 
int MuteAllRemoteVideoStreams (bool mute)
 
int MuteRemoteVideoStream (uint uid, bool mute)
 
int EnableDualStreamMode (bool enabled)
 
int SetEncryptionMode (string encryptionMode)
 
int SetEncryptionSecret (string secret)
 
int CreateDataStream (bool reliable, bool ordered)
 
int SendStreamMessage (int streamId, string data)
 
int SetSpeakerphoneVolume (int volume)
 
int SetVideoQualityParameters (bool preferFrameRateOverImageQuality)
 
int StartEchoTest ()
 
int StartEchoTest (int intervalInSeconds)
 
int StopEchoTest ()
 
int StartLastmileProbeTest (LastmileProbeConfig lastmileProbeConfig)
 
int StopLastmileProbeTest ()
 
int AddVideoWatermark (RtcImage rtcImage)
 
int AddVideoWatermark (string watermarkUrl, WatermarkOptions watermarkOptions)
 
int ClearVideoWatermarks ()
 
int SetRemoteVideoStreamType (uint uid, REMOTE_VIDEO_STREAM_TYPE streamType)
 
int SetMixedAudioFrameParameters (int sampleRate, int samplesPerCall)
 
int SetAudioMixingPosition (int pos)
 
int EnableAudioVolumeIndication (int interval, int smooth, bool report_vad)
 
int AdjustRecordingSignalVolume (int volume)
 
int AdjustPlaybackSignalVolume (int volume)
 
int StartAudioMixing (string filePath, bool loopback, bool replace, int cycle)
 
int StopAudioMixing ()
 
int PauseAudioMixing ()
 
int ResumeAudioMixing ()
 
int AdjustAudioMixingVolume (int volume)
 
int GetAudioMixingDuration ()
 
int GetAudioMixingCurrentPosition ()
 
int StartAudioRecording (string filePath, AUDIO_RECORDING_QUALITY_TYPE quality)
 
int StartAudioRecording (string filePath, int sampleRate, AUDIO_RECORDING_QUALITY_TYPE quality)
 
int StopAudioRecording ()
 
IAudioEffectManager GetAudioEffectManager ()
 
IAudioRecordingDeviceManager GetAudioRecordingDeviceManager ()
 
IAudioPlaybackDeviceManager GetAudioPlaybackDeviceManager ()
 
IVideoDeviceManager GetVideoDeviceManager ()
 
IAudioRawDataManager GetAudioRawDataManager ()
 
IVideoRawDataManager GetVideoRawDataManager ()
 
int EnableVideo ()
 
int DisableVideo ()
 
int EnableLocalVideo (bool enabled)
 
int EnableLocalAudio (bool enabled)
 
int StartPreview ()
 
int StopPreview ()
 
int EnableVideoObserver ()
 
int DisableVideoObserver ()
 
int SetDefaultMuteAllRemoteAudioStreams (bool mute)
 
int SetDefaultMuteAllRemoteVideoStreams (bool mute)
 
int EnableLastmileTest ()
 
int DisableLastmileTest ()
 
CONNECTION_STATE_TYPE GetConnectionState ()
 
int SetAudioProfile (AUDIO_PROFILE_TYPE audioProfile, AUDIO_SCENARIO_TYPE scenario)
 
int SetVideoEncoderConfiguration (VideoEncoderConfiguration configuration)
 
int AdjustAudioMixingPlayoutVolume (int volume)
 
int AdjustAudioMixingPublishVolume (int volume)
 
int SetVolumeOfEffect (int soundId, int volume)
 
int SetRecordingAudioFrameParameters (int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall)
 
int SetPlaybackAudioFrameParameters (int sampleRate, int channel, RAW_AUDIO_FRAME_OP_MODE_TYPE mode, int samplesPerCall)
 
int SetLocalPublishFallbackOption (STREAM_FALLBACK_OPTIONS option)
 
int SetRemoteSubscribeFallbackOption (STREAM_FALLBACK_OPTIONS option)
 
int SetRemoteDefaultVideoStreamType (REMOTE_VIDEO_STREAM_TYPE remoteVideoStreamType)
 
int AddPublishStreamUrl (string url, bool transcodingEnabled)
 
int RemovePublishStreamUrl (string url)
 
int EnableWebSdkInteroperability (bool enabled)
 
int SetLiveTranscoding (LiveTranscoding transcoding)
 
int PushVideoFrame (ExternalVideoFrame externalVideoFrame)
 
int SetExternalVideoSource (bool enable, bool useTexture)
 
int SetExternalAudioSource (bool enabled, int sampleRate, int channels)
 
int PushAudioFrame (AudioFrame audioFrame)
 
int GetAudioMixingPlayoutVolume ()
 
int GetAudioMixingPublishVolume ()
 
int EnableSoundPositionIndication (bool enabled)
 
int SetLocalVoiceChanger (VOICE_CHANGER_PRESET voiceChanger)
 
int SetLocalVoiceReverbPreset (AUDIO_REVERB_PRESET audioReverbPreset)
 
int SetLocalVoicePitch (double pitch)
 
int SetLocalVoiceEqualization (AUDIO_EQUALIZATION_BAND_FREQUENCY bandFrequency, int bandGain)
 
int SetLocalVoiceReverb (AUDIO_REVERB_TYPE reverbKey, int value)
 
int SetCameraCapturerConfiguration (CameraCapturerConfiguration cameraCaptureConfiguration)
 
int SetRemoteUserPriority (uint uid, PRIORITY_TYPE userPriority)
 
int SetLogFileSize (uint fileSizeInKBytes)
 
int SetExternalAudioSink (bool enabled, int sampleRate, int channels)
 
int RegisterLocalUserAccount (string appId, string userAccount)
 
int JoinChannelWithUserAccount (string token, string channelId, string userAccount)
 
UserInfo GetUserInfoByUserAccount (string account)
 
UserInfo GetUserInfoByUid (uint uid)
 
int SetBeautyEffectOptions (bool enabled, BeautyOptions beautyOptions)
 
int StartScreenCaptureByDisplayId (uint displayId, Rectangle rectangle, ScreenCaptureParameters screenCaptureParameters)
 
int StartScreenCaptureByScreenRect (Rectangle screenRectangle, Rectangle regionRectangle, ScreenCaptureParameters screenCaptureParameters)
 
int SetScreenCaptureContentHint (VideoContentHint videoContentHint)
 
int UpdateScreenCaptureParameters (ScreenCaptureParameters screenCaptureParameters)
 
int UpdateScreenCaptureRegion (Rectangle rectangle)
 
int StopScreenCapture ()
 
int AddInjectStreamUrl (string url, InjectStreamConfig streamConfig)
 
int RemoveInjectStreamUrl (string url)
 
int EnableLoopbackRecording (bool enabled, string deviceName)
 
int SetAudioSessionOperationRestriction (AUDIO_SESSION_OPERATION_RESTRICTION restriction)
 
int StartChannelMediaRelay (ChannelMediaRelayConfiguration mediaRelayConfiguration)
 
int UpdateChannelMediaRelay (ChannelMediaRelayConfiguration mediaRelayConfiguration)
 
int StopChannelMediaRelay ()
 
int SwitchChannel (string token, string channelId)
 
int SetMultiChannelWant (bool multiChannelWant)
 
int SetMirrorApplied (bool wheatherApply)
 
int SetInEarMonitoringVolume (int volume)
 
int StartScreenCaptureByWindowId (int windowId, Rectangle regionRect, ScreenCaptureParameters screenCaptureParameters)
 
int EnableInEarMonitoring (bool enabled)
 
int AdjustUserPlaybackSignalVolume (uint uid, int volume)
 
AgoraChannel CreateChannel (string channelId)
 
int EnableFaceDetection (bool enable)
 
int SetAudioMixingPitch (int pitch)
 

静态 Public 成员函数

static string GetSdkVersion ()
 
static string GetErrorDescription (int code)
 
static IRtcEngine GetEngine (string appId)
 
static IRtcEngine GetEngine (RtcEngineConfig engineConfig)
 
static IRtcEngine getEngine (string appId)
 
static void Destroy ()
 

详细描述

IRtcEngine 类提供了供 app 调用的主要接口方法。

成员函数说明

◆ GetSdkVersion()

static string agora_gaming_rtc.IRtcEngine.GetSdkVersion ( )
static

查询 SDK 版本号。

返回
当前的 SDK 版本号,格式为字符串,如 2.9.1。

◆ SetChannelProfile()

int agora_gaming_rtc.IRtcEngine.SetChannelProfile ( CHANNEL_PROFILE  profile)

设置频道场景。

该方法用于设置频道场景(Profile)。Agora IRtcEngine 需知道 app 的使用场景(例如通信场景或直播场景), 从而使用不同的优化手段。

注解
  • 相同频道内的所有用户必须使用相同的频道场景。
  • 如果想要切换场景,则需要先调用 Destroy 销毁当前引擎,然后重新调用 GetEngine 初始化引擎后再调用该方法切换频道场景。
  • 该方法必须在 JoinChannelByKey 前调用和进行设置,进入频道后无法再设置。
  • Agora SDK 不支持 texture 编码,只支持原始音视频数据。
参数
profile频道属性: CHANNEL_PROFILE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetClientRole()

int agora_gaming_rtc.IRtcEngine.SetClientRole ( CLIENT_ROLE_TYPE  role)

设置直播场景下的用户角色。

在加入频道前,用户需要通过本方法设置观众(默认)或主播场景。在加入频道后,用户可以通过本方法切换用户场景。

直播场景下,如果你在加入频道后调用该方法切换用户角色,调用成功后,本地会触发 OnClientRoleChangedHandler 回调;远端会触发 OnUserJoinedHandler 回调或 OnUserOfflineHandler (BECOME_AUDIENCE) 回调。

注解
该方法仅适用于直播场景。
参数
role直播场景里的用户角色: CLIENT_ROLE_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLogFilter()

int agora_gaming_rtc.IRtcEngine.SetLogFilter ( LOG_FILTER  filter)

设置日志输出等级。

设置 Agora RTC SDK 的输出日志输出等级。不同的输出等级可以单独或组合使用。日志级别顺序依次为 OFF、CRITICAL、ERROR、WARNING、INFO 和 DEBUG。选择一个级别,你就可以看到在该级别之前所有级别的日志信息。

例如,你选择 WARNING 级别,就可以看到在 CRITICAL、ERROR 和 WARNING 级别上的所有日志信息。

参数
filter设置过滤等级: LOG_FILTER.
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLogFile()

int agora_gaming_rtc.IRtcEngine.SetLogFile ( string  filePath)

设置日志文件。

设置 SDK 的输出 log 文件。SDK 运行时产生的所有 log 将写入该文件。 app 必须保证指定的目录存在而且可写。

注解
如需调用本方法,请在调用 GetEngine 方法初始化 IRtcEngine 对象后立即调用,否则可能造成输出日志不完整。
参数
filePath日志文件的完整路径。该日志文件为 UTF-8 编码。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ JoinChannel()

int agora_gaming_rtc.IRtcEngine.JoinChannel ( string  channelName,
string  info,
uint  uid 
)

加入频道。

该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 LeaveChannel 退出当前通话,才能进入下一个频道。

成功调用该方加入频道后,本地会触发 OnJoinChannelSuccessHandler 回调;通信场景下的用户和直播场景下的主播加入频道后,远端会触发 OnUserJoinedHandler 回调。 在网络状况不理想的情况下,客户端可能会与 Agora 的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 OnReJoinChannelSuccessHandler 回调。

注解
频道内每个用户的用户 ID 必须是唯一的。如果将 uid 设为 0,系统将自动分配一个 uid。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 uid 是不同的。
警告
请务必确保用于生成 Token 的 App ID 和 agora_gaming_rtc.IRtcEngine.LeaveChannel LeaveChannel} 方法初始化引擎时用的是同一个 App ID,否则会造成旁路推流失败。
参数
channelName标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a~z;
  • 26 个大写英文字母 A~Z;
  • 10个数字 0~9;
  • 空格;
  • "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、" {"、"}"、"|"、"~"、","。
info(非必选项) 开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
uid(非必选项) 用户ID,32位无符号整数。建议设置范围:1到 232-1,并保证唯一性。如果不指定(即设为0),SDK 会自动分配一个,并在 OnJoinChannelSuccessHandler 回调中返回,app 层必须记住该返回值并维护,SDK不对该返回值进行维护。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_INVALID_ARGUMENT(-2)
    • ERR_NOT_READY(-3)
    • ERR_REFUSED(-5)

◆ JoinChannelByKey()

int agora_gaming_rtc.IRtcEngine.JoinChannelByKey ( string  channelKey,
string  channelName,
string  info,
uint  uid 
)

使用 Token 加入频道。

该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 LeaveChannel 退出当前通话,才能进入下一个频道。

成功调用该方加入频道后,本地会触发 OnJoinChannelSuccessHandler 回调;通信场景下的用户和直播场景下的主播加入频道后,远端会触发 OnUserJoinedHandler 回调。 在网络状况不理想的情况下,客户端可能会与 Agora 的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 OnReJoinChannelSuccessHandler 回调。

注解
频道内每个用户的用户 ID 必须是唯一的。如果将 uid 设为 0,系统将自动分配一个 uid。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 uid 是不同的。
警告
请务必确保用于生成 Token 的 App ID 和 agora_gaming_rtc.IRtcEngine.LeaveChannel LeaveChannel} 方法初始化引擎时用的是同一个 App ID,否则会造成旁路推流失败。
参数
channelKey动态秘钥。
  • 安全要求不高: 将值设为 NULL。
  • 安全要求高: 将值设置为 Token。如果你已经启用了 App Certificate, 请务必使用 Token。
channelName标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a~z;
  • 26 个大写英文字母 A~Z;
  • 10个数字 0~9;
  • 空格;
  • "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、" {"、"}"、"|"、"~"、","。
info(非必选项) 开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
uid(非必选项) 用户ID,32位无符号整数。建议设置范围:1到 232-1,并保证唯一性。如果不指定(即设为0),SDK 会自动分配一个,并在 OnJoinChannelSuccessHandler 回调中返回,app 层必须记住该返回值并维护,SDK不对该返回值进行维护。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_INVALID_ARGUMENT(-2)
    • ERR_NOT_READY(-3)
    • ERR_REFUSED(-5)

◆ RenewToken()

int agora_gaming_rtc.IRtcEngine.RenewToken ( string  token)

更新 Token。

该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。当:

app 应重新获取 Token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。

参数
token新的 Token。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ LeaveChannel()

int agora_gaming_rtc.IRtcEngine.LeaveChannel ( )

离开频道。

离开频道,即挂断或退出通话。

加入频道后,必须调用 LeaveChannel 结束通话,否则无法开始下一次通话。 不管当前是否在通话中,都可以调用 LeaveChannel,没有副作用。该方法会把会话相关的所有资源释放掉。

该方法是异步操作,调用返回时并没有真正退出频道。在真正退出频道后,SDK 会触发 OnLeaveChannelHandler 回调。

成功调用该方法离开频道后,本地会触发 OnLeaveChannelHandler 回调;通信场景下的用户和直播场景下的主播离开频道后,远端会触发 OnUserOfflineHandler 回调。

注解
  • 如果你调用了 LeaveChannel 后立即调用 Destroy,SDK 将无法触发 OnLeaveChannelHandler 回调。
  • 如果你在旁路推流时调用 LeaveChannel 方法, SDK 将自动调用 RemovePublishStreamUrl 方法。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetParameters()

int agora_gaming_rtc.IRtcEngine.SetParameters ( string  parameters)

通过 JSON 配置 SDK 提供技术预览或特别定制功能。

参数
parametersJSON 格式的字符串。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetCallId()

string agora_gaming_rtc.IRtcEngine.GetCallId ( )

获取当前通话 ID。

客户端在每次加入频道后会生成一个对应的 callId,标识该客户端的此次通话。有些方法如 RateComplain,需要在通话结束后调用,向 SDK 提交反馈,这些方法必须指定 callId 参数。使用这些反馈方法,需要在通话过程中调用 GetCallId 方法获取 callId,在通话结束后在反馈方法中作为参数传入。

返回
  • ≥ 0: 方法调用成功则返回当前的通话 ID。
  • < 0: 方法调用失败。

◆ Rate()

int agora_gaming_rtc.IRtcEngine.Rate ( string  callId,
int  rating,
string  desc 
)

给通话评分。

参数
callId通话 GetCallId 函数获取的通话 ID。
rating给通话的评分,最低 1 分,最高 5 分。如超过这个范围,SDK 会返回 ERR_INVALID_ARGUMENT(2) 错误。
desc(非必选项) 给通话的描述,可选,长度应小于 800 字节。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ Complain()

int agora_gaming_rtc.IRtcEngine.Complain ( string  callId,
string  desc 
)

投诉通话质量。

参数
callId通话 GetCallId 函数获取的通话 ID。
desc(非必选项) 给通话的描述,可选,长度应小于 800 字节。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableAudio()

int agora_gaming_rtc.IRtcEngine.EnableAudio ( )

启用音频模块。

启用音频模块(默认为开启状态)。

注解
  • 该方法设置内部引擎为启用状态,在频道内和频道外均可调用。在 LeaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应时间较慢,因此声网建议使用如下方法来控制音频模块:
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ DisableAudio()

int agora_gaming_rtc.IRtcEngine.DisableAudio ( )

关闭音频模块。

注解
  • 该方法设置内部引擎为禁用状态,在频道内和频道外均可调用。在 LeaveChannel 后仍然有效。
  • 该方法重置整个引擎,响应时间较慢,因此声网建议使用如下方法来控制音频模块:
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ MuteLocalAudioStream()

int agora_gaming_rtc.IRtcEngine.MuteLocalAudioStream ( bool  mute)

开关本地音频发送。

该方法用于允许/禁止往网络发送本地音频流。 成功调用该方法后,远端会触发 OnUserMutedAudioHandler 回调。

注解
  • 该方法不影响录音状态,因为并没有禁用录音设备。
  • 如果你在该方法后调用 SetChannelProfile 方法,SDK 会根据你设置的频道场景以及用户角色,重新设置是否停止发送本地音频。因此我们建议在 SetChannelProfile 后调用该方法。
参数
mute设置是否发送本地音频流。
  • true: 停止发送本地音频流;
  • false: 继续发送本地音频流(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ MuteAllRemoteAudioStreams()

int agora_gaming_rtc.IRtcEngine.MuteAllRemoteAudioStreams ( bool  mute)

接收/停止接收所有音频流。

参数
mute设置是否接收所有远端用户的音频流。
  • true: 停止接收所有音频流;
  • false: (默认)继续接收所有音频流。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ MuteRemoteAudioStream()

int agora_gaming_rtc.IRtcEngine.MuteRemoteAudioStream ( uint  uid,
bool  mute 
)

接收/停止接收指定音频流。

注解
  • 如果之前有调用过 MuteAllRemoteAudioStreams(true) 停止订阅所有远端音频,在调用本 API 之前请确保你已调用 MuteAllRemoteAudioStreams(false)
  • MuteAllRemoteAudioStreams 是全局控制,MuteRemoteAudioStream 是精细控制。
参数
uid指定用户的 ID。
mute设置是否接收指定音频流。
  • true: 停止接收指定音频流。
  • false: (默认)继续接收指定音频流。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetEnableSpeakerphone()

int agora_gaming_rtc.IRtcEngine.SetEnableSpeakerphone ( bool  speakerphone)

启用/关闭扬声器播放。

该方法设置是否将语音路由设到扬声器(外放)。 你可以在 SetDefaultAudioRouteToSpeakerphone 方法中查看默认的语音路由。

在 Android 上,SetAudioProfilescenarioSetChannelProfile 的设置 会影响 setEnableSpeakerphone 的行为。setEnableSpeakerphone 不生效的情况如下:

  • scenarioAUDIO_SCENARIO_GAME_STREAMING 时,所有用户都无法切换音频播放路由。
  • scenarioAUDIO_SCENARIO_DEFAULTAUDIO_SCENARIO_SHOWROOM 时,直播场景中的观众无法切换音频播放路由,且当频道中只有一个主播时,该主播也无法切换音频播放路由。
  • scenarioAUDIO_SCENARIO_EDUCATION 时,直播场景中的观众无法切换音频播放路由。
注解
  • 该方法仅适用于 Android 和 iOS 平台。
  • 请确保在调用此方法前已调用过 JoinChannelByKey 方法。
  • 调用该方法后,SDK 将返回 OnAudioRouteChangedHandler 回调提示状态已更改。
参数
speakerphone设置是否切换语音路由到扬声器(外放):
  • true: 切换到外放。如果设备连接了耳机或蓝牙,则无法切换到外放。
  • false: 切换到听筒。如果设备连接了耳机,则语音路由走耳机。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetDefaultAudioRouteToSpeakerphone()

int agora_gaming_rtc.IRtcEngine.SetDefaultAudioRouteToSpeakerphone ( bool  speakerphone)

设置默认的语音路由

该方法设置接收到的语音从听筒或扬声器出声。如果用户不调用本方法,语音默认从听筒出声。

各频道场景下默认的语音路由:

注解
  • 该方法仅适用于 Android 和 iOS 平台。
  • 该方法只在纯音频场景下工作,在有视频的场景下不工作。
  • 该方法需要在 JoinChannelByKey 前设置,否则不生效。如需在加入频道后更改默认语音路由,请调用 SetEnableSpeakerphone 方法。
参数
speakerphone设置默认的语音路由。
  • true: 设置默认的语音路由。
  • false: (默认)从听筒出声。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ IsSpeakerphoneEnabled()

bool agora_gaming_rtc.IRtcEngine.IsSpeakerphoneEnabled ( )

查询扬声器启用状态。

注解
该方法仅适用于 Android 和 iOS 平台。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SwitchCamera()

int agora_gaming_rtc.IRtcEngine.SwitchCamera ( )

切换前置/后置摄像头

注解
该方法仅适用于 Android 和 iOS 平台。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetVideoProfile()

int agora_gaming_rtc.IRtcEngine.SetVideoProfile ( VIDEO_PROFILE_TYPE  profile,
bool  swapWidthAndHeight 
)

设置视频编码配置。

弃用:
该方法自 v2.3 起废弃。请改用 SetVideoEncoderConfiguration 方法。

该方法设置视频编码属性(Profile)。每个属性对应一套视频参数,如分辨率、帧率、码率等。 当设备的摄像头不支持指定的分辨率时,Agora SDK 会自动选择一个合适的摄像头分辨率,但是编码分辨率仍然用 setVideoProfile 指定的。

注解
  • 如果用户加入频道后不需要重新设置视频编码属性,则 声网建议在 EnableVideo 前调用该方法,可以加快首帧出图的时间。 -应在调用 JoinChannelByKeyStartPreview 前设置视频属性。
  • 你可以直接通过视频属性 (profile) 来定义输出的视频是 Landscape(横屏)还是 Portrait(竖屏)模式,因此,声网建议你将参数 swapWidthAndHeight 设置为默认值 false
参数
profile视频属性。详见: VIDEO_PROFILE_TYPE.
swapWidthAndHeightSDK 会按照你选择的视频属性 (profile) 输出固定宽高的视频。该参数设置是否交换宽和高:
  • true: 交换宽和高。
  • false: 不交换宽和高(默认)
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ MuteLocalVideoStream()

int agora_gaming_rtc.IRtcEngine.MuteLocalVideoStream ( bool  mute)

开关本地视频发送。

成功调用该方法后,远端会触发 OnUserMuteVideoHandler 回调。

注解
  • 调用该方法时,SDK 不再发送本地视频流,但摄像头仍然处于工作状态。相比于 EnableLocalVideo (false) 用于控制本地视频流发送的方法,该方法响应速度更快。该方法不影响本地视频流获取,没有禁用摄像头。
  • 如果你在该方法后调用 SetChannelProfile 方法,SDK 会根据你设置的频道模式以及用户角色,重新设置是否停止发送本地视频。因此我们建议在 SetChannelProfile 后调用该方法。
参数
mute设置是否发送本地视频流。
  • true: 不发送本地视频流。
  • false: 发送本地视频流(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ MuteAllRemoteVideoStreams()

int agora_gaming_rtc.IRtcEngine.MuteAllRemoteVideoStreams ( bool  mute)

接收/停止接收所有远端视频流。

参数
mute设置是否停止接收所有远端视频流。
  • true: 停止接收所有远端视频流;
  • false: (默认)允许接收所有远端视频流。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ MuteRemoteVideoStream()

int agora_gaming_rtc.IRtcEngine.MuteRemoteVideoStream ( uint  uid,
bool  mute 
)

接收/停止接收指定远端用户的视频流。

注解
如果之前调用过 MuteAllRemoteVideoStreams(true) 停止接收放所有远端视频流,在调用本 API 之前请确保你已调用 MuteAllRemoteVideoStreams(false)MuteAllRemoteVideoStreams 是全局控制,MuteRemoteVideoStream 是精细控制。
参数
uid指定用户的用户 ID。
mute设置是否停止接收指定远端用户的视频流。
  • true: 停止接收指定远端用户的视频流;
  • false: 允许接收指定远端用户的视频流(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableDualStreamMode()

int agora_gaming_rtc.IRtcEngine.EnableDualStreamMode ( bool  enabled)

开关双流模式。

该方法设置单流(默认)或者双流模式。发送端开启双流模式后,接收端可以选择接收大流还是小流。其中,大流指高分辨率、高码率的视频流,小流指低分辨率、低码率的视频流。

参数
enabled设置单流或双流模式。
  • true: 双流;
  • false: 单流(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetEncryptionMode()

int agora_gaming_rtc.IRtcEngine.SetEncryptionMode ( string  encryptionMode)

设置内置的加密模式。

Agora Video SDK 支持内置加密模式,默认支持 AES-128-XTS。如需采用其他加密模式,可以调用本方法。同一频道内的所有用户必须设置相同的加密模式和加密密钥才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。

注解
在调用本方法前,请先调用 SetEncryptionSecret 启用内置加密功能。
参数
encryptionMode加密模式:
  • "aes-128-xts": 128 位 AES 加密,XTS 模式;
  • "aes-128-ecb": 128 位 AES 加密,ECB 模式;
  • "aes-256-xts": 256 位 AES 加密,XTS 模式;
  • "": 设置为空字符串时,默认使用加密模式 "aes-128-xts"。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetEncryptionSecret()

int agora_gaming_rtc.IRtcEngine.SetEncryptionSecret ( string  secret)

启用内置加密,并设置数据加密密钥。

在加入频道之前,app 需调用 SetEncryptionSecret 方法指定加密密钥来启用内置的加密功能,同一频道内的所有用户应设置相同的加密密钥。当用户离开频道时,该频道的加密密钥会自动清除。如果未指定加密密钥或将加密密钥设置为空,则无法激活加密功能。

注解
  • 请不要在旁路推流时调用此方法。
  • 为保证最佳传输效果,请确保加密后的数据大小不超过原始数据大小 + 16 字节。16 字节是 AES 通用加密模式下最大填充块大小。
参数
secret加密密码。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ CreateDataStream()

int agora_gaming_rtc.IRtcEngine.CreateDataStream ( bool  reliable,
bool  ordered 
)

创建数据流。

该方法用于创建数据流。IRtcEngine 生命周期内,每个用户最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 app 报错。

注解
reliableordered 同时设为 truefalse。不要一个设为 true 另一个设为 false
参数
reliable
  • true: 接收方 5 秒内会收到发送方所发送的数据,否则会收到 OnStreamMessageErrorHandler 回调获得相应报错信息。
  • false: 接收方不保证收到,就算数据丢失也不会报错。
ordered
  • true: 接收方 5 秒内会按照发送方发送的顺序收到数据包;
  • false: 接收方不保证按照发送方发送的顺序收到数据包。
返回
  • ≥ 0: 方法调用成功则返回数据流 ID。
  • < 0: 方法调用失败。

◆ SendStreamMessage()

int agora_gaming_rtc.IRtcEngine.SendStreamMessage ( int  streamId,
string  data 
)

发送数据流。

该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 API 须对数据通道的传送速率进行控制: 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。

成功调用该方法后,远端会触发 OnStreamMessageHandler 回调,远端用户可以在该回调中获取接收到的流消息;若调用失败,远端会触发 OnStreamMessageHandler 回调。

注解
  • 该方法仅适用于通信场景以及直播场景下的主播用户,如果直播场景下的观众调用此方法可能会造成观众变主播。
  • 请确保在调用该方法前,已调用 CreateDataStream 创建了数据通道。
参数
streamIdCreateDataStream 返回的数据流 ID。
data自定义数据。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetSpeakerphoneVolume()

int agora_gaming_rtc.IRtcEngine.SetSpeakerphoneVolume ( int  volume)

设置扬声器音量。

弃用:
该方法自 v2.3 起废弃。改用 AdjustRecordingSignalVolumeAdjustPlaybackSignalVolume 方法。
注解
该方法仅支持 macOS 平台。
参数
volume扬声器音量,0 (音量最低) 到 255 (音量最高) 的整数。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetVideoQualityParameters()

int agora_gaming_rtc.IRtcEngine.SetVideoQualityParameters ( bool  preferFrameRateOverImageQuality)

设置视频质量偏好选项。

弃用:
该方法自 v2.4 起废弃。

该方法仅适用于直播场景。在网络条件不好或者设备性能不足影响到直播体验的情况下,可以使用该方法设置是否要优先保障流畅度。

参数
preferFrameRateOverImageQuality画质和流畅度里,是否优先保障流畅度:
  • true: 画质和流畅度里,优先保证流畅度。
  • false: 画质和流畅度里,优先保证画质(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartEchoTest() [1/2]

int agora_gaming_rtc.IRtcEngine.StartEchoTest ( )

开始语音通话回路测试。

弃用:
该方法自 v2.4 起废弃。

该方法启动语音通话测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。 在测试过程中,用户先说一段话,在 10 秒后,声音会回放出来。如果 10 秒后用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。

注解
  • 调用 StartEchoTest 后必须调用 StopEchoTest 以结束测试,否则不能进行下一次回声测试,或者调用 JoinChannelByKey 进行通话。
  • 直播场景下,只有主播用户才能调用该方法。如果用户由通信场景切换到直播场景,请务必调用 SetClientRole 方法将用户角色设置为主播后再调用该方法。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartEchoTest() [2/2]

int agora_gaming_rtc.IRtcEngine.StartEchoTest ( int  intervalInSeconds)

开始语音通话回路测试。

该方法启动语音通话测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。在测试过程中,用户先说一段话,声音会在设置的时间间隔后回放出来。如果用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。

注解
  • 请在加入频道前调用该方法。
  • 调用该方法后必须调用 StopEchoTest 以结束测试,否则不能进行下一次回声测试,也无法加入频道。
  • 直播场景下,该方法仅能由用户角色为主播的用户调用。
参数
intervalInSeconds返回语音通话回路测试结果的时间间隔,取值范围为 [2,10],单位为秒,默认值为 10 秒。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StopEchoTest()

int agora_gaming_rtc.IRtcEngine.StopEchoTest ( )

停止语音通话回路测试。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartLastmileProbeTest()

int agora_gaming_rtc.IRtcEngine.StartLastmileProbeTest ( LastmileProbeConfig  lastmileProbeConfig)

开始通话前网络质量探测。

开始通话前网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。

启用该方法后,SDK 会依次返回如下 2 个回调:

  • OnLastmileQualityHandler: 视网络情况约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近用户的主观感受。
  • OnLastmileProbeResultHandler: 视网络情况约 30 秒内返回。该回调通过具体数据反馈上下行网络质量,更加客观。
注解
  • 该方法会消耗一定的网络流量,影响通话质量,因此我们建议不要和 EnableLastmileTest 同时使用。
  • 调用该方法后,在收到 OnLastmileQualityHandlerOnLastmileProbeResultHandler 回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此方法无法执行。
  • 直播场景下,如果本地用户为主播,请勿在加入频道后调用该方法。
参数
lastmileProbeConfigLast mile 网络探测配置,详见 LastmileProbeConfig
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StopLastmileProbeTest()

int agora_gaming_rtc.IRtcEngine.StopLastmileProbeTest ( )

停止通话前网络质量探测。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AddVideoWatermark() [1/2]

int agora_gaming_rtc.IRtcEngine.AddVideoWatermark ( RtcImage  rtcImage)

添加本地视频水印。

弃用:
该方法自 v2.9.1 起废弃,请改用 AddVideoWatermark

该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的观众,旁路推流观众,甚至录制设备都能看到或采集到该水印图片。 如果你仅仅希望在旁路直播推流中添加水印,请参考 SetLiveTranscoding 中描述的用法。

注解
  • 在本地直播和旁路推流中,URL 的定义不同。本地直播中,URL 指本地直播视频上图片的本地绝对/相对路径;旁路推流中,URL 指旁路推流视频上图片的地址。
  • 待添加图片的源文件格式必须是 PNG。如果待添加的 PNG 图片的尺寸与你该方法中设置的尺寸不一致,SDK 会对 PNG 图片进行裁剪,以与设置相符。
  • 声网当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。
参数
rtcImage待添加在本地直播推流中的水印图片:RtcImage 。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AddVideoWatermark() [2/2]

int agora_gaming_rtc.IRtcEngine.AddVideoWatermark ( string  watermarkUrl,
WatermarkOptions  watermarkOptions 
)

添加本地视频水印。

该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的观众、旁路直播观众和录制设备都能看到或采集到该水印图片。Agora 当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。

水印坐标和 SetVideoEncoderConfiguration 方法中的设置有依赖关系:

  • 如果视频编码方向/ ORIENTATION_MODE 固定为横屏或自适应模式下的横屏,那么水印使用横屏坐标。
  • 如果视频编码方向/ ORIENTATION_MODE 固定为竖屏或自适应模式下的竖屏,那么水印使用竖屏坐标。
  • 设置水印坐标时,水印的图像区域不能超出 setVideoEncoderConfiguration 方法中设置的视频尺寸,否则超出部分将被裁剪。
注解
  • 你需要在调用 EnableVideo 方法之后再调用本方法。
  • 如果你只是在旁路直播(推流到CDN)中添加水印,你可以使用本方法或 SetLiveTranscoding 方法设置水印。
  • 待添加水印图片必须是 PNG 格式。本方法支持所有像素格式的 PNG 图片:RGBA、RGB、Palette、Gray 和 Alpha_gray。
  • 如果待添加的 PNG 图片的尺寸与你在本方法中设置的尺寸不一致,SDK 会对 PNG 图片进行缩放或裁剪,以与设置相符。
  • 如果你已经使用 StartPreview 方法开启本地视频预览,那么本方法的 visibleInPreview 可设置水印在预览时是否可见。
参数
watermarkUrl待添加的水印图片的本地路径。本方法支持从本地绝对/相对路径添加水印图片。
watermarkOptions待添加的水印图片的设置选项,详见 WatermarkOptions
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ ClearVideoWatermarks()

int agora_gaming_rtc.IRtcEngine.ClearVideoWatermarks ( )

删除已添加的视频水印。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetRemoteVideoStreamType()

int agora_gaming_rtc.IRtcEngine.SetRemoteVideoStreamType ( uint  uid,
REMOTE_VIDEO_STREAM_TYPE  streamType 
)

设置订阅的视频流类型。

如果发送端选择发送视频双流 (大流,即高分辨率、高码率视频流,或小流,即低分辨率、低码率视频流),接收端可以选择接收大流还是小流。该方法可以根据视频窗口的大小动态调整对应视频流的大小,以节约带宽和计算资源。

  • 如果发送端用户已调用 EnableDualStreamMode 启用了双流模式,默认接收大流。如需使用小流,可调用本方法进行切换;
  • 如果发送端用户未启用双流模式,默认接收大流。

调用本方法的执行结果将在 OnApiExecutedHandler 中返回。

参数
uid用户 ID。
streamType视频流类型: REMOTE_VIDEO_STREAM_TYPE.
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetMixedAudioFrameParameters()

int agora_gaming_rtc.IRtcEngine.SetMixedAudioFrameParameters ( int  sampleRate,
int  samplesPerCall 
)

设置录制与播放声音混音后的数据格式。

注解
SDK 会通过 samplesPerCallsampleRateAudioFrame 中的 channels 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channels)。请确保采样间隔不得小于 0.01 (s)。SDK 会根据该采样间隔触发 OnMixedAudioFrameHandler 回调。
参数
sampleRate指定 OnMixedAudioFrameHandler 中返回数据的采样率,可设置为 8000,16000,32000,44100 或 48000。
samplesPerCall指定 OnMixedAudioFrameHandler 中返回数据的采样点数,如转码推流应用中通常为 1024。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetAudioMixingPosition()

int agora_gaming_rtc.IRtcEngine.SetAudioMixingPosition ( int  pos)

设置音乐文件的播放位置。该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而非从头到尾播放整个文件。

参数
pos整数。进度条位置,单位为毫秒。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableAudioVolumeIndication()

int agora_gaming_rtc.IRtcEngine.EnableAudioVolumeIndication ( int  interval,
int  smooth,
bool  report_vad 
)

启用说话者音量提示。

该方法允许 SDK 定期向 app 反馈当前谁在说话以及说话者的音量。启用该方法后,无论频道内是否有人说话,都会在 OnVolumeIndicationHandler 回调中按设置的间隔时间返回音量提示。

参数
interval指定音量提示的时间间隔:
  • ≤ 0: 禁用音量提示功能;
  • > 0: 返回音量提示的间隔,单位为毫秒。建议设置到大于 200 毫秒。最小不得少于 10 毫秒,否则会收不到 OnVolumeIndicationHandler 回调。
smooth平滑系数,指定音量提示的灵敏度。取值范围为 [0,10],建议值为 3。数字越大,波动越灵敏;数字越小,波动越平滑。
report_vad
  • true: 开启本地人声检测功能。开启后,OnVolumeIndicationHandler 回调的 vad 参数会报告是否在本地检测到人声。
  • false: (Default) (默认)关闭本地人声检测功能。除引擎自动进行本地人声检测的场景外,OnVolumeIndicationHandler 回调的 vad 参数不会报告是否在本地检测到人声。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AdjustRecordingSignalVolume()

int agora_gaming_rtc.IRtcEngine.AdjustRecordingSignalVolume ( int  volume)

调节录音音量。

参数
volume录音信号音量。为避免回声并提升通话质量,Agora 建议将 volume 值设为 [0,100]。如果 volume 值需超过 100,联系技术支持:
  • 0: 静音;
  • 100: 原始音量。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AdjustPlaybackSignalVolume()

int agora_gaming_rtc.IRtcEngine.AdjustPlaybackSignalVolume ( int  volume)

调节本地播放的所有远端用户音量。

注解
  • 该方法调节的是本地播放的所有远端用户混音后的音量。
  • 从 v2.3.2 开始,静音本地音频需同时调用 AdjustPlaybackSignalVolumeAdjustAudioMixingVolume 方法,并将 volume 参数设置为 0。
参数
volume播放音量,取值范围为 [0,400]。
  • 0: 静音;
  • 100: 原始音量;
  • 400: 最大可为原始音量的 4 倍(自带溢出保护)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartAudioMixing()

int agora_gaming_rtc.IRtcEngine.StartAudioMixing ( string  filePath,
bool  loopback,
bool  replace,
int  cycle 
)

开始播放音乐文件。

指定本地或在线音频文件来和麦克风采集的音频流进行混音和替换。替换是指用音频文件替换录音设备采集的音频流。该方法可以选择是否让对方听到本地播放的音频并指定循环播放的次数。成功调用该方法后,本地会触发 OnAudioMixingStateChangedHandler(PLAYING) 回调。播放结束后,会收到 OnAudioMixingStateChangedHandler(STOPPED) 回调。

注解
  • 请在频道内调用该方法,如果在频道外调用该方法可能会出现问题。
  • 如果本地音乐文件不存在、文件格式不支持、无法访问在线音乐文件 URL 都会返回警告码 WARN_AUDIO_MIXING_OPEN_ERROR(701).
参数
filePath指定需要混音的本地或在线音频文件的绝对路径(包含文件名后缀)。支持的音频格式包括:3GP、ASF、ADTS、AVI、MP3、MP4、MPEG-4、SAMI 和 WAVE。详见:Supported Media Formats in Media Foundation
loopback
  • true: 只有本地用户可以听到混音的音频;
  • false: 本地用户和远端用户都能听到混音的音频。
replace
  • true: 只推送指定的本地音频文件或者线上音频文件,不传输麦克风收录的音频。
  • false: 本地音频文件与来自麦克风的音频流混音。
cycle循环播放次数:
  • 正整数: 循环播放的次数;
  • -1: 无限循环。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StopAudioMixing()

int agora_gaming_rtc.IRtcEngine.StopAudioMixing ( )

停止播放音乐文件。

该方法停止播放音乐文件。请在频道内调用该方法。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ PauseAudioMixing()

int agora_gaming_rtc.IRtcEngine.PauseAudioMixing ( )

暂停播放音乐文件。

该方法暂停播放音乐文件。请在频道内调用该方法。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ ResumeAudioMixing()

int agora_gaming_rtc.IRtcEngine.ResumeAudioMixing ( )

恢复播放音乐文件。

该方法恢复混音,继续播放音乐文件。请在频道内调用该方法。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AdjustAudioMixingVolume()

int agora_gaming_rtc.IRtcEngine.AdjustAudioMixingVolume ( int  volume)

调节音乐文件的播放音量。

该方法调节混音音乐文件在本端和远端的播放音量大小。请在频道内调用该方法。

注解
调用该方法不影响调用 PlayEffect 播放音效文件的音量。
参数
volume音乐文件音量范围为 [0,100]。
  • 0: 静音;
  • 100: 原始音量。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetAudioMixingDuration()

int agora_gaming_rtc.IRtcEngine.GetAudioMixingDuration ( )

获取音乐文件总时长。

该方法获取音乐文件总时长,单位为毫秒。请在频道内调用该方法。

返回
  • ≥ 0: 方法调用成功则返回音乐文件时长。
  • < 0: 方法调用失败。

◆ GetAudioMixingCurrentPosition()

int agora_gaming_rtc.IRtcEngine.GetAudioMixingCurrentPosition ( )

获取音乐文件的播放进度。

该方法获取当前音乐文件播放进度,单位为毫秒。请在频道内调用该方法。

返回
  • ≥ 0: 方法调用成功则返回音乐文件播放进度。
  • < 0: 方法调用失败。

◆ StartAudioRecording() [1/2]

int agora_gaming_rtc.IRtcEngine.StartAudioRecording ( string  filePath,
AUDIO_RECORDING_QUALITY_TYPE  quality 
)

开始客户端录音。

弃用:
该方法从 v2.9.1 起废弃,其默认录音采样率为 32 kHz,不可修改。请改用新的 StartAudioRecording2 方法。

Agora RTC SDK 支持通话过程中在客户端进行录音。该方法录制频道内所有用户的音频,并生成一个包含所有用户声音的录音文件,录音文件格式可以为:

  • .wav: 文件大,音质保真度高;
  • .aac: 文件小,有一定的音质保真度损失。

请确保 app 里指定的目录存在且可写。该接口需在 JoinChannelByKey 之后调用。如果调用 LeaveChannel 时还在录音,录音会自动停止。

参数
filePath录音文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/dir1/dir2/dir3/audio.aac。
quality设置录音质量。详见 AUDIO_RECORDING_QUALITY_TYPE.
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartAudioRecording() [2/2]

int agora_gaming_rtc.IRtcEngine.StartAudioRecording ( string  filePath,
int  sampleRate,
AUDIO_RECORDING_QUALITY_TYPE  quality 
)

开始客户端录音。

Agora RTC SDK 支持通话过程中在客户端进行录音。调用该方法后,你可以录制频道内所有用户的音频,并得到一个包含所有用户声音的录音文件。录音文件格式可以为:

  • .wav: 文件大,音质保真度较高。
  • .aac: 文件小,音质保真度较低。
注解
参数
filePath录音文件在本地保存的绝对路径,由用户自行指定,需精确到文件名及格式,例如:/dir1/dir2/dir3/audio.aac。
sampleRate录音采样率(Hz),可以设为以下值:
  • 16000
  • 32000(默认)
  • 44100
  • 48000
quality录音音质。详见 AUDIO_RECORDING_QUALITY_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StopAudioRecording()

int agora_gaming_rtc.IRtcEngine.StopAudioRecording ( )

停止客户端录音。

停止录音。该接口需要在 LeaveChannel 之前调用,不然会在调用 LeaveChannel 时自动停止。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetAudioEffectManager()

IAudioEffectManager agora_gaming_rtc.IRtcEngine.GetAudioEffectManager ( )

获取 AudioEffectManagerImpl 对象。

返回
AudioEffectManagerImpl 对象。

◆ GetAudioRecordingDeviceManager()

IAudioRecordingDeviceManager agora_gaming_rtc.IRtcEngine.GetAudioRecordingDeviceManager ( )

获取 AudioRecordingDeviceManager 对象。

返回
AudioRecordingDeviceManager 对象。

◆ GetAudioPlaybackDeviceManager()

IAudioPlaybackDeviceManager agora_gaming_rtc.IRtcEngine.GetAudioPlaybackDeviceManager ( )

获取 AudioPlaybackDeviceManager 对象。

返回
AudioPlaybackDeviceManager 对象。

◆ GetVideoDeviceManager()

IVideoDeviceManager agora_gaming_rtc.IRtcEngine.GetVideoDeviceManager ( )

获取 VideoDeviceManager 对象。

返回
VideoDeviceManager 对象。

◆ GetAudioRawDataManager()

IAudioRawDataManager agora_gaming_rtc.IRtcEngine.GetAudioRawDataManager ( )

获取 AudioRawDataManager 对象。

返回
AudioRawDataManager 对象。

◆ GetVideoRawDataManager()

IVideoRawDataManager agora_gaming_rtc.IRtcEngine.GetVideoRawDataManager ( )

获取 VideoRawDataManager 对象。

返回
VideoRawDataManager 对象。

◆ EnableVideo()

int agora_gaming_rtc.IRtcEngine.EnableVideo ( )

启用视频模块。

该方法可以在加入频道前或者通话中调用,在加入频道前调用则自动开启视频模块;在通话中调用则由音频模式切换为视频模式。 调用 DisableVideo 方法可关闭视频模式。

成功调用该方法后,远端会触发 OnUserEnableVideoHandler(true) 回调。

注解
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ DisableVideo()

int agora_gaming_rtc.IRtcEngine.DisableVideo ( )

关闭视频模块。

该方法可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频频模式。 调用 EnableVideo 方法可开启视频模式。

成功调用该方法后,远端会触发 OnUserEnableVideoHandler(false) 回调。

注解
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableLocalVideo()

int agora_gaming_rtc.IRtcEngine.EnableLocalVideo ( bool  enabled)

开关本地视频采集。

该方法禁用或重新启用本地视频采集,不影响接收远端视频。

调用 EnableVideo 后,本地视频即默认开启。你可以调用 EnableLocalVideo(false) 关闭本地视频采集。关闭后如果想要重新开启,则可调用 EnableLocalVideo(true)

成功禁用或启用本地视频采集后,远端会触发 OnUserEnableLocalVideoHandler 回调。

注解
该方法设置内部引擎为启用状态,在 LeaveChannel 后仍然有效。
参数
enabled
  • true: 开启本地视频采集和渲染 (默认);
  • false: 关闭使用本地摄像头设备。关闭后,远端用户会接收不到本地用户的视频流;但本地用户依然可以接收远端用户的视频流。设置为 false 时,该方法不需要本地有摄像头。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableLocalAudio()

int agora_gaming_rtc.IRtcEngine.EnableLocalAudio ( bool  enabled)

开关本地音频采集。

当用户加入频道时,语音功能默认是开启的。该方法可以关闭或重新开启本地语音功能,即停止或重新开始本地音频采集。

该方法不影响接收或播放远端音频流,EnableLocalAudio(false) 适用于只听不发的用户场景。

语音功能关闭或重新开启后,会收到回调 OnMicrophoneEnabledHandler

注解
  • 该方法需要在 JoinChannelByKey 之后调用才能生效。
  • 该方法与 MuteLocalAudioStream 的区别在于:
    • EnableLocalAudio: 开启或关闭本地语音采集及处理。使用 EnableLocalAudio 关闭或开启本地采集后,本地听远端播放会有短暂中断。
    • MuteLocalAudioStream: 停止或继续发送本地音频流。
参数
enabled
  • true: 重新开启本地语音功能,即开启本地语音采集(默认);
  • false: 关闭本地语音功能,即停止本地语音采集。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartPreview()

int agora_gaming_rtc.IRtcEngine.StartPreview ( )

开启视频预览。

该方法用于在进入频道前启动本地视频预览。调用该 API 前,必须调用 EnableVideo 开启视频功能。

注解
启用了本地视频预览后,如果调用 LeaveChannel 退出频道,本地预览依然处于启动状态,如需要关闭本地预览,需要调用 StopPreview
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StopPreview()

int agora_gaming_rtc.IRtcEngine.StopPreview ( )

停止视频预览。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableVideoObserver()

int agora_gaming_rtc.IRtcEngine.EnableVideoObserver ( )

开启视频观测器。

该方法直接将视频图片发送给 App,而无需经过传统的视图渲染器。

注解
  • 为获取原始视频数据,需同时调用 EnableVideoEnableVideoObserver 方法。
  • 请在加入频道前调用该方法。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ DisableVideoObserver()

int agora_gaming_rtc.IRtcEngine.DisableVideoObserver ( )

关闭视频观测器。

该方法禁止直接将视频图片发送给 App。

注解
  • 为停止获取原始视频数据,需同时调用 DisableVideoDisableVideoObserver 方法。
  • 请在离开频道后调用该方法。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetDefaultMuteAllRemoteAudioStreams()

int agora_gaming_rtc.IRtcEngine.SetDefaultMuteAllRemoteAudioStreams ( bool  mute)

设置是否默认接收音频流。该方法在加入频道前后都可调用。如果在加入频道后调用 SetDefaultMuteAllRemoteAudioStreams (true),会接收不到设置后加入频道的用户的音频流。

注解
停止接收音频流后,如果想恢复接收指定音频流,请调用 MuteRemoteAudioStream (false),并指定你想要接收的远端用户 uid。如果想恢复接收多个用户的音频流,则需要多次调用 MuteRemoteAudioStreamSetDefaultMuteAllRemoteAudioStreams (false) 只能恢复接收后面加入频道的用户的音频流。
参数
mute
  • true: 默认停止接收所有音频流。
  • false: (默认)默认接收所有音频流。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetDefaultMuteAllRemoteVideoStreams()

int agora_gaming_rtc.IRtcEngine.SetDefaultMuteAllRemoteVideoStreams ( bool  mute)

设置是否默认接收视频流。该方法在加入频道前后都可调用。如果在加入频道后调用 SetDefaultMuteAllRemoteVideoStreams (true),会接收不到设置后加入频道的用户的视频流。

注解
停止接收视频流后,如果想要恢复接收,请调用 MuteRemoteVideoStream (false),并指定你想要接收的远端用户 uid;如果想恢复接收多个用户的视频流,则需要多次调用 MuteRemoteVideoStreamSetDefaultMuteAllRemoteVideoStreams (false) 只能恢复接收后面加入频道的用户的视频流。
参数
mute
  • true: 默认停止接收所有远端视频;
  • false: 默认接收所有远端视频(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableLastmileTest()

int agora_gaming_rtc.IRtcEngine.EnableLastmileTest ( )

启动网络测试。

该方法启用网络连接质量测试,用于检测用户目前的网络接入质量(上行网络质量)。默认该功能为关闭状态。该方法主要用于以下场景:

  • 用户加入频道前,可以调用该方法判断和预测目前的上行网络质量是否足够好。
  • 直播场景下,当用户角色由观众切换为主播时,可以调用该方法判断和预测目前的上行网络质量是否足够好。

启用该方法均会消耗网络流量,影响通话质量。用户必须在收到 OnLastmileQualityHandler 回调后调用 DisableLastmileTest 停止测试,再加入频道或切换为主播。

注解
  • 该方法请勿与 StartLastmileProbeTest 同时使用。
  • 调用该方法后,在收到 OnLastmileQualityHandler 回调前请勿调用其他方法,否则可能由于 API 操作过于频繁导致回调无法执行。
  • 在直播场景中,如果本地用户为主播,请勿加入频道后调用该方法。
  • 加入频道前调用该方法检测网络质量后,SDK 会占用一路视频的带宽,码率与 SetVideoEncoderConfiguration 中设置的码率相同。加入频道后,无论是否调用了 DisableLastmileTest,SDK 均会自动停止带宽占用。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ DisableLastmileTest()

int agora_gaming_rtc.IRtcEngine.DisableLastmileTest ( )

关闭网络测试。

返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetConnectionState()

CONNECTION_STATE_TYPE agora_gaming_rtc.IRtcEngine.GetConnectionState ( )

获取当前网络连接状态。

返回
CONNECTION_STATE_TYPE

◆ SetAudioProfile()

int agora_gaming_rtc.IRtcEngine.SetAudioProfile ( AUDIO_PROFILE_TYPE  audioProfile,
AUDIO_SCENARIO_TYPE  scenario 
)

设置音频编码属性。

注解
  • 该方法需要在 JoinChannelByKey 之前设置好,JoinChannelByKey 之后设置不生效。
  • 通信和直播场景下,音质(码率)会有网络自适应的调整,通过该方法设置的是一个最高码率。
  • 在有高音质需求的场景(例如音乐教学场景)中,建议将 audioProfile 设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)scenario 设置为 AUDIO_SCENARIO_GAME_STREAMING(3)
参数
audioProfile设置采样率,码率,编码模式和声道数: AUDIO_PROFILE_TYPE.
scenario设置音频应用场景: AUDIO_SCENARIO_TYPE 。不同的音频场景下,设备的系统音量是不同的。详见如何区分媒体音量和通话音量
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetVideoEncoderConfiguration()

int agora_gaming_rtc.IRtcEngine.SetVideoEncoderConfiguration ( VideoEncoderConfiguration  configuration)

设置本地视频的编码属性。

参数
configuration视频编码参数配置。详见: VideoEncoderConfiguration
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AdjustAudioMixingPlayoutVolume()

int agora_gaming_rtc.IRtcEngine.AdjustAudioMixingPlayoutVolume ( int  volume)

调节音乐文件本端播放音量。

注解
该方法调节混音音乐文件在本端的播放音量大小。请在频道内调用该方法。
参数
volume音乐文件音量范围为 [0,100]。100 (默认值) 为原始文件音量。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AdjustAudioMixingPublishVolume()

int agora_gaming_rtc.IRtcEngine.AdjustAudioMixingPublishVolume ( int  volume)

调节音乐文件远端播放音量。

注解
该方法调节混音音乐文件在远端的播放音量大小。请在频道内调用该方法。
参数
volume音乐文件音量范围为 [0,100]。100 (默认值) 为原始文件音量。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetVolumeOfEffect()

int agora_gaming_rtc.IRtcEngine.SetVolumeOfEffect ( int  soundId,
int  volume 
)

实时调整音效文件的播放音量。

参数
soundId指定音效的 ID。每个音效均有唯一的 ID。
volume播放音量。音量范围为 [0,100]。100 (默认值)为原始文件音量。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetRecordingAudioFrameParameters()

int agora_gaming_rtc.IRtcEngine.SetRecordingAudioFrameParameters ( int  sampleRate,
int  channel,
RAW_AUDIO_FRAME_OP_MODE_TYPE  mode,
int  samplesPerCall 
)

设置录制的声音格式。

该方法设置 OnRecordAudioFrameHandler 回调的录制声音格式。

注解
SDK 会通过 samplesPerCallsampleRatechannel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不得小于 0.01 (s)。SDK 会根据该采样间隔触发 OnRecordAudioFrameHandler 回调。
参数
sampleRate指定 OnRecordAudioFrameHandler 中返回数据的采样率,可设置为 8000、 16000、 32000、 44100 或 48000。
channel指定 OnRecordAudioFrameHandler 中返回数据的通道数,可设置为 1 或 2:
  • 1: 单声道。
  • 2: 双声道。
mode指定 OnRecordAudioFrameHandler 回调的使用模式: RAW_AUDIO_FRAME_OP_MODE_TYPE
samplesPerCall指定 OnRecordAudioFrameHandler 中返回数据的采样点数,如 RTMP 推流应用中通常为 1024。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetPlaybackAudioFrameParameters()

int agora_gaming_rtc.IRtcEngine.SetPlaybackAudioFrameParameters ( int  sampleRate,
int  channel,
RAW_AUDIO_FRAME_OP_MODE_TYPE  mode,
int  samplesPerCall 
)

设置播放的声音格式。

注解
SDK 会通过 samplesPerCallsampleRatechannel 参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。请确保采样间隔不得小于 0.01 (s)。SDK 会根据该采样间隔触发 OnPlaybackAudioFrameHandler 回调。
参数
sampleRate指定 OnPlaybackAudioFrameHandler 中返回数据的采样率,可设置为 8000,16000,32000,44100 或 48000。
channel指定 OnPlaybackAudioFrameHandler 中返回数据的通道数,可设置为 1 或 2:
  • 1: 单声道。
  • 2: 双声道。
mode指定 OnPlaybackAudioFrameHandler 的使用模式: RAW_AUDIO_FRAME_OP_MODE_TYPE
samplesPerCall指定 OnPlaybackAudioFrameHandler 中返回数据的采样点数,如 RTMP 推流应用中通常为 1024。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLocalPublishFallbackOption()

int agora_gaming_rtc.IRtcEngine.SetLocalPublishFallbackOption ( STREAM_FALLBACK_OPTIONS  option)

设置弱网条件下发布的音视频流回退选项。

网络不理想的环境下,直播音视频的质量都会下降。使用该接口并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY(2) 后,SDK 会在上行弱网且音视频质量严重受影响时,自动关断视频流,从而保证或提高音频质量。同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。当本地推流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发本地发布的媒体流已回退为音频流 OnLocalPublishFallbackToAudioOnlyHandler 回调。

注解
旁路推流场景下,设置本地推流回退为 Audio-only 可能会导致远端的 CDN 用户听到声音的时间有所延迟。因此在有旁路推流的场景下,Agora 建议不开启该功能。
参数
option本地推流回退处理选项: STREAM_FALLBACK_OPTIONS
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetRemoteSubscribeFallbackOption()

int agora_gaming_rtc.IRtcEngine.SetRemoteSubscribeFallbackOption ( STREAM_FALLBACK_OPTIONS  option)

设置弱网条件下订阅的音视频流的回退选项。

默认 optionSTREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW(1)。如果你使用本方法并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY(2),SDK 会在下行弱网且音视频质量严重受影响时,将视频流切换为小流,或关断视频流,从而保证或提高音频质量。同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。

当远端订阅流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发 OnRemoteSubscribeFallbackToAudioOnlyHandler 回调。

参数
option详见 STREAM_FALLBACK_OPTIONS
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetRemoteDefaultVideoStreamType()

int agora_gaming_rtc.IRtcEngine.SetRemoteDefaultVideoStreamType ( REMOTE_VIDEO_STREAM_TYPE  remoteVideoStreamType)

设置默认订阅的视频流类型。

如果发送端选择发送视频双流 (大流,即高分辨率、高码率视频流,或小流,即低分辨率、低码率视频流),接收端可以选择接收大流还是小流。

  • 如果用户已调用 EnableDualStreamMode 启用了双流模式,默认接收大流。如需使用小流,可调用本方法进行切换。
  • 如果用户未启用双流模式,默认接收大流。

调用本方法的执行结果将在下文的 OnApiExecutedHandler 中返回。视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。

参数
remoteVideoStreamType视频流类型: REMOTE_VIDEO_STREAM_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AddPublishStreamUrl()

int agora_gaming_rtc.IRtcEngine.AddPublishStreamUrl ( string  url,
bool  transcodingEnabled 
)

增加旁路推流地址。

调用该方法后,SDK会在本地触发 OnRtmpStreamingStateChangedHandler 回调,报告增加旁路推流地址的状态。

注解
  • 请确保在成功加入频道后才能调用该接口。
  • 请确保已开通旁路推流的功能。
  • 该方法每次只能增加一路旁路推流地址。若需推送多路流,则需多次调用该方法。
  • 在直播场景中,只有角色为主播的用户才能调用该方法。
参数
urlCDN 推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。url 不支持中文字符等特殊字符。
transcodingEnabled
  • true: 转码( 转码 是指在旁路推流时对音视频流进行转码处理后再推送到其他 RTMP 服务器。多适用于频道内有多个主播,需要进行混流、合图的场景)。如果设为 true,需先调用 SetLiveTranscoding 方法。
  • false: 不转码。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_INVALID_ARGUMENT(-2): URL 为空或是长度为 0 的的字符串。
    • ERR_NOT_INITIALIZED(-7): 推流时未初始化引擎。

◆ RemovePublishStreamUrl()

int agora_gaming_rtc.IRtcEngine.RemovePublishStreamUrl ( string  url)

删除旁路推流地址。

调用该方法后,SDK 会在本地触发 OnRtmpStreamingStateChangedHandler 回调,报告删除旁路推流地址的状态。

注解
  • 该方法每次只能删除一路旁路推流地址。若需删除多路流,则需多次调用该方法。
  • URL 不支持中文等特殊字符。
  • 该方法仅适用于直播场景。
参数
url待删除的旁路推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetErrorDescription()

static string agora_gaming_rtc.IRtcEngine.GetErrorDescription ( int  code)
static

获取警告或错误描述。

参数
codeOnSDKWarningHandlerOnSDKErrorHandler 提供的警告码或错误码。
返回
Warning CodeError Code.

◆ EnableWebSdkInteroperability()

int agora_gaming_rtc.IRtcEngine.EnableWebSdkInteroperability ( bool  enabled)

打开直播场景下与 Agora Web SDK 的互通。

弃用:
该方法自 v3.0.1 起废弃。自 v3.0.1 起,Unity SDK 自动开启与 Web SDK 的互通,无需调用该方法开启。
注解
  • 该方法仅适用于直播场景。通信场景默认打开与 Web SDK 的互通。
  • 如果有用户通过 Web SDK 加入频道,请确保调用该方法,否则 Web 端用户看 Native 端的画面会是黑屏。
参数
enabled
  • true: 打开互通;
  • false: 关闭互通(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLiveTranscoding()

int agora_gaming_rtc.IRtcEngine.SetLiveTranscoding ( LiveTranscoding  transcoding)

设置直播推流转码。

该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码设置后本地会触发 OnTranscodingUpdatedHandler 回调。

注解
  • 在直播场景中,只有角色为主播的用户才能调用该方法。
  • 请确保已开通旁路推流的功能。
  • 首次调用该方法更新转码设置时,不会触发 OnTranscodingUpdatedHandler 回调。
参数
transcoding详见 LiveTranscoding
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ PushVideoFrame()

int agora_gaming_rtc.IRtcEngine.PushVideoFrame ( ExternalVideoFrame  externalVideoFrame)

使用 ExternalVideoFrame 将视频帧数据传递给 Agora RTC SDK。

注解
该方法不支持 Texture 格式的视频帧,只支持非 Texture 格式的视频帧。
参数
externalVideoFrame待传输的视频帧。详见 ExternalVideoFrame
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetExternalVideoSource()

int agora_gaming_rtc.IRtcEngine.SetExternalVideoSource ( bool  enable,
bool  useTexture 
)

配置外部视频源。

参数
enable是否使用外部视频源:
  • true: 使用外部视频源。
  • false: 不使用外部视频源(默认)。
useTexture是否使用 Texture 作为输入(现不支持使用 Texture 作为输入,请用默认值 false):
  • true: 使用 texture 作为输入。
  • false: 不使用 texture 作为输入(默认)。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetExternalAudioSource()

int agora_gaming_rtc.IRtcEngine.SetExternalAudioSource ( bool  enabled,
int  sampleRate,
int  channels 
)

设置外部音频采集参数。请在 JoinChannelByKey 前调用该方法。

参数
enabled
  • true: 开启使用外部音频源的功能;
  • false: 关闭使用外部音频源的功能(默认)。
sampleRate外部音频源的采样率 (Hz),可设置为 8000,16000,32000,44100 或 48000。
channels外部音频源的通道数,可设置为 1 或 2:
  • 1: 单声道。
  • 2: 双声道。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ PushAudioFrame()

int agora_gaming_rtc.IRtcEngine.PushAudioFrame ( AudioFrame  audioFrame)

推送外部音频帧。

参数
audioFrame详见 AudioFrame
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetAudioMixingPlayoutVolume()

int agora_gaming_rtc.IRtcEngine.GetAudioMixingPlayoutVolume ( )

获取音乐文件的本地播放音量。

该方法获取混音的音乐文件本地播放音量,方便排查音量相关问题。

注解
请在频道内调用该方法。
返回
  • ≥ 0: 方法调用成功则返回音量值,范围为 [0,100]。
  • < 0: 方法调用失败。

◆ GetAudioMixingPublishVolume()

int agora_gaming_rtc.IRtcEngine.GetAudioMixingPublishVolume ( )

获取音乐文件的远端播放音量。

该接口可以方便开发者排查音量相关问题。

注解
请在频道中调用该方法
返回
  • ≥ 0: 方法调用成功则返回音量值,范围为 [0, 100]。
  • < 0: 方法调用失败。

◆ EnableSoundPositionIndication()

int agora_gaming_rtc.IRtcEngine.EnableSoundPositionIndication ( bool  enabled)

开启/关闭远端用户的语音立体声。

如果想调用 SetRemoteVoicePosition 实现听声辨位的功能,请确保在加入频道前调用该方法开启远端用户的语音立体声。

参数
enabled是否开启远端用户语音立体声:
  • true: 开启。
  • false: 关闭。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLocalVoiceChanger()

int agora_gaming_rtc.IRtcEngine.SetLocalVoiceChanger ( VOICE_CHANGER_PRESET  voiceChanger)

设置本地语音变声、美音或语聊美声效果。

通信场景下的用户或直播场景下的主播均可调用该方法为本地语音设置以下效果。成功设置以后,频道内的所有用户均可听到声音效果。

  • 变声效果:枚举值以 VOICE_CHANGER 为前缀。效果包括老男人、小男孩、小女孩、猪八戒、空灵和绿巨人,通常用于语聊场景。
  • 美音效果:枚举值以 VOICE_BEAUTY 为前缀。效果包括浑厚、低沉、圆润、假音、饱满、清澈、高亢、嘹亮和空旷,通常用于语聊和唱歌场景。
  • 语聊美声效果:枚举值以 GENERAL_BEAUTY_VOICE 为前缀。效果包括磁性(男)、清新(女)和活力(女),通常用于语聊场景。该功能主要细化了男声和女声各自的特点。
注解
参数
voiceChanger预设本地语音变声、美音或语聊美声效果选项,默认值为 VOICE_CHANGER_OFF,即原声。详见 VOICE_CHANGER_PRESET 。 设置语聊美声效果时,Agora 推荐使用 GENERAL_BEAUTY_VOICE_MALE_MAGNETIC 处理男声,使用 GENERAL_BEAUTY_VOICE_FEMALE_FRESHGENERAL_BEAUTY_VOICE_FEMALE_VITALITY 处理女声,否则音频可能会产生失真。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLocalVoiceReverbPreset()

int agora_gaming_rtc.IRtcEngine.SetLocalVoiceReverbPreset ( AUDIO_REVERB_PRESET  audioReverbPreset)

设置本地语音混响(含虚拟立体声效果)。

通信场景下的用户或直播场景下的主播均可调用该方法设置本地语音混响。成功设置以后,频道内的所有用户均可听到声音效果。

注解
参数
audioReverbPreset本地语音混响选项,默认值为 AUDIO_REVERB_OFF,即原声。详见 AUDIO_REVERB_PRESET 。 为达到更好的混响效果,Agora 推荐使用以 AUDIO_REVERB_FX 为前缀的枚举值。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLocalVoicePitch()

int agora_gaming_rtc.IRtcEngine.SetLocalVoicePitch ( double  pitch)

设置本地语音音调。

参数
pitch语音频率可以 [0.5,2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLocalVoiceEqualization()

int agora_gaming_rtc.IRtcEngine.SetLocalVoiceEqualization ( AUDIO_EQUALIZATION_BAND_FREQUENCY  bandFrequency,
int  bandGain 
)

设置本地语音音效均衡。

参数
bandFrequency频谱子带索引。取值范围是 [0,9],分别代表音效的 10 个频带。对应的中心频率为 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz。详见 AUDIO_EQUALIZATION_BAND_FREQUENCY
bandGain每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15]。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLocalVoiceReverb()

int agora_gaming_rtc.IRtcEngine.SetLocalVoiceReverb ( AUDIO_REVERB_TYPE  reverbKey,
int  value 
)

设置本地音效混响。

注解
Agora RTC SDK 在 v2.4.0 版本中提供一个使用更为简便的接口 SetLocalVoiceReverbPreset,通过一系列内置参数的调整,直接实现流行、R&B、摇滚、嘻哈等预置的混响效果。
参数
reverbKey混响音效类型,详见 AUDIO_REVERB_TYPE
value各混响音效 Key 所对应的值。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetCameraCapturerConfiguration()

int agora_gaming_rtc.IRtcEngine.SetCameraCapturerConfiguration ( CameraCapturerConfiguration  cameraCaptureConfiguration)

设置摄像头采集偏好。

一般的视频通话或直播中,默认由 SDK 自动控制摄像头的输出参数。在如下特殊场景中,默认的参数通常无法满足需求,或可能引起设备性能问题,我们推荐调用该方法设置摄像头的采集偏好:

  • 使用原始音视频数据自采集接口时,如果 SDK 输出的分辨率和帧率高于 SetVideoEncoderConfiguration 中指定的参数,在后续处理视频帧的时候,比如美颜功能时,会需要更高的 CPU 及内存,容易导致性能问题。在这种情况下,我们推荐将摄像头采集偏好设置为 CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE(1),避免性能问题。
  • 如果没有本地预览功能或者对预览质量没有要求,我们推荐将采集偏好设置为 CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE(1),以优化 CPU 和内存的资源分配。
  • 如果用户希望本地预览视频比实际编码发送的视频清晰,可以将采集偏好设置为 CAPTURER_OUTPUT_PREFERENCE_PREVIEW(2)
注解
请在启动摄像头之前调用该方法,如 JoinChannelByKeyEnableVideoEnableLocalVideo 之前。
参数
cameraCaptureConfiguration摄像头采集偏好,详见 CameraCapturerConfiguration
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetRemoteUserPriority()

int agora_gaming_rtc.IRtcEngine.SetRemoteUserPriority ( uint  uid,
PRIORITY_TYPE  userPriority 
)

设置远端用户流的优先级。

设置远端用户的优先级。如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。

该方法可以与 SetRemoteSubscribeFallbackOption 搭配使用。如果开启了订阅流回退选项,弱网下 SDK 会优先保证高优先级用户收到的流的质量。

注解
目前 Agora Unity SDK 仅允许将一名远端用户设为高优先级。
参数
uid远端用户的 ID。
userPriority远端用户的需求优先级。详见: PRIORITY_TYPE
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetLogFileSize()

int agora_gaming_rtc.IRtcEngine.SetLogFileSize ( uint  fileSizeInKBytes)

设置日志文件大小。

设置 SDK 输出的日志文件大小,单位为 KB。Agora RTC SDK 设有 2 个日志文件,每个文件大小为 512 KB。如果你将 fileSizeInKByte 设置为 1024 KB, SDK 会最多输出 2 M 的日志文件。如果日志文件超出设置值,新的日志会覆盖之前的日志。

参数
fileSizeInKBytes指定 SDK 输出日志文件的内存大小,单位为 KB。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetExternalAudioSink()

int agora_gaming_rtc.IRtcEngine.SetExternalAudioSink ( bool  enabled,
int  sampleRate,
int  channels 
)

设置外部音频渲染。该方法适用于需要自行渲染音频的场景。开启外部音频渲染后,你可以通过调用 PullAudioFrame 方法拉取远端音频数据。app 可以对拉取到的原始音频数据进行处理后再渲染,获取想要的音频效果。

注解
开启外部音频渲染后,app 会无法从 OnPlaybackAudioFrameHandler 回调中获得数据。
参数
enabled
  • true: 开启外部音频渲染。
  • false: (默认)关闭外部音频渲染。
sampleRate外部音频渲染的采样率 (Hz),可设置为 16000,32000,44100 或 48000。
channels外部音频渲染的声道数,可设置为 1 或 2:
  • 1: 单声道。
  • 2: 双声道。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ RegisterLocalUserAccount()

int agora_gaming_rtc.IRtcEngine.RegisterLocalUserAccount ( string  appId,
string  userAccount 
)

注册本地用户 User Account。

该方法为本地用户注册一个 User Account。注册成功后,该 User Account 即可标识该本地用户的身份,用户可以使用它加入频道。成功注册 User Account 后,本地会触发 OnLocalUserRegisteredHandler 回调,告知本地用户的 UID 和 User Account。

该方法为可选。如果你希望用户使用 User Account 加入频道,可以选用以下两种方式:

  • 先调用 RegisterLocalUserAccount 方法注册 Account,再调用 JoinChannelWithUserAccount 方法加入频道
  • 直接调用 JoinChannelWithUserAccount 方法加入频道。

两种方式的区别在于,提前调用 RegisterLocalUserAccount,可以缩短使用 JoinChannelWithUserAccount 进入频道的时间。

注解
  • userAccount 不能为空,否则该方法不生效。
  • 请确保在该方法中设置的 userAccount 在频道中的唯一性。
  • 为保证通信质量,请确保频道内使用同一类型的数据标识用户身份。即同一频道内需要统一使用 UID 或 User Account。如果有用户通过 Agora Web SDK 加入频道,请确保 Web 加入的用户也是同样类型。
参数
appId你的项目在 Agora 控制台注册的 App ID。
userAccount用户 User Account。该参数为必填,最大不超过 255 字节,不可填 null。请确保注册的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a-z。
  • 26 个大写英文字母 A-Z。
  • 10 个数字 0-9。
  • 空格。
  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ JoinChannelWithUserAccount()

int agora_gaming_rtc.IRtcEngine.JoinChannelWithUserAccount ( string  token,
string  channelId,
string  userAccount 
)

使用 User Account 加入频道。

该方法允许本地用户使用 User Account 加入频道。成功加入频道后,会触发以下回调:

注解
为保证通信质量,请确保频道内使用同一类型的数据标识用户身份。即同一频道内需要统一使用 UID 或 User Account。如果有用户通过 Agora Web SDK 加入频道,请确保 Web 加入的用户也是同样类型。
参数
token在 app 服务器端生成的用于鉴权的 Token:
  • 安全要求不高:你可以使用控制台生成的临时 Token,详见 获取临时 Token
  • 安全要求高:将值设为你的服务端生成的正式 Token,详见 获取正式 Token
channelId标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a-z。
  • 26 个大写英文字母 A-Z。
  • 10 个数字 0-9。
  • 空格。
  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","。
userAccount用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null。请确保注册的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a-z。
  • 26 个大写英文字母 A-Z。
  • 10 个数字 0-9。
  • 空格。
  • "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", " {", "}", "|", "~", ","。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetUserInfoByUserAccount()

UserInfo agora_gaming_rtc.IRtcEngine.GetUserInfoByUserAccount ( string  account)

通过 User Account 获取用户信息。

远端用户加入频道后,SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 OnUserInfoUpdatedHandler 回调。收到这个回调后,你可以调用该方法,通过传入 User Account 获取包含了指定用户 UID 的 UserInfo 对象。

参数
account用户 User Account。该参数为必填。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ GetUserInfoByUid()

UserInfo agora_gaming_rtc.IRtcEngine.GetUserInfoByUid ( uint  uid)

通过 UID 获取用户信息。

远端用户加入频道后, SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 OnUserInfoUpdatedHandler 回调。收到这个回调后,你可以调用该方法,通过传入 UID 获取包含了指定用户 User Account 的 UserInfo 对象。

参数
uid用户 UID。该参数为必填。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetBeautyEffectOptions()

int agora_gaming_rtc.IRtcEngine.SetBeautyEffectOptions ( bool  enabled,
BeautyOptions  beautyOptions 
)

设置美颜效果选项。

开启本地美颜功能,并设置美颜效果选项。

注解
该方法仅适用于 Android 和 iOS 平台。
参数
enabled是否开启美颜功能:
  • true: 开启。
  • false: (默认)关闭。
beautyOptions美颜选项。详见: BeautyOptions
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartScreenCaptureByDisplayId()

int agora_gaming_rtc.IRtcEngine.StartScreenCaptureByDisplayId ( uint  displayId,
Rectangle  rectangle,
ScreenCaptureParameters  screenCaptureParameters 
)

通过屏幕 ID 共享屏幕。

共享一个屏幕或该屏幕的部分区域。用户需要在该方法中指定想要共享的屏幕 ID。

注解
该方法仅适用于 macOS 平台。
参数
displayId指定待共享的屏幕 ID。开发者需要通过该参数指定你要共享的那个屏幕。
rectangle(Optional) (可选)指定待共享区域相对于整个屏幕的位置。如不填,则表示共享整个屏幕。详见: Rectangle 。如果设置的共享区域超出了屏幕的边界,则只共享屏幕视窗内的内容;如果宽或高为 0,则共享整个屏幕。
screenCaptureParameters屏幕共享的编码参数配置。详见: ScreenCaptureParameters
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_INVALID_STATE: 屏幕共享状态无效。可能有屏幕或窗口正在共享中,请调用 StopScreenCapture 停止共享。
    • ERR_INVALID_ARGUMENT(-2): 传入的参数无效。

◆ StartScreenCaptureByScreenRect()

int agora_gaming_rtc.IRtcEngine.StartScreenCaptureByScreenRect ( Rectangle  screenRectangle,
Rectangle  regionRectangle,
ScreenCaptureParameters  screenCaptureParameters 
)

通过指定区域共享屏幕。

共享一个屏幕或该屏幕的部分区域。用户需要在该方法中指定想要共享的屏幕区域。

注解
该方法仅适用于 Windows 平台。
参数
screenRectangle指定待共享的屏幕相对于虚拟屏的位置。
regionRectangle(可选)指定待共享区域相对于整个屏幕屏幕的位置。如不填,则表示共享整个屏幕。详见: Rectangle 。如果设置的共享区域超出了屏幕的边界,则只共享屏幕内的内容;如果将 widthheight 设为 0 ,则共享整个屏幕。
screenCaptureParameters屏幕共享的编码参数配置。详见: ScreenCaptureParameters
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_INVALID_STATE: 屏幕共享状态无效。可能有屏幕或窗口正在共享中,请调用 StopScreenCapture 停止共享。
    • ERR_INVALID_ARGUMENT(-2): 传入的参数无效。

◆ SetScreenCaptureContentHint()

int agora_gaming_rtc.IRtcEngine.SetScreenCaptureContentHint ( VideoContentHint  videoContentHint)

设置屏幕共享内容类型。

设置屏幕共享的内容类型。Agora SDK 会根据不同的内容类型,使用不同的算法对共享效果进行优化。如果不调用该方法,SDK 会将屏幕共享的内容默认为 CONTENT_HINT_NONE(0),即无指定的内容类型。

注解
该方法仅适用于 Windows 和 macOS 平台。
参数
videoContentHint指定屏幕共享的内容类型。详见: VideoContentHint
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ UpdateScreenCaptureParameters()

int agora_gaming_rtc.IRtcEngine.UpdateScreenCaptureParameters ( ScreenCaptureParameters  screenCaptureParameters)

更新屏幕共享的编码参数配置。

注解
该方法仅适用于 Windows 和 macOS 平台。
参数
screenCaptureParameters屏幕共享的编码参数配置。详见: ScreenCaptureParameters
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_NOT_READY(-3): 如果当前没有共享的屏幕,会返回该错误码。

◆ UpdateScreenCaptureRegion()

int agora_gaming_rtc.IRtcEngine.UpdateScreenCaptureRegion ( Rectangle  rectangle)

更新屏幕共享区域。

注解
该方法仅适用于 Windows 和 macOS 平台。
参数
rectangle待共享区域相对于整个屏幕或窗口的位置,如不填,则表示共享整个屏幕或窗口。详见: Rectangle 。如果设置的共享区域超出了屏幕或窗口的边界,则只共享屏幕或窗口内的内容;如果将 widthheight 设为 0 ,则共享整个屏幕或窗口。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_NOT_READY(-3): 如果当前没有共享的屏幕,会返回该错误码。

◆ StopScreenCapture()

int agora_gaming_rtc.IRtcEngine.StopScreenCapture ( )

停止屏幕共享。

注解
该方法仅适用于 Windows 和 macOS 平台。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AddInjectStreamUrl()

int agora_gaming_rtc.IRtcEngine.AddInjectStreamUrl ( string  url,
InjectStreamConfig  streamConfig 
)

输入在线媒体流。

该方法将正在播放的音视频作为音视频源输入到正在进行的直播中。可主要应用于赛事直播、多人看视频互动等直播场景。调用该方法后,SDK 会在本地触发 OnStreamInjectedStatusHandler 回调,报告输入在线媒体流的状态;成功输入媒体流后,该音视频流会出现在频道中,频道内所有用户都会收到 OnUserJoinedHandler 回调,其中 uid666。该音视频流会出现在频道中。

注解
  • 请确保已开通旁路推流的功能,详见进阶功能《推流到 CDN》中的前提条件。
  • 该方法适用于 RTC SDK v2.9.1 及之后的版本。
  • 该方法仅适用于直播场景中的主播用户。
  • 频道内同一时间只允许输入一个在线媒体流。
参数
url添加到直播中的视频流 URL 地址。支持 RTMP、HLS、HTTP-FLV 协议传输。
  • 支持的音频编码格式:AAC;
  • 支持的视频编码格式:H.264(AVC)。
streamConfig所添加的视频流属性定义,详见: InjectStreamConfig
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。 -ERR_INVALID_ARGUMENT(-2): 输入的 URL 为空。请重新调用该方法,并确认输入的媒体流的 URL 有效。 -ERR_NOT_READY(-3): 用户没有加入频道。 -ERR_NOT_SUPPORTED(-4): 频道非直播场景。请调用 SetChannelProfile 并将频道设置为直播场景再调用该方法。 -ERR_NOT_INITIALIZED(-7): 引擎没有初始化。请确认调用该方法前已创建 IRtcEngine 对象并完成初始化。

◆ RemoveInjectStreamUrl()

int agora_gaming_rtc.IRtcEngine.RemoveInjectStreamUrl ( string  url)

删除输入的外部媒体流。

注解
成功删除外部视频源 URL 地址后会触发 OnUserOfflineHandler 回调,uid 为 666。
参数
url已输入、待删除的外部视频源 URL 地址。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ EnableLoopbackRecording()

int agora_gaming_rtc.IRtcEngine.EnableLoopbackRecording ( bool  enabled,
string  deviceName 
)

开启声卡采集。

启用声卡采集功能后,声卡播放的声音会被合到本地音频流中,从而可以发送到远端。

注解
  • 该方法仅适用于 macOS 和 Windows 平台。
  • macOS 系统默认声卡不支持采集功能,如需开启此功能需要 app 自己启用一个虚拟声卡,并将该虚拟声卡的名字作为 deviceName 传入 SDK。 Agora 测试并推荐 soundflower 作为虚拟声卡。
参数
enabled设置是否开启声卡采集:
  • true: 开启声卡采集。
  • false: (默认)关闭声卡采集。
deviceName声卡的设备名。默认设为 NULL,即使用当前声卡采集。如果用户使用虚拟声卡,如 “Soundflower”,可以将虚拟声卡名称 “Soundflower” 作为参数,SDK 会找到对应的虚拟声卡设备,并开始采集。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetAudioSessionOperationRestriction()

int agora_gaming_rtc.IRtcEngine.SetAudioSessionOperationRestriction ( AUDIO_SESSION_OPERATION_RESTRICTION  restriction)

设置 SDK 对 Audio Session 的控制权限

该接口可以在任意时候调用,可以在任意时候通过该方法把控制权交还给 SDK。

注解
  • 该方法仅适用于 iOS 平台。
  • 一旦调用该方法限制了 Agora SDK 对 Audio Session 的控制权限, SDK 将无法对 Audio Session 进行相关设置,而需要用户自己或第三方组件进行维护。
  • 该方法限制 Agora RTC SDK 对 Audio Session 的操作权限。在默认情况下,SDK 和 app 对 Audio Session 都有控制权,但某些场景下,app 会希望限制 Agora SDK 对 Audio Session 的控制权限,而使用其他应用或第三方组件对 Audio Session 进行操控。调用该方法可以实现该功能。
参数
restrictionAgora SDK 对 Audio Session 的控制权限,详见: AUDIO_SESSION_OPERATION_RESTRICTION 。该 restriction 为 Bit Mask,每个 Bit 对应一个权限。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartChannelMediaRelay()

int agora_gaming_rtc.IRtcEngine.StartChannelMediaRelay ( ChannelMediaRelayConfiguration  mediaRelayConfiguration)

开始跨频道媒体流转发。该方法可用于实现跨频道连麦等场景。

成功调用该方法后,SDK 会触发 OnChannelMediaRelayStateChangedHandlerOnChannelMediaRelayEventHandler 回调,并在回调中报告当前的跨频道媒体流转发状态和事件。

注解
  • 请在成功加入频道后调用该方法。
  • 该方法仅对直播场景下的主播有效。
  • 成功调用该方法后,若你想再次调用该方法,必须先调用 StopChannelMediaRelay 方法退出当前的转发状态。
参数
mediaRelayConfiguration跨频道媒体流转发参数配置。详见 ChannelMediaRelayConfiguration
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ UpdateChannelMediaRelay()

int agora_gaming_rtc.IRtcEngine.UpdateChannelMediaRelay ( ChannelMediaRelayConfiguration  mediaRelayConfiguration)

更新媒体流转发的频道。成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。

成功调用该方法后,SDK 会触发 OnChannelMediaRelayEventHandler 回调,并在回调中报告状态码 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL(7)

注解
请在 StartChannelMediaRelay 方法后调用该方法,更新媒体流转发的频道。
参数
mediaRelayConfiguration跨频道媒体流转发参数配置。详见 ChannelMediaRelayConfiguration
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StopChannelMediaRelay()

int agora_gaming_rtc.IRtcEngine.StopChannelMediaRelay ( )

停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道。

成功调用该方法后,SDK 会触发 OnChannelMediaRelayStateChangedHandler 回调。如果报告 RELAY_STATE_IDLE(0)RELAY_OK(0),则表示已停止转发媒体流。

注解
如果该方法调用不成功,SDK 会触发 OnChannelMediaRelayStateChangedHandler 回调,并报告状态码 RELAY_ERROR_SERVER_NO_RESPONSE(2)RELAY_ERROR_SERVER_CONNECTION_LOST(8)。你可以调用 LeaveChannel 方法离开频道,跨频道媒体流转发会自动停止。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SwitchChannel()

int agora_gaming_rtc.IRtcEngine.SwitchChannel ( string  token,
string  channelId 
)

快速切换直播频道。

当直播频道中的观众想从一个频道切换到另一个频道时,可以调用该方法,实现快速切换。

成功调用该方切换频道后,本地会先收到离开原频道的回调 OnLeaveChannelHandler,再收到成功加入新频道的回调 OnJoinChannelSuccessHandler

注解
该方法仅适用直播频道中的观众用户。
参数
token在服务器端生成的用于鉴权的 Token:
  • 安全要求不高:你可以使用控制台生成的临时 Token,详见获取临时 Token
  • 安全要求高:将值设为你的服务端生成的正式 Token,详见获取正式 Token
channelId标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a-z。
  • 26 个大写英文字母 A-Z。
  • 10 个数字 0-9。
  • 空格。
  • "!","#","$","%","&","(",")","+","-",":",";","<","=",".",">","?","@","[","]","^","_"," {", "}","|","~",","。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetMultiChannelWant()

int agora_gaming_rtc.IRtcEngine.SetMultiChannelWant ( bool  multiChannelWant)

设置是否开启多频道模式。

自从
v3.0.1

在多频道视频场景中,你需要调用该方法开启多频道模式,否则用户无法接收多个频道中的视频流。

注解
  • 该方法需要在加入频道前调用。
  • 在纯音频场景中,不需要调用该方法。
参数
multiChannelWant是否开启多频道模式:
  • true: 开启
  • false: (默认)不开启
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetMirrorApplied()

int agora_gaming_rtc.IRtcEngine.SetMirrorApplied ( bool  wheatherApply)

设置是否开启镜像模式。

注解
确保在 EnableVideoObserver 方法前调用该方法。
参数
wheatherApply设置是否开启本地和远端视频的镜像模式。
  • true: 开启。
  • false: (默认)不开启。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ SetInEarMonitoringVolume()

int agora_gaming_rtc.IRtcEngine.SetInEarMonitoringVolume ( int  volume)

设置耳返音量。

注解
该方法仅适用于 Android 和 iOS 平台。
参数
volume设置耳返音量,取值范围在 [0,100]。默认值为 100。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ StartScreenCaptureByWindowId()

int agora_gaming_rtc.IRtcEngine.StartScreenCaptureByWindowId ( int  windowId,
Rectangle  regionRect,
ScreenCaptureParameters  screenCaptureParameters 
)

通过窗口 ID 共享窗口。共享一个窗口或该窗口的部分区域。用户需要在该方法中指定想要共享的窗口 ID。

注解
该方法仅适用于 Windows 和 macOS 平台。

自 v3.0.1 起,该方法支持共享通用 Windows 平台。声网对主流的 Windows 应用进行了测试,结果如下:

系统版本 软件 软件版本 是否支持
win10 Chrome 76.0.3809.100
Office Word 18.1903.1152.0
Office Excel
Office PPT
WPS Word 11.1.0.9145
WPS Excel
WPS PPT
Media Player(系统自带) 全部
win8 Chrome 全部
Office Word 全部
Office Excel
Office PPT
WPS Word 11.1.0.9098
WPS Excel
WPS PPT
Media Player(系统自带) 全部
win7 Chrome 73.0.3683.103
Office Word 全部
Office Excel
Office PPT
WPS Word 11.1.0.9098
WPS Excel
WPS PPT
Media Player(系统自带) 全部
参数
windowId指定待共享的窗口 ID。关于如何获取窗口 ID。
regionRect(可选)指定待共享的区域相对于整个窗口的位置。如不填,则表示共享整个窗口。详见: Rectangle 。如果设置的共享区域超出了窗口的边界,则只共享窗口内的内容;如果宽或高为 0,则共享整个窗口。
screenCaptureParameters屏幕共享的编码参数配置。详见: ScreenCaptureParameters
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。
    • ERR_INVALID_STATE: 屏幕共享状态无效。可能有屏幕或窗口正在共享中,请调用 StopScreenCapture 停止共享。
    • ERR_INVALID_ARGUMENT(-2): 传入的参数无效。

◆ EnableInEarMonitoring()

int agora_gaming_rtc.IRtcEngine.EnableInEarMonitoring ( bool  enabled)

开启耳返功能。

注解
  • 该方法仅适用于 Android 和 iOS 平台。
  • 用户必须使用有线耳机才能听到耳返效果。
参数
enabled是否开启耳返功能:
  • true: 开启。
  • false: (默认)关闭。
返回
  • 0: 方法调用成功;
  • < 0: 方法调用失败。

◆ AdjustUserPlaybackSignalVolume()

int agora_gaming_rtc.IRtcEngine.AdjustUserPlaybackSignalVolume ( uint  uid,
int  volume 
)

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

自从
v3.0.1

加入频道后,你可以多次调用该方法调节不同远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。

注解
  • 请在加入频道后,调用该方法。
  • 该方法调节的是本地播放的指定远端用户混音后的音量。
  • 该方法每次只能调整一位远端用户在本地播放的音量。如需调整多位远端用户在本地播放的音量,则需多次调用该方法。
参数
uid远端用户 ID。
volume播放音量,取值范围为 [0,100]:
  • 0: 静音
  • 100: 原始音量
返回
  • 0: 方法调用成功
  • < 0: 方法调用失败

◆ CreateChannel()

AgoraChannel agora_gaming_rtc.IRtcEngine.CreateChannel ( string  channelId)

创建并获取一个 AgoraChannel 对象。

自从
v3.0.1

你可以多次调用该方法,创建多个 AgoraChannel 对象,再调用各 AgoraChannel 对象中的 JoinChannel 方法,实现同时加入多个频道。

加入多个频道后,你可以同时订阅各个频道的音、视频流;但是同一时间只能在一个频道发布一路音、视频流。

参数
channelId能标识频道的频道名,长度在 64 字节以内的字符。以下为支持的字符集范围(共 89 个字符):
  • 26 个小写英文字母 a~z;
  • 26 个大写英文字母 A~Z;
  • 10 个数字 0~9;
  • 空格;
  • "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、" {"、"}"、"|"、"~"、","。
注解
  • 该参数没有默认值,请确保对参数设值。
  • 请勿将该参数设为空字符 "",否则 SDK 会返回 -5(ERR_REFUSED)
返回
  • 方法调用成功,返回 AgoraChannel 对象
  • 方法调用失败,返回一个空指针 null
  • 如果将 channelId 设为空字符 "",SDK 会返回 -5(ERR_REFUSED)

◆ EnableFaceDetection()

int agora_gaming_rtc.IRtcEngine.EnableFaceDetection ( bool  enable)

开启/关闭本地人脸检测。仅适用于 Android 和 iOS。

自从
v3.0.1

开启本地人脸检测后,SDK 会触发 OnFacePositionChangedHandler 回调向你报告人脸检测的信息:

  • 摄像头采集的画面大小
  • 人脸在画面中的位置
  • 人脸距设备屏幕的距离
参数
enable是否开启人脸检测:
  • true:开启人脸检测
  • false:(默认)关闭人脸检测
返回
  • 0:方法调用成功
  • < 0:方法调用失败

◆ SetAudioMixingPitch()

int agora_gaming_rtc.IRtcEngine.SetAudioMixingPitch ( int  pitch)

调整本地播放的音乐文件的音调。

自从
v3.0.1

本地人声和播放的音乐文件混音时,调用该方法可以仅调节音乐文件的音调。

注解
该方法需在 StartAudioMixing 后调用。
参数
pitch按半音音阶调整本地播放的音乐文件的音调,默认值为 0,即不调整音调。取值范围为 [-12,12], 每相邻两个值的音高距离相差半音。取值的绝对值越大,音调升高或降低得越多。
返回
  • 0:方法调用成功
  • < 0:方法调用失败

◆ GetEngine() [1/2]

static IRtcEngine agora_gaming_rtc.IRtcEngine.GetEngine ( string  appId)
static

初始化 IRtcEngine

IRtcEngine 类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。

注解
  • 确保在调用其他 API 前先调用该方法初始化 IRtcEngine
  • 调用该方法和 GetEngine2 均能创建 IRtcEngine 实例。该方法与 GetEngine2 的区别在于,GetEngine2 支持在创建 IRtcEngine 实例时指定访问区域。
  • 目前 Agora Unity SDK 只支持每个 app 创建一个 IRtcEngine 实例。
参数
appIdAgora 为 app 开发者签发的 App ID,详见获取 App ID。使用同一个 App ID 的 app 才能进入同一个频道进行通话或直播。一个 App ID 只能用于创建一个 IRtcEngine。如需更换 App ID,必须先调用 Destroy 销毁当前 IRtcEngine,并在 Destroy 成功返回后,再调用该方法重新创建 IRtcEngine
返回
  • 方法调用成功,返回一个 IRtcEngine 对象。
  • 方法调用失败,返回错误码。
    • ERR_INVALID_APP_ID (101): App ID 无效。请更换有效的 App ID 重新初始化。建议你检查 App ID 的格式是否有效。

◆ GetEngine() [2/2]

static IRtcEngine agora_gaming_rtc.IRtcEngine.GetEngine ( RtcEngineConfig  engineConfig)
static

初始化 IRtcEngine

IRtcEngine 类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。

注解
  • 确保在调用其他 API 前先调用该方法初始化 IRtcEngine
  • 调用该方法和 GetEngine1 均能创建 IRtcEngine 实例。该方法与 GetEngine1 的区别在于,该方法支持在创建 IRtcEngine 实例时指定访问区域。
  • 目前 Agora Unity SDK 只支持每个 app 创建一个 IRtcEngine 实例。
参数
engineConfigIRtcEngine 实例的配置,详见 RtcEngineConfig
返回
  • 方法调用成功,返回一个 IRtcEngine 对象。
  • 方法调用失败,返回错误码。
    • ERR_INVALID_APP_ID (101): App ID 无效。请更换有效的 App ID 重新初始化。建议你检查 App ID 的格式是否有效。

◆ getEngine()

static IRtcEngine agora_gaming_rtc.IRtcEngine.getEngine ( string  appId)
static

初始化 IRtcEngine

弃用:
该方法已废弃,请改用 GetEngine
参数
appId项目的 App ID。
返回
IRtcEngine 实例。

◆ Destroy()

static void agora_gaming_rtc.IRtcEngine.Destroy ( )
static

销毁 IRtcEngine 实例。

该方法用于释放 Agora SDK 使用的所有对象资源。帮助偶尔使用音视频通话的 app 在无需通话时释放资源。一旦 app 调用了 Destroy 接口销毁创建的 IRtcEngine 实例,将无法调用 SDK 内的任何方法也不再会有任何回调产生。如需重启通话,请调用初始化方法 GetEngine 创建一个新的 IRtcEngine 实例。

注解
  • 该方法需要在子线程中操作。
  • 该方法为同步调用。 app 不得在 SDK 生成的回调中调用该方法,不然 SDK 只能等候该回调返回才能重新获取相应的对象资源造成死锁。