Public 成员函数 | |
abstract int | setChannelProfile (int profile) |
abstract int | setClientRole (int role) |
abstract int | setClientRole (int role, ClientRoleOptions options) |
abstract int | sendCustomReportMessage (String id, String category, String event, String label, int value) |
abstract int | joinChannel (String token, String channelName, String optionalInfo, int optionalUid) |
abstract int | joinChannel (String token, String channelName, String optionalInfo, int optionalUid, ChannelMediaOptions options) |
abstract int | switchChannel (String token, String channelName) |
abstract int | switchChannel (String token, String channelName, ChannelMediaOptions options) |
abstract int | leaveChannel () |
abstract int | setAVSyncSource (String channelName, int uid) |
abstract int | renewToken (String token) |
abstract int | registerLocalUserAccount (String appId, String userAccount) |
abstract int | joinChannelWithUserAccount (String token, String channelName, String userAccount) |
abstract int | joinChannelWithUserAccount (String token, String channelName, String userAccount, ChannelMediaOptions options) |
abstract int | setCloudProxy (int proxyType) |
abstract int | getUserInfoByUserAccount (String userAccount, UserInfo userInfo) |
abstract int | getUserInfoByUid (int uid, UserInfo userInfo) |
abstract int | enableWebSdkInteroperability (boolean enabled) |
abstract int | getConnectionState () |
abstract int | enableRemoteSuperResolution (int uid, boolean enable) |
abstract int | enableRemoteSuperResolution (boolean enable, int mode, int uid) |
abstract int | enableAudio () |
abstract int | disableAudio () |
abstract int | pauseAudio () |
abstract int | resumeAudio () |
abstract int | setAudioProfile (int profile, int scenario) |
abstract int | setHighQualityAudioParameters (boolean fullband, boolean stereo, boolean fullBitrate) |
abstract int | adjustRecordingSignalVolume (int volume) |
abstract int | adjustPlaybackSignalVolume (int volume) |
abstract int | adjustUserPlaybackSignalVolume (int uid, int volume) |
abstract int | enableAudioVolumeIndication (int interval, int smooth, boolean report_vad) |
abstract int | enableLocalVoicePitchCallback (int interval) |
abstract int | enableAudioQualityIndication (boolean enabled) |
abstract int | enableLocalAudio (boolean enabled) |
abstract int | muteLocalAudioStream (boolean muted) |
abstract int | muteRemoteAudioStream (int uid, boolean muted) |
abstract int | muteAllRemoteAudioStreams (boolean muted) |
abstract int | setDefaultMuteAllRemoteAudioStreams (boolean muted) |
abstract int | enableVideo () |
abstract int | disableVideo () |
abstract int | setVideoProfile (int profile, boolean swapWidthAndHeight) |
abstract int | setVideoProfile (int width, int height, int frameRate, int bitrate) |
abstract int | setVideoEncoderConfiguration (VideoEncoderConfiguration config) |
abstract int | setCameraCapturerConfiguration (CameraCapturerConfiguration config) |
abstract int | setupLocalVideo (VideoCanvas local) |
abstract int | setupRemoteVideo (VideoCanvas remote) |
abstract int | setLocalRenderMode (int renderMode) |
abstract int | setLocalRenderMode (int renderMode, int mirrorMode) |
abstract int | setRemoteRenderMode (int uid, int renderMode) |
abstract int | setRemoteRenderMode (int uid, int renderMode, int mirrorMode) |
abstract int | startPreview () |
abstract int | stopPreview () |
abstract int | enableLocalVideo (boolean enabled) |
abstract int | muteLocalVideoStream (boolean muted) |
abstract int | muteRemoteVideoStream (int uid, boolean muted) |
abstract int | muteAllRemoteVideoStreams (boolean muted) |
abstract int | setDefaultMuteAllRemoteVideoStreams (boolean muted) |
abstract int | setBeautyEffectOptions (boolean enabled, BeautyOptions options) |
abstract int | setLowlightEnhanceOptions (boolean enabled, LowLightEnhanceOptions options) |
abstract int | setVideoDenoiserOptions (boolean enabled, VideoDenoiserOptions options) |
abstract int | setColorEnhanceOptions (boolean enabled, ColorEnhanceOptions options) |
abstract int | enableVirtualBackground (boolean enabled, VirtualBackgroundSource backgroundSource) |
abstract int | setDefaultAudioRoutetoSpeakerphone (boolean defaultToSpeaker) |
abstract int | setEnableSpeakerphone (boolean enabled) |
abstract boolean | isSpeakerphoneEnabled () |
abstract int | enableInEarMonitoring (boolean enabled) |
abstract int | setInEarMonitoringVolume (int volume) |
abstract int | useExternalAudioDevice () |
abstract int | setLocalVoicePitch (double pitch) |
abstract int | setLocalVoiceEqualization (int bandFrequency, int bandGain) |
abstract int | setLocalVoiceReverb (int reverbKey, int value) |
abstract int | setLocalVoiceChanger (int voiceChanger) |
abstract int | setLocalVoiceReverbPreset (int preset) |
abstract int | setAudioEffectPreset (int preset) |
abstract int | setVoiceBeautifierPreset (int preset) |
abstract int | setVoiceConversionPreset (int preset) |
abstract int | setAudioEffectParameters (int preset, int param1, int param2) |
abstract int | setVoiceBeautifierParameters (int preset, int param1, int param2) |
abstract int | enableDeepLearningDenoise (boolean enabled) |
abstract int | enableSoundPositionIndication (boolean enabled) |
abstract int | setRemoteVoicePosition (int uid, double pan, double gain) |
abstract int | startAudioMixing (String filePath, boolean loopback, boolean replace, int cycle) |
abstract int | selectAudioTrack (int audioIndex) |
abstract int | getAudioTrackCount () |
abstract int | setAudioMixingDualMonoMode (int mode) |
abstract int | startAudioMixing (String filePath, boolean loopback, boolean replace, int cycle, int startPos) |
abstract int | setAudioMixingPlaybackSpeed (int speed) |
abstract int | stopAudioMixing () |
abstract int | pauseAudioMixing () |
abstract int | resumeAudioMixing () |
abstract int | adjustAudioMixingVolume (int volume) |
abstract int | adjustAudioMixingPlayoutVolume (int volume) |
abstract int | adjustAudioMixingPublishVolume (int volume) |
abstract int | getAudioMixingPlayoutVolume () |
abstract int | getAudioMixingPublishVolume () |
abstract int | getAudioMixingDuration () |
abstract int | getAudioMixingCurrentPosition () |
abstract int | setAudioMixingPosition (int pos) |
abstract int | setAudioMixingPitch (int pitch) |
abstract IAudioEffectManager | getAudioEffectManager () |
abstract int | getAudioFileInfo (String filePath) |
abstract int | startAudioRecording (String filePath, int quality) |
abstract int | startAudioRecording (String filePath, int sampleRate, int quality) |
abstract int | startAudioRecording (AudioRecordingConfiguration config) |
abstract int | stopAudioRecording () |
abstract int | startEchoTest () |
abstract int | startEchoTest (int intervalInSeconds) |
abstract int | startEchoTest (EchoTestConfiguration config) |
abstract int | stopEchoTest () |
abstract int | enableLastmileTest () |
abstract int | disableLastmileTest () |
abstract int | startLastmileProbeTest (LastmileProbeConfig config) |
abstract int | stopLastmileProbeTest () |
abstract int | setVideoSource (IVideoSource source) |
abstract int | setLocalVideoRenderer (IVideoSink render) |
abstract int | setRemoteVideoRenderer (int uid, IVideoSink render) |
abstract int | setExternalAudioSink (boolean enabled, int sampleRate, int channels) |
abstract int | pullPlaybackAudioFrame (byte[] data, int lengthInByte) |
abstract int | setExternalAudioSource (boolean enabled, int sampleRate, int channels) |
abstract int | pushExternalAudioFrame (byte[] data, long timestamp) |
abstract int | pushExternalAudioFrame (byte[] data, long timestamp, int sampleRate, int channels, int bytesPerSample, int sourcePos) |
abstract int | setExternalAudioSourceVolume (int sourcePos, int volume) |
abstract void | setExternalVideoSource (boolean enable, boolean useTexture, boolean pushMode) |
abstract boolean | pushExternalVideoFrame (AgoraVideoFrame frame) |
abstract boolean | isTextureEncodeSupported () |
abstract int | registerAudioFrameObserver (IAudioFrameObserver observer) |
abstract int | registerVideoEncodedFrameObserver (IVideoEncodedFrameObserver observer) |
abstract int | registerVideoFrameObserver (IVideoFrameObserver observer) |
abstract int | setRecordingAudioFrameParameters (int sampleRate, int channel, int mode, int samplesPerCall) |
abstract int | setPlaybackAudioFrameParameters (int sampleRate, int channel, int mode, int samplesPerCall) |
abstract int | setMixedAudioFrameParameters (int sampleRate, int samplesPerCall) |
abstract int | addVideoWatermark (AgoraImage watermark) |
abstract int | addVideoWatermark (String watermarkUrl, WatermarkOptions options) |
abstract int | clearVideoWatermarks () |
abstract int | setRemoteUserPriority (int uid, int userPriority) |
abstract int | setLocalPublishFallbackOption (int option) |
abstract int | setRemoteSubscribeFallbackOption (int option) |
abstract int | enableDualStreamMode (boolean enabled) |
abstract int | setRemoteVideoStreamType (int uid, int streamType) |
abstract int | setRemoteDefaultVideoStreamType (int streamType) |
abstract int | enableWirelessAccelerate (boolean enabled) |
abstract int | setEncryptionSecret (String secret) |
abstract int | setEncryptionMode (String encryptionMode) |
abstract int | enableEncryption (boolean enabled, EncryptionConfig config) |
abstract int | addPublishStreamUrl (String url, boolean transcodingEnabled) |
abstract int | removePublishStreamUrl (String url) |
abstract int | setLiveTranscoding (LiveTranscoding transcoding) |
abstract int | startRtmpStreamWithoutTranscoding (String url) |
abstract int | startRtmpStreamWithTranscoding (String url, LiveTranscoding transcoding) |
abstract int | updateRtmpTranscoding (LiveTranscoding transcoding) |
abstract int | stopRtmpStream (String url) |
abstract int | createDataStream (boolean reliable, boolean ordered) |
abstract int | createDataStream (DataStreamConfig config) |
abstract int | sendStreamMessage (int streamId, byte[] message) |
abstract int | setVideoQualityParameters (boolean preferFrameRateOverImageQuality) |
abstract int | setLocalVideoMirrorMode (int mode) |
abstract int | switchCamera () |
abstract boolean | isCameraZoomSupported () |
abstract boolean | isCameraTorchSupported () |
abstract boolean | isCameraFocusSupported () |
abstract boolean | isCameraExposurePositionSupported () |
abstract boolean | isCameraAutoFocusFaceModeSupported () |
abstract int | setCameraZoomFactor (float factor) |
abstract float | getCameraMaxZoomFactor () |
abstract int | setCameraFocusPositionInPreview (float positionX, float positionY) |
abstract int | setCameraExposurePosition (float positionXinView, float positionYinView) |
abstract int | enableFaceDetection (boolean enable) |
abstract int | setCameraTorchOn (boolean isOn) |
abstract int | setCameraAutoFocusFaceModeEnabled (boolean enabled) |
abstract String | getCallId () |
abstract int | rate (String callId, int rating, String description) |
abstract int | complain (String callId, String description) |
abstract int | setLogFile (String filePath) |
abstract int | setLogFilter (int filter) |
abstract int | setLogFileSize (int fileSizeInKBytes) |
abstract long | getNativeHandle () |
void | addHandler (IRtcEngineEventHandler handler) |
void | removeHandler (IRtcEngineEventHandler handler) |
abstract boolean | enableHighPerfWifiMode (boolean enable) |
abstract void | monitorHeadsetEvent (boolean monitor) |
abstract void | monitorBluetoothHeadsetEvent (boolean monitor) |
abstract void | setPreferHeadset (boolean enabled) |
abstract int | setParameters (String parameters) |
abstract String | getParameter (String parameter, String args) |
abstract int | registerMediaMetadataObserver (IMetadataObserver observer, int type) |
abstract int | startChannelMediaRelay (ChannelMediaRelayConfiguration channelMediaRelayConfiguration) |
abstract int | stopChannelMediaRelay () |
abstract int | updateChannelMediaRelay (ChannelMediaRelayConfiguration channelMediaRelayConfiguration) |
abstract int | pauseAllChannelMediaRelay () |
abstract int | resumeAllChannelMediaRelay () |
abstract RtcChannel | createRtcChannel (String channelId) |
abstract int | setLocalAccessPoint (LocalAccessPointConfiguration config) |
abstract int | takeSnapshot (String channel, int uid, String filePath) |
abstract int | enableContentInspect (boolean enabled, ContentInspectConfig config) |
abstract int | startScreenCapture (ScreenCaptureParameters screenCaptureParameters) |
abstract int | stopScreenCapture () |
abstract int | updateScreenCaptureParameters (boolean captureVideo, boolean captureAudio, ScreenCaptureParameters.VideoCaptureParameters videoCaptureParameters) |
静态 Public 成员函数 | |
static synchronized RtcEngine | create (Context context, String appId, IRtcEngineEventHandler handler) throws Exception |
static synchronized RtcEngine | create (RtcEngineConfig config) throws Exception |
static synchronized void | destroy () |
static SurfaceView | CreateRendererView (Context context) |
static TextureView | CreateTextureView (Context context) |
static int | getRecommendedEncoderType () |
static String | getSdkVersion () |
static String | getMediaEngineVersion () |
static String | getErrorDescription (int error) |
static void | setAgoraLibPath (String path) |
|
static |
创建 RtcEngine
实例。
RtcEngine
类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。
context | 安卓活动 (Android Activity) 的上下文。 |
appId | 声网为 app 开发者签发的 App ID,详见获取 App ID。使用同一个 App ID 的 app 才能进入同一个频道进行通话或直播。一个 App ID 只能用于创建一个 RtcEngine 。如需更换 App ID,必须先调用 destroy 销毁当前 RtcEngine ,并在 destroy 成功返回后,再调用 create 重新创建 RtcEngine 。 |
handler | io.agora.rtc.IRtcEngineEventHandler 是一个提供了缺省实现的抽象类,SDK 通过该抽象类向 app 报告 SDK 运行时的各种事件 |
RtcEngine
对象。Exception | 调用该方法时可能会发生的异常说明。 |
|
static |
创建 RtcEngine
实例。
RtcEngine
类的所有接口函数,如无特殊说明,都是异步调用,对接口的调用建议在同一个线程进行。
config | RtcEngine 实例的配置,详见 RtcEngineConfig 。 |
RtcEngine
对象。Exception | 调用该方法时可能会发生的异常说明。 |
|
static |
|
abstract |
设置频道场景。
SDK 初始化后默认的频道场景为通信场景,你可以调用该方法设置声网频道的使用场景。SDK 会针对不同的使用场景采用不同的优化策略,如通信场景偏好流畅,直播场景偏好画质。
setDefaultAudioRoutetoSpeakerphone
和 setVideoEncoderConfiguration
中的说明。profile | 频道使用场景:
|
|
abstract |
设置直播场景下的用户角色。
调用 setChannelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING)
后,SDK 会默认设置用户角色为观众,你可以调用 setClientRole
设置用户角色为主播。
该方法在加入频道前后均可调用。如果你在加入频道后调用该方法切换用户角色,调用成功后,SDK 会自动进行如下操作:
muteLocalAudioStream
和 muteLocalVideoStream
修改发布状态。onClientRoleChanged
或 onClientRoleChangeFailed
onUserJoined
或 onUserOffline
(USER_OFFLINE_BECOME_AUDIENCE)。setChannelProfile
中 profile
设为 CHANNEL_PROFILE_LIVE_BROADCASTING
)。role | 直播场景里的用户角色:
|
ERR_OK
): 方法调用成功。ERR_FAILED
): 一般性的错误(未明确归类)。ERR_INVALID_ARGUMENT
): 参数无效。ERR_REFUSED
): 调用被拒绝。在多频道场景中,如果你已在一个频道中进行如下设置,则用户在另一个频道内切换角色为主播时会返回该错误码:options
参数的 joinChannel
,并使用默认设置 publishLocalAudio = true
或 publishLocalVideo = true
。setClientRole
,并设置用户角色为主播。muteLocalAudioStream(false)
或 muteLocalVideoStream(false)
。ERR_NOT_INITIALIZED
): SDK 尚未初始化。
|
abstract |
设置直播场景下的用户角色。
调用 setChannelProfile(CHANNEL_PROFILE_LIVE_BROADCASTING)
后,SDK 会默认设置用户角色为观众,你可以调用 setClientRole
设置用户角色为主播。
该方法在加入频道前后均可调用。如果你在加入频道后调用该方法切换用户角色,调用成功后,SDK 会自动进行如下操作:
muteLocalAudioStream
和 muteLocalVideoStream
修改发布状态。onClientRoleChanged
或 onClientRoleChangeFailed
。onUserJoined
或 onUserOffline
(USER_OFFLINE_BECOME_AUDIENCE)。setChannelProfile
中 profile
设为 CHANNEL_PROFILE_LIVE_BROADCASTING
)。setClientRole1
的区别在于,该方法还支持设置用户级别。示例代码
role | 直播场景里的用户角色:
|
options | 用户具体设置,包含用户级别,详见 ClientRoleOptions 。 |
ERR_OK
): 方法调用成功。ERR_FAILED
): 一般性的错误(未明确归类)。ERR_INVALID_ARGUMENT
): 参数无效。ERR_REFUSED
): 调用被拒绝。在多频道场景中,如果你已在一个频道中进行如下设置,则用户在另一个频道内切换角色为主播时会返回该错误码:options
参数的 joinChannel
,并使用默认设置 publishLocalAudio = true
或 publishLocalVideo = true
。setClientRole
,并设置用户角色为主播。muteLocalAudioStream(false)
或 muteLocalVideoStream(false)
。ERR_NOT_INITIALIZED
): SDK 尚未初始化。
|
abstract |
声网提供自定义数据上报和分析服务。
该服务当前处于免费内测期。内测期提供的能力为 6 秒内最多上报 10 条数据,每条自定义数据不能超过 256 字节,每个字符串不能超过 100 字节。如需试用该服务,请联系 sales@agora.io 开通并商定自定义数据格式。
|
abstract |
加入频道。
该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 leaveChannel
退出当前通话,才能进入下一个频道。
成功调用该方加入频道后,本地会触发 onJoinChannelSuccess
回调;通信场景下的用户和直播场景下的主播加入频道后,远端会触发 onUserJoined
回调。
在网络状况不理想的情况下,客户端可能会与声网的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 onRejoinChannelSuccess
回调。
用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
请确保用于生成 Token 的 App ID 和 create
方法创建 RtcEngine
对象时用的 App ID 一致。
token | 在 app 服务器端生成的用于鉴权的 Token。详见使用 Token 鉴权。 |
channelName | 标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
|
optionalInfo | (非必选项)预留参数。 |
optionalUid | (非必选项)用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。如果不指定(即设为 0),SDK 会自动分配一个,并在 onJoinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。optionalUid 在 SDK 内部用 32 位无符号整数表示,由于 Java 不支持无符号整数,optionalUid 被当成 32 位有符号整数处理,对于过大的整数,Java 会表示为负数,如有需要可以用 (uid&0xffffffffL) 转换成 64 位整数。频道内每个用户的 UID 必须是唯一的。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。 |
RtcChannel
频道。RtcChannel
加入了一个频道,并在该 RtcChannel
频道中发布了音视频流。由于通过 RtcEngine
加入频道会默认发布音视频流,而 SDK 不支持同时在两个频道发布音视频流,因此会报错。RtcEngine
对象并完成初始化。RtcEngine
频道, 当已经加入 RtcEngine
频道的用户使用有效的频道名再次调用 RtcEngine
类中的加入频道方法时,会返回此错误码。
|
abstract |
加入频道并设置是否自动订阅音频或视频流。
该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 leaveChannel
退出当前通话,才能进入下一个频道。
成功调用该方法加入频道后,本地会触发 onJoinChannelSuccess
回调;通信场景下的用户和直播场景下的主播加入频道后,远端会触发 onUserJoined
回调。
在网络状况不理想的情况下,客户端可能会与声网的服务器失去连接;SDK 会自动尝试重连,重连成功后,本地会触发 onRejoinChannelSuccess
回调。
joinChannel
[1/2],该方法加了 options
参数,用于配置用户加入频道时是否自动订阅频道内所有远端音视频流。默认情况下,用户订阅频道内所有其他用户的音频流和视频流,因此会产生用量并影响计费。如果想取消订阅,可以通过设置 options
参数或相应的 mute
方法实现。create
方法创建 RtcEngine
对象时用的 App ID 一致。token | 在 app 服务器端生成的用于鉴权的 Token。详见使用 Token 鉴权。 |
channelName | 标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
|
optionalInfo | (非必选项)预留参数。 |
optionalUid | (非必选项)用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。如果不指定(即设为 0),SDK 会自动分配一个,并在 onJoinChannelSuccess 回调方法中返回,App 需自行维护该返回值,SDK 不对该返回值进行维护。optionalUid 在 SDK 内部用 32 位无符号整数表示,由于 Java 不支持无符号整数,optionalUid 被当成 32 位有符号整数处理,对于过大的整数,Java 会表示为负数,如有需要可以用 (uid&0xffffffffL) 转换成 64 位整数。频道内每个用户的 UID 必须是唯一的。如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。 |
options | 频道媒体设置选项:ChannelMediaOptions . |
RtcChannel
频道。RtcChannel
加入了一个频道,并在该 RtcChannel
频道中发布了音视频流。RtcEngine
对象并完成初始化。RtcEngine
频道, 当已经加入 RtcEngine
频道的用户使用有效的频道名再次调用 RtcEngine
类中的加入频道方法时,会返回此错误码。
|
abstract |
快速切换直播频道。
当直播频道中的观众想从一个频道切换到另一个频道时,可以调用该方法,实现快速切换。
成功调用该方切换频道后,本地会先收到离开原频道的回调 onLeaveChannel
,再收到成功加入新频道的回调 onJoinChannelSuccess
。
用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
token | 在 app 服务端生成的用于鉴权的 Token。详见使用 Token 鉴权。 |
channelName | 标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围(共 89 个字符):
|
|
abstract |
快速切换直播频道,并设置是否自动订阅音频流或视频流。
当直播频道中的观众想从一个频道切换到另一个频道时,可以调用该方法,实现快速切换。
成功调用该方法切换频道后,本地会先收到离开原频道的回调 onLeaveChannel
,再收到成功加入新频道的回调 onJoinChannelSuccess
。
switchChannel
[1/2] 的区别在于,该方法加了 options
参数,用于配置终端用户在切换到新的频道时是否自动订阅频道内所有远端音视频流。默认情况下,用户订阅新的频道内所有其他用户的音频流和视频流,因此会产生用量并影响计费。如果想取消订阅,可以通过设置 options
参数或相应的 mute
方法实现。token | 在 app 服务端生成的用于鉴权的 Token。详见使用 Token 鉴权。 |
channelName | 标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围(共 89 个字符):
|
options | 频道媒体设置选项:ChannelMediaOptions . |
|
abstract |
离开频道。
离开频道,即挂断或退出通话。
调用 joinChannel
后,必须调用 leaveChannel
结束通话,否则无法开始下一次通话。
不管当前是否在通话中,都可以调用 leaveChannel
,没有副作用。
该方法会把会话相关的所有资源释放掉。该方法是异步操作,调用返回时并没有真正退出频道。
成功调用该方法离开频道后,本地会触发 onLeaveChannel
回调;通信场景下的用户和直播场景下的主播离开频道后,远端会触发 onUserOffline
回调。
leaveChannel
后立即调用 destroy
方法,SDK 将无法触发 onLeaveChannel
回调。leaveChannel
方法, SDK 将自动调用 removePublishStreamUrl
方法。
|
abstract |
设置发流端音画同步。
同一用户可能使用两个设备分别发送音频流和视频流,为保证接收端听到和看到的音频和视频的时间同步性, 你可以在视频发送端调用该方法,并传入音频发送端的频道名、用户 ID。SDK 会以发送的音频流的时间戳为基准进行自动调节 发送的视频流,以保证即使在两个发送端的上行网络情况不一致(如分别使用 Wi-Fi 和 4G 网络)的情况下, 也能让接收到的音视频具有时间同步性。
channelName | 标识音频发送端所在频道的频道名。 |
uid | 音频发送端的用户 ID。 |
|
abstract |
更新 Token。
该方法用于更新 Token。如果启用了 Token 机制,过一段时间后使用的 Token 会失效。以下两种情况下,app 应重新获取 Token,然后调用 renewToken
更新 Token,否则 SDK 无法和服务器建立连接:
onTokenPrivilegeWillExpire
回调时。onConnectionStateChanged
回调报告 CONNECTION_CHANGED_TOKEN_EXPIRED(9)
时。token | 新的 Token。 |
|
abstract |
注册本地用户 User Account。
该方法为本地用户注册一个 User Account。注册成功后,该 User Account 即可标识该本地用户的身份,用户可以使用它加入频道。
成功注册 User Account 后,本地会触发 onLocalUserRegistered
回调,告知本地用户的 UID 和 User Account。
该方法为可选。如果你希望用户使用 User Account 加入频道,可以选用以下两种方式:
registerLocalUserAccount
方法注册 Account,再调用 joinChannelWithUserAccount
方法加入频道joinChannelWithUserAccount
方法加入频道两种方式的区别在于,提前调用 registerLocalUserAccount
,可以缩短使用 joinChannelWithUserAccount
进入频道的时间。
userAccount
不能为空,否则该方法不生效。appId | 你的项目在声网控制台注册的 App ID |
userAccount | 用户 User Account。该参数为必填,最大不超过 255 字节,不可填 null。请确保注册的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):
|
|
abstract |
使用 User Account 加入频道。
该方法允许本地用户使用 User Account 加入频道。成功加入频道后,会触发以下回调:
onLocalUserRegistered
和 onJoinChannelSuccess
回调onUserJoined
和 onUserInfoUpdated
回调用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
token | 在 app 服务端生成的用于鉴权的 Token。详见使用 Token 鉴权。 |
channelName | 标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围(共 89 个字符):
|
userAccount | 用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null。请确保加入频道的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):
|
ERR_INVALID_ARGUMENT(-2)
。ERR_NOT_READY(-3)
。ERR_REFUSED(-5)
。ERR_JOIN_CHANNEL_REJECTED(-17)
:加入频道被拒绝。由于 SDK 仅支持用户同一时间加入一个 RtcEngine
频道, 当已经加入 RtcEngine
频道的用户使用有效的频道名再次调用 RtcEngine
类中的加入频道方法时,会返回此错误码。
|
abstract |
使用 User Account 加入频道并设置是否发布或自动订阅音频或视频流
该方法允许本地用户使用 User Account 加入频道。 成功加入频道后,会触发以下回调:
onLocalUserRegistered
和 onJoinChannelSuccess
回调onUserJoined
和 onUserInfoUpdated
回调。joinChannelWithUserAccount
[1/2],该方法加了 options
参数,用于配置用户加入频道时是否发布或自动订阅音视频流。 默认情况下,用户发布本地音视频流并自动订阅频道内所有其他用户的音视频流。订阅音视频流会产生用量并影响计费。 如果想取消订阅,可以通过设置 options
参数或相应的 mute
方法实现。token | 在 app 服务端生成的用于鉴权的 Token。详见使用 Token 鉴权。 |
channelName | 标识频道的频道名,最大不超过 64 字节。以下为支持的字符集范围(共 89 个字符):
|
userAccount | 用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null。请确保加入频道的 User Account 的唯一性。以下为支持的字符集范围(共 89 个字符):
|
options | 频道媒体设置选项:ChannelMediaOptions . |
ERR_INVALID_ARGUMENT(-2)
ERR_NOT_READY(-3)
ERR_REFUSED(-5)
ERR_JOIN_CHANNEL_REJECTED(-17)
:加入频道被拒绝。由于 SDK 仅支持用户同一时间加入一个 RtcEngine
频道, 当已经加入 RtcEngine
频道的用户使用有效的频道名再次调用 RtcEngine
类中的加入频道方法时,会返回此错误码。
|
abstract |
设置声网云代理服务。
当用户的网络访问受到防火墙限制时,你需要将声网提供的 IP 和端口号添加到防火墙白名单,然后调用该方法开启云代理,并通过 proxyType
参数设置云代理类型。
成功连接云代理后,SDK 会触发 onConnectionStateChanged
(CONNECTION_STATE_CONNECTING, CONNECTION_CHANGED_SETTING_PROXY_SERVER)
回调。
自 v3.6.2 起,当用户调用该方法并成功加入频道后,SDK 会触发 onProxyConnected
回调,报告用户 ID、连接的代理类型和用户调用 joinChannel
到 SDK 触发该回调的经过的时间等。
如果你想关闭已设置的云代理,请调用 setCloudProxy(NONE_PROXY)
。如果你想更改已设置的云代理类型,请先调用 setCloudProxy(NONE_PROXY)
, 再调用 setCloudProxy
并传入你期望的 proxyType
值。
startAudioMixing
方法时无法播放 HTTP 协议的在线音频文件。proxyType | 云代理类型。该参数为必填参数,如果你不赋值,SDK 会报错。
|
-2(ERR_INVALID_ARGUMENT)
: 传入的参数无效。-7(ERR_NOT_INITIALIZED)
: SDK 尚未初始化。
|
abstract |
通过 User Account 获取用户信息。
远端用户加入频道后,SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表, 并在本地触发 onUserInfoUpdated
回调。收到这个回调后,你可以调用该方法,通过传入 User Account 获取包含了指定用户 UID 的 UserInfo 对象。
userAccount | 用户 User Account。该参数为必填。 |
userInfo | [in/out] 标识用户信息的 UserInfo 对象,详见 UserInfo 类
|
|
abstract |
通过 UID 获取用户信息。
远端用户加入频道后, SDK 会获取到该远端用户的 UID 和 User Account,然后缓存一个包含了远端用户 UID 和 User Account 的 Mapping 表,并在本地触发 onUserInfoUpdated
回调。 收到这个回调后,你可以调用该方法,通过传入 UID 获取包含了指定用户 User Account 的 UserInfo 对象。
uid | 用户 ID。该参数为必填。 |
userInfo | [in/out] 标识用户信息的 UserInfo 对象,详见 UserInfo 类
|
|
abstract |
打开与 Web SDK 的互通(仅在直播下适用)。
该方法打开或关闭与 Web SDK 的互通。如果有用户通过 Web SDK 加入频道,请确保调用该方法,否则 Web 端用户看 Native 端的画面会是黑屏。
该方法仅在直播场景下适用,通信场景下默认互通是打开的。
enabled | 是否打开与 Web SDK 的互通:
|
|
abstract |
获取当前网络连接状态。
CONNECTION_STATE_DISCONNECTED(1)
: 网络连接断开。CONNECTION_STATE_CONNECTING(2)
: 建立网络连接中。CONNECTION_STATE_CONNECTED(3)
: 网络已连接。CONNECTION_STATE_RECONNECTING(4)
: 重新建立网络连接中。CONNECTION_STATE_FAILED(5)
: 网络连接失败。
|
abstract |
开启/关闭远端视频超分辨率。(beta 功能)
enableRemoteSuperResolution
[2/2] 方法。该功能可以有效地提升本地用户看到的远端视频画面的分辨率。远端用户视频的原始分辨率为 a × b,开启该功能后,本地设备会以 2a × 2b 的分辨率显示该远端视频。
调用该方法后,SDK 会触发 onUserSuperResolutionEnabled
回调报告超分辨率是否成功开启。
libagora_super_resolution_extension.so
动态库集成到项目中。uid | 远端用户 ID。 |
enable | 是否对远端视频开启超分辨率:
|
ERR_MODULE_NOT_FOUND
):未集成超分辨率动态库。
|
abstract |
开启/关闭远端视频超分辨率。(beta 功能)
该功能可以有效地提升用户看到的远端视频画面的分辨率,即对接收到的某个远端用户的视频宽和高均扩大为 2 倍像素。
调用该方法后,SDK 会触发 onUserSuperResolutionEnabled
回调报告超分辨率是否成功开启。
libagora_super_resolution_extension.so
动态库集成到项目中。enable | 是否对远端视频开启超级分辨率:
|
mode | 超分辨率的模式:
|
uid | 远端用户 ID。该参数仅在 mode 为 SR_MODE_MANUAL(0) 时生效。 |
ERR_MODULE_NOT_FOUND
): 尚未集成超分辨率动态库。
|
abstract |
启用音频模块(默认为开启状态)。
leaveChannel
后仍然有效。enableLocalAudio
:是否启动麦克风采集并创建本地音频流。muteLocalAudioStream
:是否发布本地音频流。muteRemoteAudioStream
:是否接收并播放远端音频流。muteAllRemoteAudioStreams
:是否接收并播放所有远端音频流。
|
abstract |
关闭音频模块。
leaveChannel
后仍然有效。enableLocalAudio
:是否启动麦克风采集并创建本地音频流。muteLocalAudioStream
:是否发布本地音频流。muteRemoteAudioStream
:是否接收并播放远端音频流。muteAllRemoteAudioStreams
:是否接收并播放所有远端音频流。
|
abstract |
|
abstract |
|
abstract |
设置音频编码配置。
joinChannel
之前设置好,joinChannel
后设置不生效。profile
设置为 MUSIC_HIGH_QUALITY (4)
,Scenario 设置为 GAME_STREAMING (3)
。profile | 设置采样率,码率,编码模式和声道数,详见 AudioProfile 。 |
scenario | 设置音频应用场景,详见 AudioScenario 。不同的音频场景下,设备的音量类型不同。详见如何区分媒体音量和通话音量。 |
|
abstract |
设置音频高音质选项。
setAudioProfile
方法。该方法设置音频高音质选项。请在加入频道前调用本方法并一次性设置好三个模式。切勿在加入频道后再次调用本方法。
fullband | 全频带编解码器(48 kHz 采样率), 不兼容 1.7.4 以前版本
|
stereo | 立体声编解码器,不兼容 1.7.4 以前版本
|
fullBitrate | 高码率模式,建议仅在纯音频模式下使用
|
|
abstract |
调节麦克风采集信号音量。
volume | 麦克风采集信号音量。取值范围为 [0,400],其中:
|
|
abstract |
调节本地播放的所有远端用户信号音量。
adjustAudioMixingPlayoutVolume
方法,并将 volume 参数设置为 0。volume | 播放音量。取值范围为 [0,400],其中:
|
|
abstract |
调节本地播放的指定远端用户信号音量。
你可以在通话中调用该方法调节指定远端用户在本地播放的音量。如需调节多个用户在本地播放的音量,则需多次调用该方法。
uid | 远端用户的 ID。 |
volume | 播放音量,取值范围为 [0,100],其中:
|
|
abstract |
启用用户音量提示。
该方法允许 SDK 定期向 app 报告本地发流用户和瞬时音量最高的远端用户(最多 3 位)的音量相关信息。启用该方法后,只要频道内有发流用户,SDK 会在加入频道后按设置的时间间隔触发 onAudioVolumeIndication
回调。
interval | 指定音量提示的时间间隔:
|
smooth | 平滑系数,指定音量提示的灵敏度。取值范围为 [0, 10],建议值为 3,数字越大,波动越灵敏;数字越小,波动越平滑。 |
report_vad | 是否开启人声检测
|
|
abstract |
开启本地语音音调回调。
该方法允许 SDK 定期向 app 报告本地用户的语音音调。开启本地音频采集并调用该方法后, SDK 会按设置的时间间隔触发 onLocalVoicePitchInHz
回调。
interval | 设置 SDK 触发 onLocalVoicePitchInHz 回调的时间间隔:
|
|
abstract |
启用音频质量通知回调。
该方法启用音频质量通知回调。一旦启用,onAudioQuality
将被定期触发。
enabled | 是否启用音频质量通知回调
|
|
abstract |
开启/关闭本地音频采集。
当 app 加入频道时,它的语音功能默认是开启的。该方法可以关闭或重新开启本地语音,即停止或重新开始本地音频采集。
该方法不影响接收远端音频流,enableLocalAudio(false)
适用于只听不发的用户场景。
语音功能关闭或重新开启后,会收到回调 onLocalAudioStateChanged
,并报告 LOCAL_AUDIO_STREAM_STATE_STOPPED(0)
或 LOCAL_AUDIO_STREAM_STATE_CAPTURING(1)
。
muteLocalAudioStream
的区别在于:enableLocalAudio
开启或关闭本地语音采集及处理。使用 enableLocalAudio
关闭或开启本地采集后,本地听远端播放会有短暂中断。muteLocalAudioStream
停止或继续发送本地音频流。enabled | 是否开启本地语音。
|
|
abstract |
取消或恢复发布本地音频流。
自 v3.4.5 起,该方法仅设置用户在 RtcEngine
频道中的音频发布状态。
成功调用该方法后,远端会触发 onUserMuteAudio
回调。
同一时间,本地的音视频流只能发布到一个频道。如果你创建了多个频道,请确保你只在一个频道中调用 muteLocalVideoStream(false)
,否则方法会调用失败并返回 -5 (ERR_REFUSED)
。
joinChannel
和 setClientRole
方法的影响,详见《设置发布状态》。muted | 是否取消发布本地音频流。
|
-5 (ERR_REFUSED)
: 调用被拒绝。
|
abstract |
取消或恢复订阅指定远端用户的音频流。
uid | 指定用户的用户 ID。 |
muted | 是否取消订阅指定远端用户的音频流。
|
|
abstract |
取消或恢复订阅所有远端用户的音频流。
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的音频流,包括在调用该方法后加入频道的用户的音频流。
setDefaultMuteAllRemoteAudioStreams
的功能。 声网建议不要一起调用 muteAllRemoteAudioStreams
和 setDefaultMuteAllRemoteAudioStreams
,否则设置可能会不生效。详见《设置订阅状态》。muted | 是否取消订阅所有远端用户的音频流。
|
|
abstract |
设置是否默认接收音频流。
默认取消或恢复订阅远端用户的音频流。
该方法需要在加入频道后调用。调用成功后,本地用户取消或恢复订阅调用时刻之后加入频道的远端用户。
muteRemoteAudioStream
(false),并指定你想要订阅的远端用户 ID。muteRemoteAudioStream(false)
。muted | 是否默认取消订阅远端用户的音频流:
|
|
abstract |
启用视频模块。
该方法用于打开视频模式。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启视频模式,在通话中调用则由音频模式切换为视频模式。调用 disableVideo
方法可关闭视频模式。
成功调用该方法后,远端会触发 onUserEnableVideo
(true) 回调。
leaveChannel
后仍然有效。 enableLocalVideo
:是否启动摄像头采集并创建本地视频流 muteLocalVideoStream
:是否发布本地视频流 muteRemoteVideoStream
:是否接收并播放远端视频流 muteAllRemoteVideoStreams
:是否接收并播放所有远端视频流
|
abstract |
关闭视频模块。
该方法用于关闭视频。可以在加入频道前或者通话中调用,在加入频道前调用,则自动开启纯音频模式,在通话中调用则由视频模式切换为纯音频模式。调用 enableVideo
方法可开启视频模式。
成功调用该方法后,远端会触发 onUserEnableVideo
(false) 回调。
leaveChannel
后仍然有效。 enableLocalVideo
:是否启动摄像头采集并创建本地视频流 muteLocalVideoStream
:是否发布本地视频流 muteRemoteVideoStream
:是否接收并播放远端视频流 muteAllRemoteVideoStreams
:是否接收并播放所有远端视频流
|
abstract |
设置视频属性。
setVideoEncoderConfiguration
方法。该方法设置视频的编码属性。 该方法在加入频道前后都能调用。 如果用户加入频道后不需要重新设置视频编码属性,则声网建议在 enableVideo
前调用该方法,可以加快首帧出图的时间。
profile | 视频属性,详细定义见 Video Profile |
swapWidthAndHeight | SDK 会按照你选择的视频属性 (profile) 输出固定宽高的视频。该参数设置是否交换宽和高:
|
|
abstract |
手动设置视频属性。
setVideoEncoderConfiguration
方法。该方法手动设置视频的编码属性。 如果用户加入频道后不需要重新设置视频编码属性,则声网建议在 enableVideo
前调用该方法,可以加快首帧出图的时间。
width | 你想要设置的视频宽度,宽 × 高的最大值不超过 1280 × 720。 |
height | 你想要设置的视频高度,宽 × 高的最大值不超过 1280 × 720。 |
frameRate | 你想要设置的视频帧率,最高值不超过 30,如: 5、10、15、24、30 等。 |
bitrate | 你想要设置的视频码率,需要开发者根据想要设置的视频的宽、高和帧率,根据 Bitrate 中的码率参考表,手动推算出合适值。宽和高固定的情况下,码率随帧率的变化而变化:
|
|
abstract |
设置视频编码属性。
setVideoProfile
方法。该方法设置视频编码属性。每个属性对应一套视频参数,如分辨率、帧率、码率、视频方向等。 所有设置的参数均为理想情况下的最大值。当视频引擎因网络环境等原因无法达到设置的分辨率、帧率或码率的最大值时,会取最接近最大值的那个值。
如果用户加入频道后不需要重新设置视频编码属性,则声网建议在 enableVideo
前调用该方法,可以加快首帧出图的时间。
config | 视频编码属性,详细定义见 VideoEncoderConfiguration |
|
abstract |
设置摄像头的采集配置。
一般的视频通话或直播中,默认由 SDK 自动控制摄像头的输出参数。在如下特殊场景中,默认的参数通常无法满足需求,或可能引起设备性能问题,我们推荐调用该接口设置摄像头的采集配置:
setVideoEncoderConfiguration
中指定的参数,在后续处理视频帧的时候,比如美颜功能时, 会需要更高的 CPU 及内存,容易导致性能问题。在这种情况下,我们推荐将摄像头采集偏好设置为 CAPTURER_OUTPUT_PREFERENCE_PERFORMANCE(1),避免性能问题 CAPTURER_OUTPUT_PREFERENCE_MANUAL(3)
。 joinChannel
,enableVideo
或者 enableLocalVideo
。 config | 摄像头采集配置,详细定义见 CameraCapturerConfiguration |
|
abstract |
初始化本地视图。
该方法初始化本地视图并设置本地用户视频显示信息,只影响本地用户看到的视频画面,不影响本地发布视频。 调用该方法绑定本地视频流的显示视窗(View),并设置本地用户视图的渲染模式和镜像模式。
setLocalRenderMode
方法。 local | 本地视频显示属性,详细定义见 Video Canvas 。 |
|
abstract |
初始化远端用户视图。
该方法绑定远端用户和显示视图,并设置远端用户视图在本地显示时的渲染模式和镜像模式,只影响本地用户看到的视频画面。
如果 App 不能事先知道对方的用户 ID,可以在 APP 收到 onUserJoined
事件时设置。如果启用了视频录制功能,视频录制服务会做为一个哑客户端加入频道,因此其他客户端也会收到它的 onUserJoined 事件,App 不应给它绑定视图(因为它不会发送视频流),如果 App 不能识别哑客户端,可以在 onFirstRemoteVideoDecoded
事件时再绑定视图。解除某个用户的绑定视图可以把 view 设置为空。退出频道后,SDK 会把远程用户的绑定关系清除掉。
setRemoteRenderMode
方法。remote | 远端视图属性,详细定义见 Video Canvas 。 |
|
abstract |
设置本地视频显示模式。
setLocalRenderMode
2 方法。该方法设置本地视频显示模式。App 可以多次调用此方法更改显示模式。
renderMode | 视频显示模式:
|
|
abstract |
更新本地视图显示模式。
初始化本地用户视图后,你可以调用该方法更新本地用户视图的渲染和镜像模式。该方法只影响本地用户看到的视频画面,不影响本地发布视频。
setupLocalVideo
方法初始化本地视图后,调用该方法。renderMode | 本地视图的渲染模式。
|
mirrorMode | 本地视图的镜像模式。
|
|
abstract |
设置远端视频显示模式。
setRemoteRenderMode
2。该方法设置远端视频显示模式。App 可以多次调用此方法更改显示模式。
uid | 远端用户 ID |
renderMode | 视频显示模式:
|
|
abstract |
更新远端视图显示模式。
初始化远端用户视图后,你可以调用该方法更新远端用户在本地显示时的渲染和镜像模式。该方法只影响本地用户看到的视频画面。
setupRemoteVideo
方法初始化远端视图后,调用该方法。uid | 远端用户的 ID。 |
renderMode | 远端用户视图的渲染模式。
|
mirrorMode | 远端用户视图的镜像模式。
|
|
static |
创建 RendererView。
该方法创建视频 RendererView,返回 SurfaceView 的类型。View 的操作和布局由 app 管理, SDK 在 app 提供的 View 上进行渲染。显示视频视图必须调用该方法,而不是直接调用 SurfaceView。
如果你需要使用 SurfaceView,请调用本方法;如果你需要使用 TextureView,请调用 CreateTextureView
方法。
context | 安卓活动 (Android Activity) 的上下文。 |
|
static |
创建 TextureView。
该方法创建 TextureView,适用于需要对视频画面进行缩放、旋转和平移的场景,如屏幕共享。View 的操作和布局由 app 管理,SDK 仅在 app 提供的 View 上进行渲染。
如果你需要使用 TextureView,请调用本方法。如果你需要使用 SurfaceView,请调用 CreateRendererView
方法。
声网推荐你在视频通话和直播场景使用 SurfaceView,在需要对视频画面进行缩放、旋转和平移的场景(如屏幕共享场景)使用 TextureView。
context | 安卓活动 (Android Activity) 的上下文。 |
|
abstract |
开启视频预览。
该方法用于在进入频道前启动本地视频预览。调用该 API 前,必须:
enableVideo
开启视频功能。setupLocalVideo
设置预览窗口及属性。leaveChannel
退出频道,并不会关闭预览。如需关闭预览,请调用 stopPreview
。
|
abstract |
停止本地视频预览。
调用 startPreview
后,如果你想关闭本地视频预览,请调用 stopPreview
。
|
abstract |
开启/关闭本地视频采集。
该方法禁用或重新启用本地视频采集。不影响接收远端视频。
调用 enableVideo
后,本地视频即默认开启。 你可以调用 enableLocalVideo(false) 关闭本地视频采集。关闭后如果想重新开启,则可调用 enableLocalVideo(true)。
成功禁用或启用本地视频采集后,远端会触发 onUserEnableLocalVideo
回调。
leaveChannel
后仍然有效。enabled | 是否启用本地视频:
|
|
abstract |
取消或恢复发布本地视频流。
自 v3.4.5 起,该方法仅设置用户在 RtcEngine
频道中的视频发布状态。
成功调用该方法后,远端会触发 onUserMuteVideo
回调。
同一时间,本地的音视频流只能发布到一个频道。如果你创建了多个频道,请确保你只在一个频道中调用 muteLocalVideoStream(false)
, 否则方法会调用失败并返回 -5 (ERR_REFUSED)
。
joinChannel
和 setClientRole
方法的影响,详见《设置发布状态》。muted | 是否取消发布本地视频流。
|
-5 (ERR_REFUSED)
:调用被拒绝。
|
abstract |
取消或恢复订阅指定远端用户的视频流。
uid | 指定用户的用户 ID。 |
muted | 是否取消订阅指定远端用户的视频流。
|
|
abstract |
取消或恢复订阅所有远端用户的视频流。
成功调用该方法后,本地用户会取消或恢复订阅所有远端用户的视频流,包括在调用该方法后加入频道的用户的视频流。
setDefaultMuteAllRemoteVideoStreams
的功能。 声网建议不要一起调用 muteAllRemoteVideoStreams
和 setDefaultMuteAllRemoteVideoStreams
,否则设置可能会不生效。详见《设置订阅状态》。muted | 是否取消订阅所有远端用户的视频流。
|
|
abstract |
设置是否默认接收视频流。
默认取消或恢复订阅远端用户的视频流。
该方法需要在加入频道后调用。调用成功后,本地用户取消或恢复订阅调用时刻之后加入频道的远端用户。
muteRemoteVideoStream
(false),并指定你想要订阅的远端用户 ID。muteRemoteVideoStream(false)
。muted | 是否默认取消订阅远端用户的视频流:
|
|
abstract |
开启本地美颜功能,并设置美颜效果选项。
libagora_video_process_extension.so
动态库集成到项目中。 enabled | 是否开启美颜功能:
|
options | 美颜选项,详细定义见 BeautyOptions |
|
abstract |
设置暗光增强功能。
暗光增强功能可以在光线亮度偏低(如背光、阴天、暗场景)和亮度不均匀的环境下自适应调整视频画面的亮度值,恢复或凸显图像的细节信息,最终提升视频图像的整体视觉效果。
你可以调用该方法开启暗光增强功能并设置暗光增强的效果。
libagora_video_process_extension.so
动态库。enableVideo
后调用该方法。enabled | 是否开启暗光增强功能:
|
options | 暗光增强选项,用于设置暗光增强的效果。详见 LowLightEnhanceOptions 。 |
|
abstract |
设置视频降噪功能。
采光不足的环境和低端视频采集设备会使视频图像含有明显的噪声,影响视频画质。在实时互动场景下,视频噪声还会在编码过程中占用码流资源并降低编码效率。
你可以调用该方法开启视频降噪功能并设置视频降噪的效果。
libagora_video_process_extension.so
动态库。enableVideo
后调用该方法。enabled | 是否开启视频降噪功能:
|
options | 视频降噪选项,用于设置视频降噪的效果。详见 VideoDenoiserOptions 。 |
|
abstract |
设置色彩增强功能。
摄像头采集到的视频画面可能存在色彩失真的现象。色彩增强功能可以通过智能调节饱和度和对比度等视频特性, 提升视频色彩丰富度和色彩还原度,最终使视频画面更生动。
你可以调用该方法开启色彩增强功能并设置色彩增强的效果。
libagora_video_process_extension.so
动态库。enableVideo
后调用该方法。enabled | 是否开启色彩增强功能:
|
options | 色彩增强选项,用于设置色彩增强的效果。详见 ColorEnhanceOptions 。 |
|
abstract |
开启/关闭虚拟背景。
开启虚拟背景功能后,你可以使用自定义的背景图替代本地用户原来的背景图。 替换后,频道内所有用户都能看到自定义的背景图。你可以从 onVirtualBackgroundSourceEnabled
回调了解虚拟背景是否成功开启和相应的出错原因。
libagora_segmentation_extension.so
动态库集成到项目文件中。enableVideo
后调用该方法。enabled | 设置是否开启虚拟背景:
|
backgroundSource | 自定义的背景图。详见 VirtualBackgroundSource 。 Note:为将自定义背景图的分辨率与 SDK 的视频采集分辨率适配,SDK 会在保证自定义背景图内容不变形的前提下,对自定义背景图进行缩放和裁剪。 |
|
abstract |
设置默认的音频路由。
如果 SDK 默认的音频路由(见《设置音频路由》)无法满足你的需求,你可以调用该方法切换默认的音频路由。 成功切换音频路由后,SDK 会触发 onAudioRouteChanged
回调提示音频路由已更改。
joinChannel
前调用。如需在加入频道后切换音频路由,请调用 setEnableSpeakerphone
。defaultToSpeaker | 设置默认的音频路由:
|
|
abstract |
开启/关闭扬声器播放。
如果 SDK 默认的音频路由(见《设置音频路由》)或 setDefaultAudioRoutetoSpeakerphone
的设置无法满足你的需求,你可以调用 setEnableSpeakerphone
切换当前的音频路由。 成功切换音频路由后,SDK 会触发 onAudioRouteChanged
回调提示音频路由已更改。
该方法只设置用户在当前频道内使用的音频路由,不会影响 SDK 默认的音频路由。 如果用户离开当前频道并加入新的频道,则用户还是会使用 SDK 默认的音频路由。
joinChannel
后调用。enabled | 设置是否开启扬声器播放
|
|
abstract |
检查扬声器状态启用状态。
该方法检查扬声器是否已开启。
|
abstract |
开启耳返功能。
该方法打开或关闭耳返功能。
enabled |
|
|
abstract |
设置耳返音量。
volume | 设置耳返音量,取值范围在 0 到 100 间。默认值为 100。 |
|
abstract |
|
abstract |
设置本地语音音调。
该方法改变本地说话人声音的音调。
pitch | 语音频率。可以在 [0.5, 2.0] 范围内设置。取值越小,则音调越低。默认值为 1.0,表示不需要修改音调。 |
|
abstract |
设置本地语音音效均衡。
bandFrequency | 频谱子带索引,取值范围是 [0-9],分别代表 10 个频带,对应的中心频率是 [31,62,125,250,500,1k,2k,4k,8k,16k] Hz |
bandGain | 每个 band 的增益,单位是 dB,每一个值的范围是 [-15,15],默认值为 0 |
|
abstract |
设置本地音效混响。
setAudioEffectPreset
,直接实现流行、R&B、KTV 等预置的混响效果。reverbKey | 混响音效 Key。该方法共有 5 个混响音效 Key,分别如 value 栏列出。 |
value | 各混响音效 Key 所对应的值:
|
|
abstract |
设置本地语音变声、美音或语聊美声效果。
setAudioEffectPreset
:音效。setVoiceBeautifierPreset
:美声效果。setVoiceConversionPreset
:变声效果。 该方法在频道内外均可调用。
通信场景下的用户或直播场景下的主播均可调用该方法为本地语音设置以下效果。成功设置以后,频道内的所有用户均可听到声音效果。
setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)
或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)
。setLocalVoiceReverbPreset
方法一同使用,否则先调的方法会不生效。更多注意事项,详见《设置人声效果》。voiceChanger | 本地语音的变声、美音或语聊美声效果选项:
|
|
abstract |
设置本地语音混响(含虚拟立体声效果)。
setAudioEffectPreset
或 setVoiceBeautifierPreset
。 该方法在频道内外均可调用。
通信场景下的用户或直播场景下的主播均可调用该方法设置本地语音混响。成功设置以后,频道内的所有用户均可听到声音效果。
AUDIO_REVERB_FX
为前缀的枚举值时,请确保在调用该方法前将 setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)
或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)
,否则该方法设置无效。AUDIO_VIRTUAL_STEREO
时,声网推荐在调用该方法前将 setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)
。setLocalVoiceChanger
方法一同使用,否则先调的方法会不生效。更多注意事项,详见《设置人声效果》。preset | 本地语音混响选项。为达到更好的混响效果,声网推荐使用以 AUDIO_REVERB_FX 为前缀的枚举值。
|
|
abstract |
设置 SDK 预设的人声音效。
调用该方法可以为本地发流用户设置 SDK 预设的人声音效,且不会改变原声的性别特征。设置音效后,频道 内所有用户都能听到该效果。
根据不同的场景,你可以为用户设置不同的音效,各音效的适用场景可参考《设置人声效果》。
为获取更好的人声效果,声网推荐你在调用该方法前将 setAudioProfile
的 scenario
设为 AUDIO_SCENARIO_GAME_STREAMING(3)
。
setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_SPEECH_STANDARD(1)
,否则该方法不生效。ROOM_ACOUSTICS_3D_VOICE
或 PITCH_CORRECTION
外的枚举,请勿再调用 setAudioEffectParameters
,否则该方法设置的效果会被覆盖。
|
abstract |
设置 SDK 预设的美声效果。
调用该方法可以为本地发流用户设置 SDK 预设的人声美化效果。设置美声效果后,频道内所有用户都能听到该效果。根据不同的场景,你可以为用户设置不同的美声效果,各美声效果的适用场景可参考《设置人声效果》。
为获取更好的人声效果,声网推荐你在调用该方法前将 setAudioProfile
的 scenario
设为 AUDIO_SCENARIO_GAME_STREAMING(3)
,并将 profile
设为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)
或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)
。
setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_SPEECH_STANDARD(1)
,否则该方法不生效。
|
abstract |
设置 SDK 预设的变声效果。
调用该方法可以为本地发流用户设置 SDK 预设的变声效果。设置变声效果后,频道内所有用户都能听到该效果。根据不同的场景,你可以为用户设置不同的变声效果,各变声效果的适用场景可参考《设置人声效果》。
为获取更好的人声效果,声网推荐你在调用该方法前将 setAudioProfile
的 scenario
设为 AUDIO_SCENARIO_GAME_STREAMING(3)
,并将 profile
设为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)
或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)
。
setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_SPEECH_STANDARD(1)
,否则该方法不生效。preset | 预设的变声效果选项: |
|
abstract |
设置 SDK 预设人声音效的参数。
调用该方法可以对本地发流用户进行如下设置:
设置后,频道内所有用户都能听到该效果。
setAudioProfile
的 scenario
设为 AUDIO_SCENARIO_GAME_STREAMING(3)
。setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_SPEECH_STANDARD(1)
,否则该方法不生效。preset | SDK 预设的音效:
|
param1 |
|
param2 |
|
|
abstract |
设置 SDK 预设美声效果的参数。
调用该方法可以设置歌唱美声效果的性别特征和混响效果。该方法对本地发流用户进行设置。设置后,频道内所有用户都能听到该效果。
为获取更好的人声效果,声网推荐你在调用该方法前将 setAudioProfile
的 scenario
设为 AUDIO_SCENARIO_GAME_STREAMING(3)
,并将 profile
设为 AUDIO_PROFILE_MUSIC_HIGH_QUALITY(4)
或 AUDIO_PROFILE_MUSIC_HIGH_QUALITY_STEREO(5)
。
setAudioProfile
的 profile
参数设置为 AUDIO_PROFILE_SPEECH_STANDARD(1)
,否则该方法不生效。preset | SDK 预设的音效:
|
param1 | 歌声的性别特征:
|
param2 | 歌声的混响效果:
|
|
abstract |
开启或关闭 AI 降噪模式。
SDK 默认开启传统降噪模式,以消除大部分平稳噪声。如果你还需要消除非平稳噪声,声网推荐你按如下步骤开启 AI 降噪模式:
libagora_ai_denoise_extension.so
。enableDeepLearningDenoise(true)
。AI 降噪模式对设备性能有要求。只有在设备性能良好的情况下,SDK 才会成功开启 AI 降噪模式。
成功开启 AI 降噪模式后,如果 SDK 检测到当前设备的性能不足,SDK 会自动关闭 AI 降噪模式,并开启传统降噪模式。
在频道内,如果你调用了 enableDeepLearningDenoise(false)
或 SDK 自动关闭了 AI 降噪模式,当你需要重新开启 AI 降噪模式时,你需要先调用 leaveChannel
,再调用 enableDeepLearningDenoise(true)
。
libagora_ai_denoise_extension.so
,所以声网推荐在加入频道前调用该方法。enabled | 是否开启 AI 降噪模式:
|
-157
(ERR_MODULE_NOT_FOUND
): 未集成 AI 降噪库。
|
abstract |
开启/关闭远端用户的语音立体声。
如果想调用 setRemoteVoicePosition
实现听声辨位的功能,请确保在调用 joinChannel
方法前调用该方法。
enabled | 是否开启远端用户语音立体声:
|
|
abstract |
设置远端用户声音的空间位置和音量,方便本地用户听声辨位。
用户通过调用该接口,设置远端用户声音出现的位置,左右声道的声音差异会让用户产生声音的方位感,从而判断出远端用户的实时位置。在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。
enableSoundPositionIndication
开启远端用户的语音立体声。 uid | 远端用户的 ID |
pan | 设置远端用户声音出现的位置,取值范围为 [-1.0, 1.0]:
|
gain | 设置远端用户声音的音量,取值范围为 [0.0, 100.0],默认值为 100.0,表示该用户的原始音量。取值越小,则音量越低 |
|
abstract |
开始播放音乐文件及混音。
startAudioMixing
[2/2]。该方法指定本地或在线音频文件来和麦克风采集的音频流进行混音或替换。替换是指用音频文件替换麦克风采集的音频流。该方法可以选择是否让对方听到本地播放的音频,并指定循环播放的次数。 成功调用该方法后,本地会触发 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调。播放结束后,会收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_STOPPED) 回调。
MEDIA_ENGINE_AUDIO_ERROR_MIXING_TOO_FREQUENT(702)
警告码,表示音乐文件打开过于频繁。MEDIA_ENGINE_AUDIO_ERROR_MIXING_OPEN(701)
。/sdcard/
中的 mp3 文件。http
开头的在线文件,你需要在 /app/Manifests/AndroidManifest.xml
文件中添加 android:usesCleartextTraffic="true"
。filePath | 文件路径,需精确到文件名及后缀。 支持在线文件的 URL 地址,本地文件的 URI 地址、绝对路径或以 /assets/ 开头的路径。**Note** 通过绝对路径访问本地文件可能会遇到权限问题,声网推荐使用 URI 地址访问本地文件。 例如:"content://com.android.providers.media.documents/document/audio%3A14441"。 |
loopback |
|
replace |
|
cycle | 音频文件循环播放的次数:
|
WARN_AUDIO_MIXING_OPEN_ERROR(701)
: 如果指定播放的音频文件不存在,或打开在线文件流后 5 秒内未收到网络流的数据包,则 SDK 会认为媒体文件不可访问,并返回该警告。
|
abstract |
指定当前音乐文件的播放音轨。
获取音乐文件的音轨数量后,你可以调用该方法指定任一音轨进行播放。例如,如果一个多音轨文件的不同音轨存放了不同语言的歌曲,则你可以调用该方法设置音乐文件的播放语言。
startAudioMixing
[2/2] 并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。audioIndex | 指定的播放音轨。取值范围为 [0, getAudioTrackCount )。 |
|
abstract |
获取当前音乐文件的音轨数量。
startAudioMixing
[2/2] 并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
|
abstract |
设置当前音乐文件的声道模式。
在双声道音乐文件中,左声道和右声道可以存储不同的音频数据。根据实际需要, 你可以设置声道模式为原始模式、左声道模式、右声道模式或混合模式。例如,在 KTV 场景中, 音乐文件的左声道存储了伴奏,右声道存储了原唱的歌声。如果你只需听伴奏,调用该方法设置音乐文件的声道模式为左声道模式; 如果你需要同时听伴奏和原唱,调用该方法设置声道模式为混合模式。
startAudioMixing
[2/2] 并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。mode | 声道模式。详见 AudioMixingDualMonoMode 。 |
|
abstract |
开始播放音乐文件。
该方法支持将本地或在线音乐文件和麦克风采集的音频进行混音或替换。 成功播放音乐文件后,本地会触发 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY, AUDIO_MIXING_REASON_STARTED_BY_USER)
回调。 播放结束后,本地会触发 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_STOPPED, AUDIO_MIXING_REASON_ALL_LOOPS_COMPLETED)
回调。
/sdcard/
中的 mp3 文件。startAudioMixing
,请确保调用间隔大于 500 ms。WARN_AUDIO_MIXING_OPEN_ERROR(701)
。http
开头的在线文件,你需要在 /app/Manifests/AndroidManifest.xml
文件中添加 android:usesCleartextTraffic="true"
。filePath | 文件路径,需精确到文件名及后缀。 支持在线文件的 URL 地址,本地文件的 URI 地址、绝对路径或以 /assets/ 开头的路径。 Note 通过绝对路径访问本地文件可能会遇到权限问题,声网推荐使用 URI 地址访问本地文件。 例如:"content://com.android.providers.media.documents/document/audio%3A14441"。 |
loopback | 是否只在本地播放音乐文件:
|
replace | 是否用音乐文件替换麦克风采集的音频:
|
cycle | 音乐文件的播放次数。
|
startPos | 音乐文件的播放位置,单位为毫秒。 |
|
abstract |
设置当前音乐文件的播放速度。
startAudioMixing
[2/2] 并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。speed | 播放速度。推荐取值范围为 [50,400],其中:
|
|
abstract |
停止播放音乐文件及混音。
该方法停止播放伴奏。请在频道内调用该方法。
|
abstract |
暂停播放音乐文件及混音。
该方法暂停播放伴奏。请在频道内调用该方法。
|
abstract |
恢复播放音乐文件及混音。
该方法恢复混音,继续播放伴奏。请在频道内调用该方法。
|
abstract |
调节音乐文件的播放音量。
该方法调节混音里伴奏在本端和远端播放的音量大小。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
playEffect
播放音效文件的音量。volume | 伴奏音量范围为 0~100。默认 100 为原始文件音量。 |
|
abstract |
调节音乐文件的本地播放音量。
该方法调节混音里音乐文件在本端播放的音量大小。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
volume | 伴奏音量范围为 0~100。默认 100 为原始文件音量。 |
|
abstract |
调节音乐文件的远端播放音量。
该方法调节混音里音乐文件在远端播放的音量大小。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
volume | 伴奏音量范围为 0~100。默认 100 为原始文件音量。 |
|
abstract |
获取音乐文件的本地播放音量。
该方法获取音乐文件的本地播放音量。该接口可以方便开发者排查音量相关问题。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
|
abstract |
获取音乐文件的远端播放音量。
该方法获取音乐文件的远端播放音量。该接口可以方便开发者排查音量相关问题。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
|
abstract |
获取音乐文件的时长。
getAudioFileInfo
。该方法获取音乐文件时长,单位为毫秒。请在频道内调用该方法。如果返回值 < 0,表明调用失败。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
|
abstract |
获取音乐文件的播放进度。
该方法获取当前伴奏播放进度,单位为毫秒。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
getAudioMixingCurrentPosition
,请确保调用间隔大于 500 ms。
|
abstract |
设置音乐文件的播放位置。
该方法可以设置音频文件的播放位置,这样你可以根据实际情况播放文件,而不是非得从头到尾播放一个文件。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
pos | 整数。进度条位置,单位为毫秒。 |
|
abstract |
调整本地播放的音乐文件的音调。
本地人声和播放的音乐文件混音时,调用该方法可以仅调节音乐文件的音调。
你需要在调用 startAudioMixing
并收到 onAudioMixingStateChanged
(MEDIA_ENGINE_AUDIO_EVENT_MIXING_PLAY)
回调后调用该方法。
pitch | 按半音音阶调整本地播放的音乐文件的音调,默认值为 0,即不调整音调。取值范围为 [-12,12],每相邻两个值的音高距离相差半音。取值的绝对值越大,音调升高或降低得越多。 |
|
abstract |
获取 IAudioEffectManager 类,以管理音效文件。
|
abstract |
获取指定音频文件信息。
成功调用该方法后,SDK 会触发 onRequestAudioFileInfo
回调,报告指定音频文件的时长等信息。你可以多次调用该方法,获取多个音频文件的信息。
filePath | 文件路径,需精确到文件名及后缀。 支持在线文件的 URL 地址,本地文件的 URI 地址、绝对路径或以 /assets/ 开头的路径。 Note: 通过绝对路径访问本地文件可能会遇到权限问题,声网推荐使用 URI 地址访问本地文件。 例如:content://com.android.providers.media.documents/document/audio%3A14441 。 |
|
abstract |
开始客户端录音。
startAudioRecording
[3/3]。SDK 支持通话过程中在客户端进行录音。该方法录制频道内所有用户的音频,并生成一个包含所有用户声音的录音文件,录音文件格式可以为:
该方法的录制采样率固定为 32 kHz。
该接口需在加入频道之后调用。如果调用 leaveChannel
时还在录音,录音会自动停止。
filePath | 录音文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/sdcard/emulated/0/audio.aac 。请确保目录存在且可写。 |
quality | 录音音质: |
ERR_REFUSED(-5)
:无法启动测试,可能没有成功初始化。
|
abstract |
开始客户端录音。
startAudioRecording
[3/3]。SDK 支持通话过程中在客户端进行录音。调用该方法后,你可以录制频道内所有用户的音频,并得到一个包含所有用户声音的录音文件。录音文件格式可以为:
joinChannel
之后调用。如果调用 leaveChannel
时还在录音,录音会自动停止。sampleRate
设为 44.1 kHz 或 48 kHz 时,建议将 quality
设为 AUDIO_RECORDING_QUALITY_MEDIUM 或 AUDIO_RECORDING_QUALITY_HIGH。filePath | 录音文件在本地保存的绝对路径,由用户自行制定,需精确到文件名及格式,例如:/dir1/dir2/dir3/audio.aac。 |
sampleRate | 录音采样率 (Hz),可以设置为以下值:
|
quality | 录音音质: |
ERR_REFUSED(-5)
:无法启动测试,可能没有成功初始化。
|
abstract |
开始客户端录音。
SDK 支持通话过程中在客户端进行录音。调用该方法后,你可以录制频道内用户的音频,并得到一个录音文件。录音文件格式可以为:
AUDIO_RECORDING_QUALITY_MEDIUM
,录音时长为 10 分钟的文件大小约为 2 M。一旦用户离开频道,录音会自动停止。
config | 录音配置。详见 AudioRecordingConfiguration 。 |
|
abstract |
停止客户端录音。
ERR_REFUSED(-5)
:无法启动测试,可能没有成功初始化
|
abstract |
开始语音通话回路测试。
startEchoTest
方法开始语音回路测试。 该方法启动语音通话测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。在测试过程中,用户先说一段话,在 10 秒后,声音会回放出来。如果 10 秒后用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。 startEchoTest
后必须调用 stopEchoTest
以结束测试,否则不能进行下一次回声测试,或者调用 joinChannel
进行通话。 setClientRole
方法将用户角色设置为主播后再调用该方法。 ERR_REFUSED(-5)
:无法启动测试,可能没有成功初始化
|
abstract |
开始语音通话回路测试。
该方法启动语音通话测试,目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。在测试过程中,用户先说一段话,声音会在设置的时间间隔(单位为秒)后回放出来。如果用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。
startEchoTest
后必须调用 stopEchoTest
以结束测试,否则不能进行下一次回声测试,也无法调用 joinChannel
加入频道。 intervalInSeconds | 设置返回语音通话回路测试结果的时间间隔,取值范围为 [2, 10],单位为秒,默认为 10 秒。 |
|
abstract |
开始音视频通话回路测试。
加入频道前,为测试用户本地发流、收流是否正常,你可以调用该方法进行音视频通话回路测试,即测试系统的音视频设备和用户的上下行网络是否正常。
开始测试后,用户需发出声音或面对摄像头,音频或视频会在约 2 秒后播放出来。如果音频播放正常, 则表示系统音频设备和用户上下行网络均正常;如果视频播放正常,则表示系统视频设备和用户上下行网络均正常。
stopEchoTest
结束测试,否则该用户无法进行下一次音视频通话回路测试,也无法加入频道。config | 音视频通话回路测试的配置。详见 EchoTestConfiguration 。 |
|
abstract |
停止通话回路测试。
调用 startEchoTest
[2/3] 或 startEchoTest
[3/3] 后,如果你想停止通话回路测试,请调用本方法。
ERR_REFUSED(-5)
:无法启动测试,可能没有成功初始化
|
abstract |
启用网络测试。
该方法启用网络连接质量测试,用于检测用户网络接入质量。默认该功能为关闭状态。该方法主要用于以下两种场景:
无论哪种场景,启用该方法会消耗一定的网络流量,影响通话质量。在收到 onLastmileQuality
回调后须调用 disableLastmileTest
停止测试,再加入频道或切换用户角色。
startLastmileProbeTest
同时使用。onLastmileQuality
回调之前请不要调用其他方法,否则可能会由于 API 操作过于频繁导致此回调无法执行。setVideoEncoderConfiguration
中设置的码率相同。加入频道后,无论是否调用了 disableLastmileTest
,SDK 均会自动停止带宽占用。
|
abstract |
关闭网络测试。
|
abstract |
开始通话前网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。
启用该方法后,SDK 会依次返回如下 2 个回调:
onLastmileQuality
:视网络情况约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近用户的主观感受。onLastmileProbeResult
:视网络情况约 30 秒内返回。该回调通过客观数据反馈上下行网络质量,因此更客观。该方法主要用于以下两种场景:
enableLastmileTest
。onLastmileQuality
和 onLastmileProbeResult
回调之前请不用调用其他方法, 否则可能会由于 API 操作过于频繁导致此方法无法执行。config | Last-mile 网络探测配置,详细定义见 LastmileProbeConfig 。 |
|
abstract |
停止通话前网络质量探测。
|
abstract |
设置自定义的视频源。
实时通信过程中,SDK 会启动默认的视频输入设备,即内置的摄像头,采集视频。但是,如果你需要自定义视频输入设备,你可以先通过 IVideoSource
类自定义视频源,再调用该方法将自定义的视频源加入到 SDK 中。
该方法在加入频道前后都能调用。
source | 自定义的视频源。详细定义见 IVideoSource |
|
abstract |
自定义本地视频渲染器。
该方法设置本地视频渲染器。实时通讯过程中,SDK 通常会启动默认的视频渲染器进行视频渲染。当需要自定义视频渲染设备时,App 可以先通过 IVideoSink
自定义渲染器,然后调用该方法将视频渲染器加入到 SDK 中。 该方法在加入频道前后都能调用。
render | 自定义的本地视频渲染器。详细定义见 IVideoSink |
|
abstract |
自定义远端视频渲染器。
该方法设置远端视频渲染器。实时通讯过程中,SDK 通常会启动默认的视频渲染器进行视频渲染。当需要自定义视频渲染设备时,App 可以先通过 IVideoSink
自定义渲染器,然后调用该方法将视频渲染器加入到 SDK 中。 该方法在加入频道前后都能调用。如果在加入频道前调用,需要自行维护远端用户的 uid。
uid | 远端用户 ID |
render | 自定义的远端视频渲染器。详细定义见 IVideoSink |
|
abstract |
设置外部音频渲染。
该方法适用于需要自行渲染音频的场景。开启外部音频渲染后,你可以通过调用 pullPlaybackAudioFrame
方法拉取远端音频数据。App 可以对拉取到的原始音频数据进行处理后再渲染,获取想要的音频效果。
该方法需要在加入频道前调用
onPlaybackFrame
回调。enabled | 设置是否开启外部音频渲染:
|
sampleRate | 外部音频渲染的采样率 (Hz),可设置为 16000,32000,44100 或 48000。 |
channels | 外部音频渲染的声道数,可设置为 1 或 2:
|
|
abstract |
拉取外部音频数据。
使用该方法前,你需要调用 setExternalAudioSink
(enabled: true) 方法通知 App 开启并设置外部渲染。
调用该方法后,app 会采取主动拉取的方式获取远端已解码和混音后的音频数据,用于音频播放。
onPlaybackFrame
回调。onPlaybackFrame
回调相比,区别在于:onPlaybackFrame
:SDK 通过该回调将音频数据传输给 app。如果 app 处理延时,可能会导致音频播放抖动。pullPlaybackAudioFrame
:app 主动拉取音频数据。通过设置音频数据,SDK 可以调整缓存,帮助 app 处理延时,从而有效避免音频播放抖动。data | 需要拉取的音频数据,格式为 byte[]。 |
lengthInByte | 待拉取音频数据的字节数,单位为 byte。该参数的取值与音频数据的时长、你在 setExternalAudioSink 中设置的 sampleRate 和 channels 参数相关。声网建议音频数据的时长至少为 10 毫秒。计算公式为:lengthInByte = sampleRate/1000 × 2 × channels × 音频数据时长(毫秒)。 |
|
abstract |
设置外部音频采集参数。
joinChannel
和 startPreview
前调用该方法。 enabled | 是否开启外部音频采集。
|
sampleRate | 外部音频源的采样率(Hz),可设置为 8000,16000,32000,44100 或 48000。 |
channels | 外部音频源的通道数,可设置为:
|
|
abstract |
推送外部音频帧。
pushExternalAudioFrame
[2/2]。data | 外部音频数据 |
timestamp | 外部音频帧的时间戳,单位为毫秒。该参数为必填。你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以帮助音视频同步 |
|
abstract |
推送外部音频帧到指定位置。
根据实际需求,你可以将外部音频帧推送到音频采集后、编码前或本地播放前的位置。你可以多次调用该方法, 将一个音频帧推送到多个位置或者将多个音频帧推送到不同位置。例如,在 KTV 场景中, 你可以将歌声推送到音频采集后的位置,让歌声经过 SDK 音频模块的处理,从而获取优质的音频体验; 将伴奏推送到音频编码前的位置,让伴奏不受 SDK 音频模块的影响。
data | 外部音频帧。音频帧长度范围为 [10,60],单位为 ms。 |
timestamp | 外部音频帧的渲染时间戳。 你可以使用该时间戳还原音频帧顺序;在有视频的场景中(包含使用外部视频源的场景),该参数可以用于实现音视频同步。 |
sampleRate | 每声道每秒的采样点数,可设置为 8000, 16000, 32000, 44100, 或 48000 Hz。 |
channels | 声道数量:
|
bytesPerSample | 每个采样点的字节数。对于 PCM 来说,一般使用 16 bit,即两个字节。 |
sourcePos | 外部音频帧的推送位置。详见 AudioExternalSourcePos 。 |
ERR_INVALID_ARGUMENT
):无效参数。ERR_TOO_OFTEN
):调用频率太高,导致内部缓冲区溢出。建议在 30 - 50 ms 后重新调用该方法。
|
abstract |
设置指定位置的外部音频帧音量。
你可以多次调用该方法,设置不同位置的外部音频帧音量。音量设置对被推送到指定位置的所有外部音频帧都有效。
sourcePos | 外部音频帧的推送位置。详见 AudioExternalSourcePos 。 |
volume | 外部音频帧的音量。取值范围为 [0,100]。默认值为 100,表示原始音量。 |
ERR_INVALID_ARGUMENT
):无效参数。
|
abstract |
配置外部视频源。
该方法需要在加入频道前调用。
enable | 是否使用外部视频源:
|
useTexture | 是否使用 Texture 作为输入:
|
pushMode | 是否外部视频源需要调用 PushExternalVideoFrame 将视频帧主动推送给 SDK:
|
|
abstract |
推送外部视频帧。
该方法主动将视频帧数据用 AgoraVideoFrame 类封装后传递给 SDK。请确保在你调用本方法前已调用 setExternalVideoSource
,并将参数 pushMode 设为 true,不然调用本方法后会一直报错。 该方法需要在加入频道后调用。
frame | 视频帧的数据信息。详细定义见 AgoraVideoFrame |
|
abstract |
检查视频是否支持 Texture 编码。
|
abstract |
注册语音观测器对象。
该方法用于注册语音观测器对象,即注册回调。当需要 SDK 给出 onRecordFrame
或 onPlaybackFrame
回调时,需要使用该方法注册回调。 该方法需要在加入频道前调用。
observer | 接口对象实例:IAudioFrameObserver 。传入 null 表示取消注册。我们建议在收到 onLeaveChannel 后调用,来释放语音观测器对象。 |
|
abstract |
注册本地视频编码数据观测器。
成功注册本地视频编码数据观测器后,SDK 会在捕捉到每个视频帧时,触发你在 IVideoEncodedFrameObserver
接口中实现的回调。
observer | 本地视频编码数据观测器。详见 IVideoEncodedFrameObserver 。传空表示取消注册本地视频编码数据观测器。 |
|
abstract |
注册原始视频数据观测器。
成功注册原始视频数据观测器后,SDK 会在捕捉到每个视频帧时,触发你在 IVideoFrameObserver
接口中实现的回调。
observer | 原始视频数据观测器。详见 IVideoFrameObserver 。传空表示取消注册原始视频数据观测器。 |
|
abstract |
设置采集的音频格式。
该方法设置 onRecordFrame
回调数据的格式。 该方法需要在加入频道前调用。
samplesPerCall
、sampleRate
和 channel
参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。 请确保采样间隔不得小于 0.01 (s)。SDK 会根据该采样间隔触发 onRecordFrame
回调。sampleRate | onRecordFrame 中返回数据的采样率,可设置为 8000,16000,32000,44100 或 48000。 |
channel | onRecordFrame 中返回数据的通道数,可设置为:
|
mode | onRecordFrame 的使用模式:
|
samplesPerCall | onRecordFrame 中返回数据的采样点数,如 RTMP/RTMPS 推流应用中通常为 1024。 |
|
abstract |
设置播放的声音格式。
该方法设置 onPlaybackFrame
回调数据的格式。 该方法需要在加入频道前调用。
samplesPerCall
、sampleRate
和 channel
参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channel)。 请确保采样间隔不得小于 0.01 (s)。SDK 会根据该采样间隔触发 onPlaybackFrame
回调。sampleRate | onPlaybackFrame 中返回数据的采样率,可设置为 8000,16000,32000,44100 或 48000。 |
channel | onPlaybackFrame 中返回数据的通道数,可设置为:
|
mode | onPlaybackFrame 的使用模式:
|
samplesPerCall | onPlaybackFrame 中返回数据的采样点数,如 RTMP/RTMPS 推流应用中通常为 1024。 |
|
abstract |
设置录制和播放声音混音后的数据格式。
该方法设置 onMixedAudioFrame 回调数据的格式。 该方法需要在加入频道前调用。
samplesPerCall
、sampleRate
和 AudioFrame 中的 channels
参数计算出采样间隔,计算公式为采样间隔 = samplesPerCall/(sampleRate × channels)。 请确保采样间隔不得小于 0.01 (s)。SDK 会根据该采样间隔触发onMixedAudioFrame 回调。sampleRate | 指定 onMixedAudioFrame 中返回数据的采样率,可设置为 8000,16000,32000,44100 或 48000 |
samplesPerCall | 指定 onMixedAudioFrame 中返回数据的采样点数,如 RTMP/RTMPS 推流应用中通常为 1024。 |
|
abstract |
添加本地视频水印。
addVideoWatermark
2。该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的观众,旁路直播观众,甚至采集设备都能看到或采集到该水印图片。 如果你仅仅希望在旁路直播推流中添加水印,请参考 设置直播转码 setLiveTranscoding
中描述的用法。
setVideoEncoderConfiguratio
方法中将 orientationMode
设置为 ADAPTIVE 模式,则如果视频帧在播放端发生旋转,水印也会以其左上角为坐标原点,跟着视频帧旋转。watermark | 待添加在本地直播推流中的水印图片,详细定义见 AgoraImage |
|
abstract |
添加本地视频水印。
该方法将一张 PNG 图片作为水印添加到本地发布的直播视频流上,同一直播频道中的观众、旁路直播观众和采集设备都能看到或采集到该水印图片。 声网当前只支持在直播视频流中添加一个水印,后添加的水印会替换掉之前添加的水印。
水印坐标和 setVideoEncoderConfiguration
方法中的设置有依赖关系:
setVideoEncoderConfiguration
方法中设置的视频尺寸,否则超出部分将被裁剪。enableVideo
方法之后再调用本方法。setLiveTranscoding
方法设置水印。startPreview
方法开启本地视频预览,那么本方法的 visibleInPreview 可设置水印在预览时是否可见。watermarkUrl | 待添加的水印图片的本地路径。支持 URI 地址、绝对路径或以 /assets/ 开头的路径。 Note 通过绝对路径访问本地文件可能会遇到权限问题,声网推荐使用 URI 地址访问本地文件。例如:"content://com.android.providers.media.documents/document/image%3A1384"。 |
options | 待添加的水印图片的设置选项。详见 Watermark Options 。 |
|
abstract |
删除本地视频水印。 该方法删除使用 addVideoWatermark
方法添加的本地视频水印。
|
abstract |
设置用户媒体流优先级。
如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。 弱网下 SDK 会优先保证高优先级用户收到的流的质量。
该方法需要在加入频道前调用。
uid | 远端用户的 ID |
userPriority | 远端用户的优先级:
|
|
abstract |
设置弱网条件下发布的音视频流回退选项。
网络不理想的环境下,直播音视频的质量都会下降。使用该接口并将 option 设置为 STREAM_FALLBACK_OPTION_AUDIO_ONLY(2)
后,SDK 会在上行弱网且音视频质量严重受影响时,自动关断视频流,从而保证或提高音频质量。同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。当本地推流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发 本地发布的媒体流已回退为音频流 onLocalPublishFallbackToAudioOnly
回调。
该方法需要在加入频道前调用。
option | 本地推流回退处理选项:
|
|
abstract |
设置弱网条件下订阅的音视频流回退选项。
网络不理想的环境下,直播音视频的质量都会下降。使用该接口并将 option 设置为 STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW(1)
或者 STREAM_FALLBACK_OPTION_AUDIO_ONLY(2)
后,SDK 会在下行弱网且音视频质量严重受影响时, 将视频流切换为小流,或关断视频流,从而保证或提高音频质量。同时 SDK 会持续监控网络质量,并在网络质量改善时恢复音视频流。当远端订阅流回退为音频流时,或由音频流恢复为音视频流时,SDK 会触发 远端订阅流已回退为音频流 onRemoteSubscribeFallbackToAudioOnly
回调。
该方法需要在加入频道前调用。
option | 远端订阅流回退处理选项:
|
|
abstract |
开/关视频双流模式。
该方法设置单流或者双流模式。发送端开启双流模式后,接收端可以选择接收大流还是小流。其中,大流指高分辨率、高码率的视频流,小流指低分辨率、低码率的视频流。
该方法在加入频道前后都能调用。
enabled | 指定双流或者单流模式:
|
|
abstract |
设置订阅的视频流类型。
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode(false)
关闭双流模式,接收端可以选择接收大流还是小流。其中,大流为高分辨率高码率的视频流, 小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需节约带宽和计算资源,则可以调用该方法动态调整对应远端视频流的大小。 SDK 会根据该方法中的设置,切换大小流。
视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
调用本方法的执行结果将在 onApiCallExecuted
中返回。
setRemoteVideoStreamType
,也调用了 setRemoteDefaultVideoStreamType
,则 SDK 以 setRemoteVideoStreamType
中的设置为准。uid | 用户 ID |
streamType | 视频流类型:
|
|
abstract |
设置默认订阅的视频流类型。
setRemoteVideoStreamType
,则 SDK 以 setRemoteVideoStreamType
中的设置为准。streamType | 视频流类型:
|
|
abstract |
开启或关闭 Wi-Fi 加速功能。
当 SDK 发现集成加速插件的 Wi-Fi 路由器后,该功能才会生效,使路由器合理分配 Wi-Fi 频谱资源, 以降低丢包率和时延,从而减少音视频卡顿。
当路由器提供加速服务后,SDK 会周期性触发 onWlAccStats
回调,报告 Wi-Fi 连接优化数据, 并在 Wi-Fi 连接质量不佳时触发 onWlAccMessage
回调,报告 Wi-Fi 连接质量不佳的原因和改善 Wi-Fi 连接的操作建议。
enableWirelessAccelerate(false)
关闭加速功能。 如果 Wi-Fi 路由器不支持加速功能,系统性能不会受损。enabled | 设置是否开启 Wi-Fi 加速功能:
|
|
abstract |
启用内置加密,并设置数据加密密码。
enableEncryption
。如果需要启用加密,请在加入频道前调用 setEncryptionSecret
启用内置加密功能,并设置加密密码。同一频道内的所有用户应设置相同的密码。 当用户离开频道时,该频道的密码会自动清除。如果未指定密码或将密码设置为空,则无法激活加密功能。
secret | 加密密码。 |
|
abstract |
设置内置的加密方案。
enableEncryption
。SDK 支持内置加密功能,默认使用 AES-128-XTS 加密方式。如需使用其他加密方式,可以调用该 API 设置。 同一频道内的所有用户必须设置相同的加密方式和密码才能进行通话。关于这几种加密方式的区别,请参考 AES 加密算法的相关资料。
setEncryptionSecret
启用内置加密功能。encryptionMode | 加密方式:
|
|
abstract |
开启或关闭内置加密。
在安全要求较高的场景下,声网建议你在加入频道前,调用 enableEncryption
方法开启内置加密。
用户离开频道后,SDK 会自动关闭加密。如需重新开启加密,你需要在用户再次加入频道前调用该方法。
自 v3.4.5 起,声网推荐使用 AES_128_GCM2
或 AES_256_GCM2
加密模式。这两种模式支持设置盐,安全性更高。设置方法详见《媒体流加密》。
enabled | 是否开启内置加密:
|
config | 配置内置加密方案。详见 EncryptionConfig 。 |
IRtcEngine
对象并完成初始化。
|
abstract |
增加旁路推流地址。
调用该方法后,你可以向 CDN 推送 RTMP 或 RTMPS 协议的媒体流。SDK 会在本地触发 onRtmpStreamingStateChanged
回调,报告增加旁路推流地址的状态。
url | CDN 推流地址,格式为 RTMP 或 RTMPS。该字符长度不能超过 1024 字节。url 不支持中文等特殊字符。 |
transcodingEnabled | 是否转码。如果设为 true ,则需要在该方法前先调用 setLiveTranscoding 方法。
|
ERR_INVALID_ARGUMENT(2)
:参数无效,一般是 URL 为空或是长度为 0 的字符串 ERR_NOT_INITIALIZED(7)
:推流时未初始化引擎
|
abstract |
删除旁路推流地址。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged
回调,报告删除旁路推流地址的状态。
url | 待删除的推流地址,格式为 RTMP 或 RTMPS。该字符长度不能超过 1024 字节。推流地址不支持中文等特殊字符。 |
|
abstract |
设置直播转码。
该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码参数 LiveTranscoding
时,SDK 会触发 onTranscodingUpdated
回调。 首次调用该方法设置转码参数时,不会触发 onTranscodingUpdated
回调。
addPublishStreamUrl
。transcoding | 旁路推流布局相关设置,详细定义见 LiveTranscoding |
|
abstract |
开始非转码推流。
调用该方法,你可以向指定的 CDN 推流地址推送直播音视频流。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged
回调,报告推流的状态。
stopRtmpStream
,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。url | CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。 |
ERR_INVALID_ARGUMENT(2)
:url 为空或为长度为 0 的字符串。ERR_NOT_INITIALIZED(7)
:调用该方法前,未初始化 SDK。
|
abstract |
开始 CDN 直播推流并设置转码属性。
调用该方法,你可以向指定的 CDN 推流地址推送直播音视频流并设置转码属性。该方法每次只能向一个地址推送媒体流,如果你需要向多个地址转码推流,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged
回调,报告推流的状态。
stopRtmpStream
,再调用该方法重推,否则 SDK 会返回与上次推流失败时一样的错误码。url | CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。 |
transcoding | CDN 直播推流的转码属性,详见 LiveTranscoding 类。 |
ERR_INVALID_ARGUMENT(2)
:url 为空或为长度为 0 的字符串。ERR_NOT_INITIALIZED(7)
:调用该方法前,未初始化 SDK。
|
abstract |
更新转码属性。
开启转码推流后,你可以根据场景需求,动态更新转码属性。转码属性更新后,SDK 会触发 onTranscodingUpdated
回调。
transcoding | CDN 直播推流的转码属性,详见 LiveTranscoding 类。 |
|
abstract |
结束 CDN 直播推流。
调用该方法,你可以结束指定的 CDN 推流地址上的直播。该方法每次只能结束一个推流地址上的直播,如果你需要结束多个推流地址的直播,则需多次调用该方法。
调用该方法后,SDK 会在本地触发 onRtmpStreamingStateChanged
回调,报告推流的状态。
url | CDN 推流地址。格式为 RTMP 或 RTMPS。字符长度不能超过 1024 字节。不支持中文字符等特殊字符。 |
|
abstract |
创建数据流。
createDataStream
[2/2]。该方法用于创建数据流。RtcEngine 生命周期内,每个用户最多只能创建 5 个数据流。频道内数据通道最多允许数据延迟 5 秒,若超过 5 秒接收方尚未收到数据流,则数据通道会向 App 报错。
该方法需要在加入频道后调用。
reliable
设为 true
且将 ordered
设为 false
。reliable | 是否可靠。
|
ordered | 是否有序。
|
ERR_INVALID_ARGUMENT(-2)
。
|
abstract |
创建数据流。
该方法用于创建数据流。每个用户在每个频道内最多只能创建 5 个数据流。
该方法不支持数据可靠,接收方会丢弃超出发送时间 5 秒后的数据包。
config | 数据流设置:DataStreamConfig . |
|
abstract |
发送数据流。
该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:频道内每秒最多能发送 30 个包,且每个包最大为 1 KB。 每个客户端每秒最多能发送 6 KB 数据。频道内每人最多能同时有 5 个数据通道。
成功调用该方法后,远端会触发 onStreamMessage
回调,远端用户可以在该回调中获取接收到的流消息;若调用失败,远端会触发 onStreamMessageError
回调。
createDataStream
创建了数据通道。streamId | 数据流 ID,createDataStream 的返回值。 |
message | 待发送的数据。 |
|
abstract |
设置视频优化选项(仅适用于直播)。
VideoEncoderConfiguration
类中的 degradationPrefer
参数设置视频质量偏好。 该方法允许用户设置视频的优化选项。preferFrameRateOverImageQuality | 支持两种优化选项:
|
|
abstract |
设置本地视频镜像。
setupLocalVideo
或 setLocalRenderMode
。setupLocalVideo
方法初始化本地视图后调用该方法。mode | 本地视频镜像模式:
|
|
static |
|
abstract |
切换前置/后置摄像头。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
|
abstract |
检测设备是否支持摄像头缩放功能。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
|
abstract |
检查设备是否支持打开闪光灯。
SDK 默认使用前置摄像头,因此如果你直接调用 isCameraTorchSupported
,你可以从返回值中了解使用前置摄像头时是否 支持打开闪光灯。如果你想检查使用后置摄像头时设备是否支持打开闪光灯,请先调用 switchCamera
切换 SDK 使用的摄像头为后置摄像头,再调用 isCameraTorchSupported
。
|
abstract |
检测设备是否支持手动对焦功能。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
|
abstract |
检测设备是否支持手动曝光功能。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
|
abstract |
检测设备是否支持人脸对焦功能。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
|
abstract |
设置摄像头缩放比例。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
factor | 相机缩放比例,有效范围从 1.0 到最大缩放 |
|
abstract |
获取摄像头支持最大缩放比例。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
|
abstract |
设置手动对焦位置,并触发对焦。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
成功调用该方法后,本地会触发 onCameraFocusAreaChanged
回调。
positionX | 触摸点相对于视图的横坐标 |
positionY | 触摸点相对于视图的纵坐标 |
|
abstract |
设置手动曝光位置。
该方法需要在相机启动(如通过调用 startPreview
或 joinChannel
实现)后调用。
成功调用该方法后,本地会触发 onCameraExposureAreaChanged
回调。
positionXinView | 触摸点相对于视图的横坐标 |
positionYinView | 触摸点相对于视图的纵坐标 |
|
abstract |
开启/关闭本地人脸检测。
开启本地人脸检测后,SDK 会触发 onFacePositionChanged
回调向你报告人脸检测的信息:
enable | 是否开启人脸检测:
|
|
abstract |
设置是否打开闪光灯。
isOn | 是否打开闪光灯:
|
|
abstract |
设置是否开启人脸对焦功能。
SDK 默认关闭人脸自动对焦,如需自行设置人脸自动对焦,请调用该方法。
enabled | 是否开启人脸自动对焦:
|
|
abstract |
获取通话 ID。
获取当前的通话 ID。客户端在每次 joinChannel
后会生成一个对应的 CallId,标识该客户端的此次通话。有些方法如 rate, complain 需要在通话结束后调用,向 SDK 提交反馈,这些方法必须指定 CallId 参数。使用这些反馈方法,需要在通话过程中调用 getCallId
方法获取 CallId,在通话结束后在反馈方法中作为参数传入。 该方法需要在加入频道后调用。
|
abstract |
给通话评分。
该方法需要在离开频道后调用。
callId | 通过 getCallId 函数获取的通话 ID |
rating | 给通话的评分,最低 1 分,最高 5 分,如超过这个范围,SDK 会返回 ERR_INVALID_ARGUMENT(-2) 错误 |
description | (非必选项)给通话的描述,可选,长度应小于 800 字节 |
|
abstract |
投诉通话质量。
该方法让用户就通话质量进行投诉。需要在离开频道后调用。
callId | 通话 getCallId 函数获取的通话 ID |
description | (非必选项)给通话的描述,可选,长度应小于 800 字节 |
|
static |
查询 SDK 版本号。
该方法在加入频道前后都能调用。
|
static |
|
abstract |
设置 SDK 输出的日志文件。
默认情况下,SDK 会生成 agorasdk.log、agorasdk_1.log、agorasdk_2.log、agorasdk_3.log、agorasdk_4.log 这 5 个日志文件。 每个文件的默认大小为 1024 KB。日志文件为 UTF-8 编码。最新的日志永远写在 agorasdk.log 中。agorasdk.log 写满后,SDK 会从 1-4 中删除修改时间最早的一个文件,然后将 agorasdk.log 重命名为该文件,并建立新的 agorasdk.log 写入最新的日志。
filePath | 日志文件的完整路径。默认路径为 /storage/emulated/0/Android/data/<package name>/files/agorasdk.log 。请确保指定的目录存在而且可写。你可通过该参数修改日志文件名。 |
|
abstract |
设置日志输出等级。
该方法设置 SDK 的日志输出等级。不同的等级可以单独或组合使用。
日志级别顺序依次为 OFF、CRITICAL、ERROR、WARNING、INFO 和 DEBUG。选择一个级别,你就可以看到在该级别之前所有级别的日志信息。 例如,你选择 WARNING 级别,就可以看到在 CRITICAL、ERROR 和 WARNING 级别上的所有日志信息。
filter | 日志输出等级。按照输出日志最全到最少排列:
|
|
abstract |
设置 SDK 输出的日志文件大小。
默认情况下,SDK 会生成 agorasdk.log、agorasdk_1.log、agorasdk_2.log、agorasdk_3.log、agorasdk_4.log 这 5 个日志文件。
每个文件的默认大小为 1024 KB。日志文件为 UTF-8 编码。最新的日志永远写在 agorasdk.log 中。agorasdk.log 写满后,SDK 会从 1-4 中删除修改时间最早的一个文件,然后将 agorasdk.log 重命名为该文件,并建立新的 agorasdk.log 写入最新的日志。
如果想要设置日志文件的大小,则需要在 setLogFile
前调用该方法,否则日志会被清空。
fileSizeInKBytes | 单个日志文件的大小,单位为 KB。默认值为 1024 KB。如果你将 fileSizeInKByte 设为 1024 KB,SDK 会最多输出 5 MB 的日志文件。如果你将 fileSizeInKByte 设为小于 1024 KB,单个日志文件最大仍为 1024 KB。 |
|
abstract |
返回 SDK 引擎的 Native 句柄。
该方法用于获取 SDK 引擎的 C++ 句柄并将其应用于包括注册音视频帧观察器的特殊场景。
void io.agora.rtc.RtcEngine.addHandler | ( | IRtcEngineEventHandler | handler | ) |
添加主回调事件。
IRtcEngineEventHandler 接口类用于 SDK 向 App 发送回调事件通知,App 通过继承该接口类的方法获取 SDK 的事件通知。详见 IRtcEngineEventHandler。 接口类的所有方法都有缺省(空)实现,App 可以根据需要只继承关心的事件。在回调方法中,App 不应该做耗时或者调用可能会引起阻塞的 API(如 SendMessage),否则可能影响 SDK 的运行。
handler | IRtcEngineEventHandler |
void io.agora.rtc.RtcEngine.removeHandler | ( | IRtcEngineEventHandler | handler | ) |
删除指定的回调句柄。
该方法删除指定的回调句柄。对于某些注册的回调句柄,如果你在收到相应回调事件后无需再次接收回调消息,可以调用该方法移除回调句柄。
handler | 你想要删除的回调句柄。 |
|
abstract |
启用/关闭 WiFi 模式。
enable |
|
|
static |
|
abstract |
|
abstract |
|
abstract |
|
abstract |
通过 JSON 配置 SDK 提供技术预览或特别定制功能。
JSON 选项默认不公开。声网工程师正在努力寻求以标准化方式公开 JSON 选项。
parameters | JSON 字符串形式的参数 |
|
abstract |
获取 SDK 可供自定义的参数。 该方法暂未公开,请联系声网支持 support@agora.io 获取详情。
|
abstract |
注册媒体 Metadata 观测器。
你需要在该方法中实现一个 IMetadataObserver 类,并指定 Metadata 的数据类型。成功调用该方法后,SDK 会触发 getMaxMetadataSize
回调。
该接口通过在直播的视频帧中同步添加 Metadata,实现发送商品链接、分发优惠券、发送答题等功能,构建更为丰富的直播互动方式。
joinChannel
加入频道前调用该方法。observer | IMetadataObserver 类。 |
type | Metadata 的数据类型,目前 SDK 仅支持视频类的 Metadata,即 VIDEO_METADATA(0) 。
|
|
abstract |
开始跨频道媒体流转发。
该方法可用于实现跨频道媒体流转发。
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged
和 onChannelMediaRelayEvent
回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
onChannelMediaRelayStateChanged
回调报告 RELAY_STATE_RUNNING(2) 和 RELAY_OK(0),且 onChannelMediaRelayEvent
回调报告 RELAY_EVENT_PACKET_SENT_TO_DEST_CHANNEL(4), 则表示 SDK 开始在源频道和目标频道之间转发媒体流。onChannelMediaRelayStateChanged
回调报告 RELAY_STATE_FAILURE(3),则表示跨频道媒体流转发出现异常。stopChannelMediaRelay
方法退出当前的转发状态。channelMediaRelayConfiguration | 跨频道媒体流转发参数配置:ChannelMediaRelayConfiguration 。 |
|
abstract |
停止跨频道媒体流转发。
一旦停止,主播会退出所有目标频道。
成功调用该方法后,SDK 会触发 onChannelMediaRelayStateChanged
回调。如果报告 RELAY_STATE_IDLE(0) 和 RELAY_OK(0),则表示已停止转发媒体流。
onChannelMediaRelayStateChanged
回调,并报告错误码 RELAY_ERROR_SERVER_NO_RESPONSE(2)
或 RELAY_ERROR_SERVER_CONNECTION_LOST(8)
。你可以调用 leaveChannel
方法离开频道,跨频道媒体流转发会自动停止。
|
abstract |
更新媒体流转发的频道。
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 onChannelMediaRelayEvent
回调,并在回调中报告状态码 RELAY_EVENT_PACKET_UPDATE_DEST_CHANNEL(7)。
startChannelMediaRelay
方法并收到 onChannelMediaRelayStateChanged(RELAY_STATE_RUNNING, RELAY_OK)
后调用该方法;否则,方法调用会失败。ChannelMediaRelayConfiguration
类中的 removeDestChannelInfo
方法移除不需要的频道。channelMediaRelayConfiguration | 跨频道媒体流转发参数配置:ChannelMediaRelayConfiguration |
|
abstract |
暂停向所有目标频道转发媒体流。
开始跨频道转发媒体流后,如果你需要暂停向所有频道转发媒体流,可以调用该方法; 暂停后,如果要恢复跨频道媒体流转发,可以调用 resumeAllChannelMediaRelay
方法。
成功调用该方法后,SDK 会触发 onChannelMediaRelayEvent
回调,并在回调中报告是否成功暂停媒体流转发。
startChannelMediaRelay
后调用。
|
abstract |
恢复向所有目标频道转发媒体流。
调用 pauseAllChannelMediaRelay
方法后,如果你需要恢复向所有目标频道转发媒体流,可以调用该方法。
成功调用该方法后,SDK 会触发 onChannelMediaRelayEvent
回调,并在回调中报告是否成功恢复媒体流转发。
pauseAllChannelMediaRelay
后调用。
|
abstract |
创建并获取一个 RtcChannel 对象。
你可以多次调用该方法,创建多个 RtcChannel 对象,再调用各 RtcChannel 对象中的 joinChannel 方法,实现同时加入多频道。
加入多个频道后,你可以同时订阅各个频道的音、视频流;但是同一时间只能在一个频道发布一路音、视频流。
channelId | 能标识频道的频道名,长度在 64 字节以内的字符。以下为支持的字符集范围(共 89 个字符):
|
|
abstract |
设置本地代理。
成功部署声网混合云或声网私有化平台并在内网终端集成声网 Native SDK 后,你需要调用该方法指定 Local Access Point 来设置本地代理。 成功设置本地代理后,SDK 会自动将日志上传到声网日志服务器。如果你需要将日志上传到指定的服务器,可以通过 LocalAccessPointConfiguration
的 advancedConfig
成员设置。
config | Local Access Point 的配置。详见 LocalAccessPointConfiguration 类。 |
|
abstract |
获取视频截图。
该方法用于对指定用户的视频流进行截图,生成一张 JPG 格式的图片,并保存至指定的路径。
该方法是异步操作,调用返回时 SDK 并没有真正获取截图。成功调用该方法后,SDK 会触发 onSnapshotTaken
回调报告截图是否成功和获取截图的详情。
相比 enableContentInspect
方法,本方法是即时截图,截图会保存在你指定的本地路径。
channel | 频道名。 |
uid | 用户 ID。如果要对本地用户的视频截图,uid 设为 0 。 |
filePath | 截图的本地保存路径,需精确到文件名及格式,例如:/storage/emulated/0/Android/data/<package name>/files/example.jpg 。 请确保目录存在且可写。 |
|
abstract |
开启/关闭视频截图上传。
开启视频截图上传后,SDK 会根据你在 ContentInspectConfig
中设置的视频截图上传模块类型和频率对本地用户发送的视频进行截图、上传。 截图完成后,声网服务器会以 HTTPS 请求的形式通知你的服务器并将所有截图发送至你指定的第三方云存储。
相比 takeSnapshot
方法,本方法可以按照你设置的截图频率进行周期性截图,并将截图发送至你指定的第三方云存储。
libagora_ci_extension.so
动态库集成到项目中。enabled | 设置是否开启视频截图上传:
|
config | 视频截图上传配置。详见 ContentInspectConfig 。 |
|
static |
设置 .so
文件的存储目录
默认情况下,SDK 从 app 的 nativeLibraryPath
中加载 .so
文件。 你可以调用该方法指定 .so
文件的存储目录,SDK 会在初始化 RtcEngine
实例时根据指定的目录自动加载 .so
文件。
一般情况下,你需要在编译 app 时打包所需的 .so
文件,但这样可能会增加 app 的包体积。你可以调用该方法, 使 app 在运行时动态加载需要的 .so
文件,从而减小 app 的包体积,详见减少 App 体积。
path | .so 文件的存储目录,必须为 app 的私有目录,可以通过 Context.getDir() 获取。请确保指定的目录存在,否则 SDK 会报 InvalidParameterException 错误。 |
|
abstract |
开始屏幕共享。
屏幕共享时,请确保用户已授予应用屏幕采集权限,Android API 级别不低于 21,否则 SDK 会报告 ERR_SCREEN_CAPTURE_PERMISSION_DENIED(16)
和 ERR_SCREEN_CAPTURE_SYSTEM_NOT_SUPPORTED(2)
。 如需在屏幕共享时采集系统音频,你还需确保 Android API 级别不低于 29,否则 SDK 会报告 错误码 ERR_SCREEN_CAPTURE_SYSTEM_AUDIO_NOT_SUPPORTED(3)
。
/app/Manifests/AndroidManifest.xml
文件中添加前台服务权限:android.permission.FOREGROUND_SERVICE
。ScreenCaptureParameters
中 width
和 height
的值为准: 当你未传值时,以 1280 × 720 计费;当你传值时,以你传入的值计费。详细的计费规则请参考实时音视频计费。setAudioProfile
方法设置音频场景为 GAME_STREAMING
。例如,调用 setAudioProfile(Constants.AUDIO_PROFILE_DEFAULT,Constants.AUDIO_SCENARIO_GAME_STREAMING)
。screenCaptureParameters | 屏幕共享的配置。详见 ScreenCaptureParameters 。 |
|
abstract |
结束屏幕共享。
调用该方法结束屏幕共享后,如果你想切换为摄像头采集用户视频, 请调用 setVideoSource(new AgoraDefaultSource())
; 如果你想重新开始屏幕共享,请调用 startScreenCapture
。
|
abstract |
更新屏幕共享配置。
startScreenCapture
后调用该方法。captureVideo | 屏幕共享时是否采集屏幕:
|
注意:受系统限制,采集屏幕仅适用于 Android API 级别为 21 及以上,即 Android 5 及以上。
captureAudio | 屏幕共享时是否采集系统音频:
|
注意:受系统限制,采集系统音频仅适用于 Android API 级别为 29 及以上,即 Android 10 及以上。
videoCaptureParameters | 屏幕共享的配置。详见 VideoCaptureParameters 。 |
注意:该参数仅适用于 captureVideo
为 true
。