如果你希望从此前版本的 Android 客户端 SDK 升级到最新的客户端 SDK,请在工程文件中,替换最新的客户端 SDK 文件,并参考本文完成 API,回调,参数类型等的替换。

升级过程中,你可能需要参考历史版本文档归档。

3.54

该版本为全部 API 增加返回值,通过返回值可以明确发现失败的 API 调用,定位失败原因。具体返回值的含义参看各 API 注释。

方法变更
变更详情功能模块变动前方法变动后方法说明
将混音相关的类和接口按音效和音乐进行拆分,具体变动情况请参看混音相关的新旧接口对应表混音一般来说,对于短时间的音效(比如小于 20s),可以使用音效类;对于较长的音频或 PCM 数据,可以使用音乐类。

附:混音相关的新旧接口对应表

接口分类接口用途
废弃类/接口
新类/接口(音效)
新类/接口(音乐)
备注
获取实例获取播放器实例getAudioMixingManagergetAudioEffectManagergetAudioMediaManager
混音类IAudioMixingManagerIAudioEffectManagerIAudioMediaManager

混音主调接口

将音效文件加载至内存

  • preloadAudioMixing
  • unloadAudioMixing
  • preload
  • unload
  • unloadAll
  • open
  • openWithCustomSource

播放/停止/暂停/恢复

  • startAudioMixing
  • stopAudioMixing
  • stopAllAudioMixing
  • pauseAudioMixing
  • pauseAllAudioMixing
  • resumeAudioMixing
  • resumeAllAudioMixing
  • start
  • stop
  • stopAll
  • pause
  • pauseAll
  • resume
  • resumeAll
  • start
  • stop
  • stopAll
  • pause
  • resume

获取/指定位置/时长

  • setAudioMixingPosition
  • getAudioMixingCurrentPosition
  • getAudioMixingDuration
  • setPosition
  • getPosition
  • getDuration
  • setPosition
  • getTotalDuration
  • getPlaybackDuration

获取/指定音量

  • setAudioMixingVolume
  • NA
  • setVolume
  • getVolume
  • setVolume
  • getVolume
调整音调setAudioMixingPitchNAsetAudioPitch
设置声道模式setAudioMixingDualMonoModeNAsetAudioDualMonoMode

获取/设置音轨数

  • getAudioTrackCount
  • selectAudioTrack

NA

  • getAudioTrackCount
  • selectAudioTrack

Index 取值修改为从 0 开始

设置播放速度setAudioMixingPlaybackSpeedNAsetPlaybackSpeed
设置播放进度回调间隔setAudioMixingProgressIntervalNAsetProgressInterval
设置响度setAudioMixingLoudnessNAsetLoudness

播放外部音频源

  • enableAudioMixingFrame
  • disableAudioMixingFrame
  • pushAudioMixingFrame

NA

  • openWithCustomSource
  • pushExternalAudioFrame

混音回调接口

播放状态回调

onAudioMixingStateChanged

  • setEventHandler
  • onAudioEffectPlayerStateChanged
  • setEventHandler
  • onMediaPlayerStateChanged
  • onMediaPlayerPlayingProgress

音频数据回调

  • registerAudioFileFrameObserver
  • onAudioFileFrame

NA

  • IMediaPlayerAudioFrameObserver
  • onFrame
3.52
方法变更
变更详情功能模块变动前方法变动后方法说明
参数变更引擎管理feedback参数数据类型变更

行为变更

高级功能

startAudioRecording

在此前版本中,此接口仅支持进房后调用。
自此版本后,此接口在进房前后均可调用。进房前调用,退房之后录制任务不会自动停止;进房后调用,退房之后录制任务会自动停止。

合并

高级功能

  • updatePosition
  • updateSelfOrientation

updateSelfPosition

新接口支持本地用户同时设置自己的发声位置和发声朝向。

  • updateListenerPosition
  • updateListenerOrientation

updateRemotePosition

新接口支持本地用户设置远端用户的发声位置和发声朝向。

废弃CDN 推流public abstract int startLiveTranscoding(String taskId, LiveTranscoding liveTranscode, ILiveTranscodingObserver observer);startLiveTranscodingpublic abstract int startPushMixedStreamToCDN(String taskId, MixedStreamConfig mixedConfig, IMixedStreamObserver observer);合流转推直播接口/参数类型重命名,行为逻辑无变化,新旧版本类名对应关系参看该版本中的“类型变更”
public abstract int stopLiveTranscoding(String taskId);public abstract int stopPushStreamToCDN(String taskId);
public abstract int updateLiveTranscoding(String taskId, LiveTranscoding transcoding);public abstract int updatePushMixedStreamToCDN(String taskId, MixedStreamConfig mixedConfig);
回调变更
变更详情功能模块变动前回调变动后回调

参数变更、拆分

音视频传输

onPublicStreamSEIMessageReceived

参数 sourceType 的类型由 SEIMessageSourceType 变更为 DataMessageSourceType
拆分为:

类型变更
变更详情类型变更前变更后说明
重命名转推直播一级结构体LiveTranscodingMixedStreamConfig结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看
转推直播 ObserverILiveTranscodingObserverIMixedStreamObserver升级该版本你需要 import com.ss.bytertc.engine.video.VideoFrame 类替代 org.webrtc.VideoFrame 类
转推直播二级结构体VideoConfigMixedStreamVideoConfig结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看
AudioConfigMixedStreamAudioConfig
SpatialConfigMixedStreamSpatialConfig
ClientMixParamMixedStreamClientMixConfig
RegionMixedStreamLayoutRegionConfig
LayoutMixedStreamLayoutConfig
转推直播相关枚举类型TranscoderClientMixVideoFormatMixedStreamClientMixVideoFormat各枚举类中的枚举值名称均有变更,请至对应的类型详情中查看
TranscoderContentControlTypeMixedStreamMediaType
TranscoderRenderModeMixedStreamRenderMode
TranscoderLayoutRegionTypeMixedStreamLayoutRegionType
AACProfileMixedStreamAudioProfile
VideoCodecTypeMixedStreamVideoCodecType
AudioCodecTypeMixedStreamAudioCodecType
ByteRTCStreamMixingTypeMixedStreamType
错误码变更
变更详情错误码说明

枚举值变更

PublicStreamErrorCode

新增枚举值:

  • ERROR_CODE_PULL_NO_PUSH_STREAM(1300)

名称变更:

  • ERROR_CODE_PARAM_ERROR(1191) 更新为 ERROR_CODE_PUSH_PARAM_ERROR(1191)

  • ERROR_CODE_STATE_ERROR(1192) 更新为 ERROR_CODE_PUSH_STATE_ERROR(1192)

  • ERROR_CODE_INTERNAL_ERROR(1193) 更新为 ERROR_CODE_PUSH_INTERNAL_ERROR(1193)

ErrorCode

新增枚举值:
ERROR_CODE_JOIN_ROOM_ROOM_FORBIDDEN=-1025 和 ERROR_CODE_JOIN_ROOM_USER_FORBIDDEN=-1026。
当服务端在指定房间封禁指定用户,而此用户加入房间失败,或从房间中被踢出时收到。

废弃枚举值 ERROR_CODE_OVER_SCREEN_PUBLISH_LIMIT=-1081,用 ERROR_CODE_OVER_STREAM_PUBLISH_LIMIT=-1080 替代。
3.50
产物变更

该版本 SDK 产物新增 apm_insight_crash_lite 依赖库,若以离线方式集成 SDK,需手动添加该依赖库,具体添加方式参看添加依赖。

方法变更
变更详情功能模块变动前方法变动后方法备注
拆分视频管理public abstract int registerFaceDetectionObserver(IFaceDetectionObserver observer, int interval);解除人脸识别与视频特效之间的耦合,提升接口易用性。
参数类型变更屏幕共享public abstract int setScreenVideoEncoderConfig(VideoEncoderConfig screen_solution);public abstract int setScreenVideoEncoderConfig(ScreenVideoEncoderConfig screen_solution);参数类型变更为新增的 ScreenVideoEncoderConfig
行为变更屏幕共享
  • setVideoSourceType: 屏幕流默认为外部源
  • setScreenAudioSourceType: 当前设置为内部源时,且已开启了采集,调用该接口切换为外部源时,不会停止内部采集
  • startScreenCapture: 当前为外部源时,调用本接口将自动切换为内部源,并开启采集
  • stopScreenCapture: 当前为外部源时,调用本接口将关闭外部采集
优化屏幕共享接口的行为
废弃自定义流处理registerVideoFrameObserver用 setLocalVideoSink 代替
所属类型变更、名称变更、参数变更音视频处理
  • public abstract int checkVideoEffectLicense(Context context , String licenseFile);
  • public abstract void setVideoEffectAlgoModelPath(String modelPath);
public abstract int initCVResource(String license_file, String algo_model_dir);
  • 统一从 RTCVideo 类下调整到 IVideoEffect 类下
  • 统一返回值

public abstract int enableVideoEffect(boolean enable);

public abstract int setVideoEffectNodes(List<String> effectNodes);public abstract int setEffectNodes(List<String> effect_nodes);
public abstract int updateVideoEffectNode(String effectNode, String key, float value);public abstract int updateEffectNode(String effect_node, String key, float value);

public abstract int setBackgroundSticker(String modelPath, VirtualBackgroundSource source);

public abstract int setVideoEffectColorFilter(String resFile);public abstract int setColorFilter(String filter_res);
public abstract int setVideoEffectColorFilterIntensity(float intensity);public abstract int setColorFilterIntensity(float intensity);
参数变更消息public abstract int sendSEIMessage(StreamIndex streamIndex, byte[] message, int repeatCount);public abstract int sendSEIMessage(StreamIndex streamIndex, byte[] message, int repeatCount, SEICountPerFrame mode);支持 SEI 多发模式,即在 1 帧间隔内多次发送 SEI 数据时,多个 SEI 随下个视频帧同时发送。

多个模块

返回值类型变化,例如:

  • 旧方法——public abstract void updateToken(String token);

  • 新方法——public abstract int updateToken(String token);

以下接口返回值类型由 void 变为 int,具体 int 值含义参考新增数据结构 ReturnStatus:

updateToken

setRemoteVideoConfig

subscribeStream

unsubscribeStream

subscribeScreen

unsubscribeScreen

setVoiceChangerType

setRemoteAudioPlaybackVolume

setPublicStreamVideoSink

以下接口返回值类型由 boolean 变为 int,具体 int 值含义参考新增数据结构 ReturnStatus:

setVoiceReverbType

pushExternalVideoFrame

pushExternalEncodedVideoFrame

以下接口返回值类型由 int 变为 void:

setMultiDeviceAVSync

setLocalVideoMirrorType

setVideoRotationMode

setAudioRoute

registerAudioFrameObserver

registerAudioProcessor

enableSimulcastMode

setPublishFallbackOption

setSubscribeFallbackOption

updateLocalVideoCanvas

setRemoteVideoCanvas

视频管理public abstract void updateRemoteStreamVideoCanvas(String roomId, String userId, StreamIndex streamIndex, int renderMode, int background_color);public abstract void updateRemoteStreamVideoCanvas(RemoteStreamKey stream_key, int renderMode, int background_color);通过 stream_key 传入 roomId、userId 和 streamIndex。
public abstract int setRemoteVideoCanvas(String userId, StreamIndex streamIndex, VideoCanvas videoCanvas);public abstract void setRemoteVideoCanvas(RemoteStreamKey stream_key, VideoCanvas videoCanvas);通过 stream_key 传入 userId 和 streamIndex。
名称变更引擎管理getSdkVersiongetSDKVersion修正大小写。

名称和参数变更

屏幕分享

public abstract boolean pushScreenFrame(VideoFrame videoFrame);

public abstract int pushScreenVideoFrame(VideoFrame videoFrame);

  • 返回参数由 boolean 变更为 int。
  • 方法名称由 pushScreenFrame 变更为 pushScreenVideoFrame。
回调变更
变更详情功能模块变动前方法变动后方法备注
废弃音频管理onLocalAudioStateChanged 和 onLocalVideoStateChanged用 onAudioDeviceStateChanged 和 onVideoDeviceStateChanged 代替

行为变更

自定义流处理

onProcessRecordAudioFrame

在此前版本中,修改通过此回调返回的音频帧,会影响发送到远端的音频数据和本地软件耳返中的音频数据。
自此版本后,修改此回调中返回的音频帧,仅影响发送到远端的音频数据;如果你希望修改本地软件耳返中音频数据,参看 onProcessEarMonitorAudioFrame。

参数变更

CDN 推流

void onMixingAudioFrame(String taskId, byte[] audioFrame, int frameNum);

void onMixingAudioFrame(String taskId, byte[] audioFrame, int frameNum, long timeStampMs);

新增参数 timeStampMs

消息public void onPublicStreamSEIMessageReceived(String publicStreamId, ByteBuffer message) {}public void onPublicStreamSEIMessageReceived(String publicStreamId, ByteBuffer message, SEIMessageSourceType sourceType) {}新增参数 sourceType

名称变更

自定义流处理

OnStart

onStart

大驼峰变更为小驼峰

OnStoponStop
OnRateUpdateonRateUpdate
OnRequestKeyFrameonRequestKeyFrame
OnRemoteEncodedVideoFrameonRemoteEncodedVideoFrame
CDN 推流onDataFrameonMixingDataFrame

删除回调类

范围语音

IRangeAudioObserver 类和相关的接口

此前,在手动订阅的场景下,如果你希望使用范围语音功能,你必须根据此回调获取的衰减系数,设定音量。
自此版本起,无论是手动订阅还是自动订阅,衰减效果都由 SDK 实现,无需使用此接口。

类型变更
变更详情数据类型备注
取值范围拓展Livetranscoding.Region.size 中,width 和 height取值范围由 (0.0, 1.0] 拓展为 [0.0, 1.0]。
枚举值变化AudioRouteAUDIO_ROUTE_UNKNOWN->AUDIO_ROUTE_DEFAULT
音频路由和发布订阅状态到音量类型的映射关系改变AudioScenarioType最新的映射关系查看数据结构的文档。
成员变量变更FaceDetectionResult新增成员变量:frameTimestampUs

VideoCanvas

  • 删除以下变量:

roomId
uid
streamId
isScreen

  • RENDER_MODE_Fill 变更为 RENDER_MODE_FILL

枚举值增删

AudioProcessorMethod

新增枚举值:AUDIO_FRAME_PROCESSOR_EAR_MONITOR(3)

变量类型变更空间音频功能中表示空间坐标的 position 的 变量 x, y, z 类型由 int 更改为 float。提升球面立体声渲染效果。
配置变更ChannelProfile房间属性的默认值 CHANNEL_PROFILE_COMMUNICATION(0),对应的由 CHANNEL_PROFILE_CHAT_ROOM(6) 变更为 CHANNEL_PROFIEL_MEETING(16)。
成员变量增减LiveTranscoding新增成员变量:ClientMixParam
错误码变更
变更详情错误码说明
枚举值增删ErrorCode新增枚举值:ERROR_CODE_USER_ID_DIFFERENT = -1014
UserMessageSendResult新增枚举值:USER_MESSAGE_SEND_RESULT_EXCEED_QPS = 5
RoomMessageSendResult新增枚举值:ROOM_MESSAGE_SEND_RESULT_EXCEED_QPS = 5

枚举类增删

PublicStreamErrorCode

onPushPublicStreamResult 和 onPlayPublicStreamResult 中的 errorCode 参数类型由 int 改为 PublicStreamErrorCode

3.45.6
类型变更

以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

变更详情数据类型备注
枚举值增删AudioProcessorMethod新增屏幕共享音频的枚举值:AUDIO_FRAME_PROCESSOR_SCREEN(4)
3.45.4
方法变更

以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

变更详情功能模块
方法
备注
参数数据结构改动音频管理public abstract void enableAudioPropertiesReport(AudioPropertiesConfig config);数据结构中,新增参数:
  • AudioPropertiesMode
  • AudioReportMode
  • 方法行为变更高级功能public abstract void setEarMonitorMode(EarMonitorMode mode);自适应启用硬件耳返
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量增删AudioScenarioType新增高音质畅聊模式:AUDIO_SCENARIO_HIGHQUALITY_CHAT
    枚举值增删AudioProcessorMethod新增获取软件耳返音频:AUDIO_FRAME_PROCESSOR_EAR_MONITOR(3)
    3.45.2
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块
    变动前方法
    变动后方法
    备注
    废弃原方法音频处理public abstract void muteAudioPlayback(MuteState muteState);public abstract void setPlaybackVolume(int volume);设置远端用户音量为 0 即可停止播放本地收到的音频流
    3.44
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块
    变动前方法
    变动后方法
    备注

    合并、名称和参数变更

    音视频处理

    • public abstract int initVirtualBackground(Context context, String licenseFile, String modelFile);
    • public abstract int enableVirtualBackground(VirtualBackgroundSource source);
    • public abstract int disableVirtualBackground();

    public abstract int setBackgroundSticker(String modelPath, VirtualBackgroundSource source);

    3.43

    该版本部分头文件名称发生变化,请参照下表在工程文件中进行调整:

    平台3.423.43
    Android../IRTCRoom.java../RTCRoom.java
    ../RTCEngine.java../RTCVideo.java
    ../IRTCEngineEventHandler.java../IRTCVideoEventHandler.java
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情
    功能模块
    变动前方法变动后方法备注
    基础类名变更所有模块public abstract class RTCEnginepublic abstract class RTCVideo
    名称和参数变更多房间public abstract IRTCRoom createRoom(String roomId);public abstract RTCRoom createRTCRoom(String roomId);
    引擎管理public static synchronized RTCEngine createEngine(Context context, String appId, IRTCEngineEventHandler handler, Object eglContext, JSONObject parameters)public static synchronized RTCVideo createRTCVideo(Context context, String appId, IRTCVideoEventHandler handler, Object eglContext, JSONObject parameters)
    public static synchronized void destroyEngine(RTCEngine engine)public static synchronized void destroyRTCVideo(RTCVideo engine)
    位置迁移,所属类型变更
  • 房间管理
  • 消息
  • 屏幕共享
  • 音视频传输
  • 视频管理
  • 音频管理
  • 转推直播
  • 公共流管理
  • 多房间
  • 以下方法从 RTCVideo(原 RTCEngine)类下移除,使用 RTCRoom 类中的同名方法代替:
  • joinRoom
  • leaveRoom
  • pauseAllSubscribedStream
  • resumeAllSubscribedStream
  • updateToken
  • setUserVisibility
  • publishStream
  • unpublishStream
  • sendRoomMessage
  • sendRoomBinaryMessage
  • sendUserMessage
  • sendUserBinaryMessage
  • subscribeStream
  • unsubscribeStream
  • subscribeScreen
  • unsubscribeScreen
  • publishScreen
  • unpublishScreen
  • startForwardStreamToRooms
  • updateForwardStreamToRooms
  • stopForwardStreamToRooms
  • pauseForwardStreamToAllRooms
  • resumeForwardStreamToAllRooms
  • setRemoteVideoConfig
  • setMultiDeviceAVSync
  • 参数变更音频管理public abstract void setRemoteAudioPlaybackVolume(String uid, int volume);public abstract void setRemoteAudioPlaybackVolume(String roomId, String uid, int volume);新增 roomId 参数,且必填。
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情
    功能模块
    变动前方法变动后方法备注
    基础类名变更所有模块public abstract class IRTCEngineEventHandlerpublic abstract class IRTCVideoEventHandler
    位置迁移,所属类型变更
  • 引擎管理
  • 房间管理
  • 视频管理
  • 音频管理
  • 网络管理
  • 数据统计
  • 消息
  • 音视频传输
  • 公共流管理
  • 以下回调从 IRTCVideoEventHandler(原 IRTCEngineEventHandler)类下移除,使用 IRTCRoomEventHandler 类中的同名回调代替:
  • onroomstatechanged
  • onLeaveRoom
  • onRoomStats
  • onUserJoined
  • onUserLeave
  • onTokenWillExpire
  • onUserPublishStream
  • onUserUnPublishStream
  • onUserPublishScreen
  • onUserUnPublishScreen
  • onLocalStreamStats
  • onRemoteStreamStats
  • onRoomMessageReceived
  • onRoomBinaryMessageReceived
  • onUserMessageReceived
  • onUserBinaryMessageReceived
  • onUserMessageSendResult
  • onRoomMessageSendResult
  • onVideoStreamBanned
  • onAudioStreamBanned
  • onForwardStreamStateChanged
  • onForwardStreamEvent
  • onAVSyncStateChange
  • 参数变更音频管理public void onUserStartAudioCapture(String uid)public void onUserStartAudioCapture(String roomId, String uid)
    public void onUserStopAudioCapture(String uid)public void onUserStopAudioCapture(String roomId, String uid)
    音视频传输public void onUserStartVideoCapture(String uid)public void onUserStartVideoCapture(String roomId, String uid)
    public void onUserStopVideoCapture(String uid)public void onUserStopVideoCapture(String roomId, String uid)
    房间管理public void onAudioFrameSendStateChanged(RtcUser user, FirstFrameSendState state)public void onAudioFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state)
    public void onVideoFrameSendStateChanged(RtcUser user, FirstFrameSendState state)public void onVideoFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state)
    public void onScreenVideoFrameSendStateChanged(RtcUser user, FirstFrameSendState state)public void onScreenVideoFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state)
    public void onAudioFramePlayStateChanged(RtcUser user, FirstFramePlayState state)public void onAudioFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state)
    public void onVideoFramePlayStateChanged(RtcUser user, FirstFramePlayState state)public void onVideoFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state)
    public void onScreenVideoFramePlayStateChanged(RtcUser user, FirstFramePlayState state)public void onScreenVideoFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state)
    公共流管理public void onPushPublicStreamResult(String publicStreamId, int errorCode)public void onPushPublicStreamResult(String roomId, String publicStreamId, int error)
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量增删VideoEncoderConfig删除成员变量:ScaleMode
    枚举值增删ConnectionState增加枚举值:CONNECTION_STATE_FAILED(7)
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删ErrorCode新增枚举值:-1084
    3.42
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    基础类名变更所有模块public abstract class IRTCRoompublic abstract class RTCRoom
    位置迁移,所属类型变更多房间以下方法从 RTCRoom(原 IRTCRoom)类下移除,使用 RTCEngine 类中的同名方法代替:
  • setRemoteVideoCanvas
  • startLiveTranscoding
  • stopLiveTranscoding
  • updateLiveTranscoding
  • setRemoteAudioPlaybackVolume
  • startPushPublicStream
  • stopPushPublicStream
  • updatePublicStreamParam
  • 由于新方法变更为从引擎类上调用,因此增加了 roomId 相关的字段,且均为必填字段。
    参数变更音频路由public abstract int setAudioRoute(AudioRoute audioRouteDevice);public abstract int setAudioRoute(AudioRoute audioRoute);
    消息public abstract long sendUserMessage(String userId, String messageStr);public abstract long sendUserMessage(String userId, String messageStr, MessageConfig config);
    public abstract long sendUserBinaryMessage(String userId, byte[] buffer);public abstract long sendUserBinaryMessage(String userId, byte[] buffer, MessageConfig config);
    public abstract void sendRoomMessage(String messageStr);public abstract long sendRoomMessage(String messageStr);
    public abstract void sendRoomBinaryMessage(byte[] buffer);public abstract long sendRoomBinaryMessage(byte[] buffer);
    public abstract long sendUserMessageOutsideRoom(String uid, String message);public abstract long sendUserMessageOutsideRoom(String uid, String message, MessageConfig config);
    public abstract long sendUserBinaryMessageOutsideRoom(String uid, byte[] buffer);public abstract long sendUserBinaryMessageOutsideRoom(String uid, byte[] buffer, MessageConfig config);
    方法重构自定义音频处理public abstract int registerLocalAudioProcessor(IAudioProcessor audioProcessor, AudioFormat audioFormat);
  • public abstract int registerAudioProcessor(IAudioFrameProcessor processor);
  • public abstract void enableAudioProcessor(AudioProcessorMethod method, AudioFormat format);
  • public abstract void disableAudioProcessor(AudioProcessorMethod method);
  • 回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    位置迁移,所属类型变更多房间以下回调从 IRTCRoomEventHandler 类下移除,使用 IRTCEngineEventHandler 类中的同名回调代替:
  • onUserStartVideoCapture
  • onUserStopVideoCapture
  • onUserStartAudioCapture
  • onUserStopAudioCapture
  • onSimulcastSubscribeFallback
  • onLocalAudioStateChanged
  • onRemoteAudioStateChanged
  • onLocalVideoStateChanged
  • onRemoteVideoStateChanged
  • onFirstRemoteVideoFrameRendered
  • onFirstRemoteVideoFrameDecoded
  • onFirstLocalVideoFrameCaptured
  • onLocalVideoSizeChanged
  • onRemoteVideoSizeChanged
  • onFirstLocalAudioFrame
  • onFirstRemoteAudioFrame
  • onAudioFrameSendStateChanged
  • onVideoFrameSendStateChanged
  • onScreenVideoFrameSendStateChanged
  • onAudioFramePlayStateChanged
  • onVideoFramePlayStateChanged
  • onScreenVideoFramePlayStateChanged
  • onPushPublicStreamResult
  • 名称和参数变更多房间public abstract void onRtcStats(IRTCEngineEventHandler.RTCRoomStats stats);public void onRoomStats(RTCRoomStats stats) {}
    参数变更音频路由public void onAudioRouteChanged(AudioRoute device) {}public void onAudioRouteChanged(AudioRoute route) {}
    回调重构自定义音频处理public interface IAudioProcessor {int processAudioFrame(IAudioFrame audioFrame);}public interface IAudioFrameProcessor{
    int onProcessRecordAudioFrame(IAudioFrame audioFrame);
    int onProcesslaybackAudioFrame(IAudioFrame audioFrame);
    int onProcessRemoteUserAudioFrame(RemoteStreamKey stream_info, IAudioFrame audioFrame);}
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    位置迁移,所属类型变更以下数据类型从 RTCEngine 类下移出:
  • AudioProfileType
  • AudioScenarioType
  • ChannelProfile
  • ConnectionState
  • MediaStreamType
  • PauseResumeControlMediaType
  • ProblemFeedback
  • PublishFallbackOption
  • RangeAudioMode
  • RecordingType
  • RemoteUserPriority
  • RtcMode
  • SubscribeFallbackOptions
  • SubscribeMediaType
  • SubscribeMode
  • TorchState
  • VoiceChangerType
  • VoiceReverbType

  • 以下数据类型从 IRTCEngineEventHandler 类下移出
  • AudioVolumeInfo
  • ConnectionState
  • ErrorCode
  • FallbackOrRecoverReason
  • FirstFramePlayState
  • FirstFrameSendState
  • LocalAudioStats
  • LocalStreamStats
  • LocalVideoStats
  • LocalVideoStreamError
  • LocalVideoStreamState
  • LoginErrorCode
  • MediaDeviceError
  • MediaDeviceState
  • MediaDeviceType
  • MediaDeviceWarning
  • NetworkDetectionLinkType
  • NetworkDetectionStartReturn
  • NetworkDetectionStopReason
  • NetworkQuality
  • NetworkQualityStats
  • PerformanceAlarmMode
  • PerformanceAlarmReason
  • RecordingErrorCode
  • RecordingState
  • RemoteAudioStats
  • RemoteStreamStats
  • RemoteStreamSwitch
  • RemoteVideoState
  • RemoteVideoStateChangeReason
  • RemoteVideoStats
  • RoomMessageSendResult
  • RTCRoomStats
  • RtcUser
  • SourceWantedData
  • StreamRemoveReason
  • TranscodingError
  • USER_ONLINE_STATUS(改为 UserOnlineStatus)
  • WarningCode
  • 枚举值增删

    ChannelProfile

    增加以下枚举值:

    • CHANNEL_PROFILE_CHAT(5)
    • CHANNEL_PROFILE_CHAT_ROOM(6)
    • CHANNEL_PROFILE_LW_TOGETHER(7)
    • CHANNEL_PROFILE_GAME_HD(8)
    • CHANNEL_PROFILE_CO_HOST(9)
    • CHANNEL_PROFILE_INTERACTIVE_PODCAST(10)
    • CHANNEL_PROFILE_KTV(11)
    • CHANNEL_PROFILE_CHORUS(12)
    • CHANNEL_PROFIEL_VR_CHAT(13)
    • CHANNEL_PROFILE_GAME_STREAMING(14)
    • CHANNEL_PROFILE_LAN_LIVE_STREAMING(15)
    • CHANNEL_PROFIEL_MEETING(16)
    • CHANNEL_PROFILE_MEETING_ROOM(17)
    • CHANNEL_PROFILE_CLASSROOM(18)
      删除了 CHANNEL_PROFILE_LIVE_BROADCASTING(1),建议根据实际业务情况,替换为以下模式:
    • CHANNEL_PROFILE_CHAT_ROOM(6)
    • CHANNEL_PROFILE_CO_HOST(9)
    • CHANNEL_PROFILE_INTERACTIVE_PODCAST(10)
    • CHANNEL_PROFILE_KTV(11)
    • CHANNEL_PROFILE_CHORUS(12)
    枚举值增删AudioProfileType增加以下枚举值:
  • AUDIO_PROFILE_STANDARD_STEREO(4)
  • AUDIO_PROFILE_HD_MONO(5)
  • 成员变量增删LocalVideoStats删除以下成员变量:
  • targetKBitrate
  • public int targetFrameRate
  • 成员变量增删RTCRoomStats增加以下成员变量值:
  • txScreenKBitRate
  • rxScreenKBitRate
  • 枚举值增删MediaDeviceWarning增加以下枚举值:
  • MEDIA_DEVICE_WARNING_SET_AUDIO_ROUTE_INVALID_SCENARIO = 20
  • MEDIA_DEVICE_WARNING_SET_AUDIO_ROUTE_NOT_EXISTS = 21
  • MEDIA_DEVICE_WARNING_SET_AUDIO_ROUTE_FAILED_BY_PRIORITY = 22
  • MEDIA_DEVICE_WARNING_SET_AUDIO_ROUTE_NOT_VOIP_MODE = 23
  • MEDIA_DEVICE_WARNING_SET_AUDIO_ROUTE_DEVICE_NOT_START = 24
  • 枚举值含义变更AudioScenarioType枚举值对应的语音模式决策逻辑发生变化,本地是否播放不再是决策因素,只取决于麦克风是否开启
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增枚举值:-2014
    3.41
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    合并或拆分房间管理public void onJoinRoomResult(String roomId, String uid, int errorCode, int joinType, int elapsed) {}
  • public void onRoomStateChanged(String roomId, String uid, int state, String extraInfo) {}
  • public void onStreamStateChanged(String roomId, String uid, int state, String extraInfo) {}
  • 合并或拆分多房间
  • public abstract void onJoinRoomResult(String roomId, String uid, int errorCode, int joinType, int elapsed);
  • public abstract void onRoomWarning(int warn);
  • public abstract void onRoomError(int err);
  • public abstract void onRoomStateChanged(String roomId, String uid, int state, String extraInfo);
  • public abstract void onStreamStateChanged(String roomId, String uid, int state, String extraInfo);
  • 3.40
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称和参数变更位置语音public abstract IPositionAudioRender getPositionAudioRender();public abstract ISpatialAudio getSpatialAudio();接口由 RTCEngine 类移动至 IRTCRoom 类
    名称变更音频管理void enableAudioSpatialRender(boolean enable);void enableSpatialAudio(boolean enable);
    原接口废弃,使用新接口代替音频管理
  • void enableExternalAudioDevice(AudioFormat recordingFormat, AudioFormat playbackFormat);
  • void disableExternalAudioDevice();
  • int setAudioSourceType (AudioSourceType type);
  • int setAudioRenderType (AudioRenderType type);
  • 参数变更转推直播public int getMixType() { return mixType; }public ByteRTCStreamMixingType getMixType() { return mixType; }修改可预定义的参数为枚举类型
    public void setMixType(int mixType) { this.mixType = mixType; }public void setMixType(ByteRTCStreamMixingType mixType) { this.mixType = mixType; }
    public Region renderMode(int renderMode) { this.renderMode = renderMode; return this; }public Region renderMode(TranscoderRenderMode renderMode) { this.renderMode = renderMode; return this; }
    public Region contentControl(int contentControl) { this.contentControl = contentControl; return this; }public Region contentControl(TranscoderContentControlType contentControl) { this.contentControl = contentControl; return this; }
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删AACProfile删除枚举值:AAC_PROFILE_MAIN("MAIN")
    类型增减TranscoderRenderMode新增
    类型增减TranscoderContentControlType新增
    成员函数变更Region成员函数renderMode的传入参数变更为枚举类型
    成员函数变更Region成员函数contentControl的传入参数变更为枚举类型
    类型名称变化AudioRoute类型名由AudioRouteDevice修改为 AudioRoute
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删ErrorCode新增枚举值:-1083
    3.39
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    返回值变更实时消息void login(String token, String uid)long login(String token, String uid)---

    API 行为变更

    订阅媒体流
    subscribeStream
    unsubscribeStream
    subscribeScreen
    unsubscribeScreen

    SDK 在每条远端流属性中维护订阅关系。如果该流被移除,订阅关系也将取消

    SDK 在房间属性中维护订阅关系列表。订阅关系将在用户退房后才会取消。

    ---

    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化实时消息public void onServerMessageSendResult(long msgid, int error) {}public void onServerMessageSendResult(long msgid, int error, ByteBuffer message) {}
    参数变化转推直播void onStreamMixingEvent(ByteRTCStreamMixingEvent eventType, String taskId, int error, ByteRTCStreamMixingType mixType);void onStreamMixingEvent(ByteRTCStreamMixingEvent eventType, String taskId, ByteRTCTranscoderErrorCode error, ByteRTCStreamMixingType mixType);
    参数变化转推直播public void onRoomMessageSendResult(long msgid, int error)public void onRoomMessageSendResult(long msgid, RoomMessageSendResult error)
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举类新增TranscodingError
    3.38
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    替换音频路由设置public abstract int setAudioPlaybackDevice(AudioPlaybackDevice audioPlaybackDevice)public abstract int setAudioRoute(AudioRouteDevice audioRouteDevice);
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    替换音频路由设置public void onAudioPlaybackDeviceChanged(AudioPlaybackDevice device){}public void onAudioRouteChanged(AudioRouteDevice device){}
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    成员变量增删SubscribeConfig新增成员变量:framerate
    成员函数参数变更RemoteVideoConfig成员函数 RemoteVideoConfig 中参数 ration 变为 framerate,由输入与原始帧率的比例变为输入期望订阅的最大帧率
    枚举值增删AudioMixingError新增枚举值:AUDIO_MIXING_ERROR_INVALID_PLAYBACK_SPEED
    枚举值增删MediaDeviceState新增枚举值:MEDIA_DEVICE_STATE_INTERRUPTION_BEGAN,表示媒体设备采集暂停,等待自动恢复
    枚举值增删MediaDeviceState新增枚举值:MEDIA_DEVICE_STATE_INTERRUPTION_ENDED,表示媒体设备采集已自动恢复
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删ErrorCode新增错误码:ERROR_CODE_TOKEN_EXPIRED,表示用户因 Token 过期被踢出房间
    枚举值增删ErrorCode新增枚举值:ERROR_CODE_UPDATE_TOKEN_WITH_INVALID_TOKEN,表示调用 updateToken 使用的 Token 无效
    3.37
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    合并音频数据回调
  • public abstract boolean setRecordingAudioFrameParameters(int sampleRate, int channels);
  • public abstract boolean setPlaybackAudioFrameParameters(int sampleRate, int channels);
  • public abstract boolean setMixedAudioFrameParameters(int sampleRate, int channels);
  • public abstract void enableAudioFrameCallback(AudioFrameCallbackMethod method, AudioFormat format);在format中设置回调的音频数据类型
    参数增加本地录制public abstract int startFileRecording(StreamIndex type, RecordingConfig config)public abstract int startFileRecording(StreamIndex type, RecordingConfig config, RecordingType recordingType);
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    拆分引擎管理public void onMediaDeviceStateChanged(String device_id, int device_type, int device_state, int device_error) {}
  • public void onAudioDeviceStateChanged(String device_id, AudioDeviceType device_type, int device_state, int device_error) {}
  • public void onVideoDeviceStateChanged(String device_id, VideoDeviceType device_type, int device_state, int device_error) {}
  • 媒体设备状态回调拆分成音频和视频设备状态回调
    拆分引擎管理public void onMediaDeviceWarning(String device_id, int device_type, int device_warning) {}
  • public void onAudioDeviceWarning(String device_id, AudioDeviceType device_type, int device_warning) {}
  • public void onVideoDeviceWarning(String device_id, VideoDeviceType device_type, int device_warning) {}
  • 媒体设备警告回调拆分成音频和视频设备警告回调
    参数变化音频数据回调void onRecordAudioFrame(AudioFrame audioFrame);void onRecordAudioFrame(IAudioFrame audioFrame);IAudioFrame与AudioFrame之间的相互转换,参看示例代码转换buffer与getDataBuffer、转换samples与data_size()。
    参数变化音频数据回调void onPlaybackAudioFrame(AudioFrame audioFrame);void onPlaybackAudioFrame(IAudioFrame audioFrame);
    参数变化音频数据回调void onMixedAudioFrame(AudioFrame audioFrame);void onMixedAudioFrame(IAudioFrame audioFrame);

    转换buffer与getDataBuffer,示例代码:

    public byte[] toByteArray(ByteBuffer byteBuffer){
        if(byteBuffer == null){
            return null;
        }
        if(byteBuffer.isDirect()){
            // 如果 byteBuffer 是 Direct 的,则必须拷贝一次
            byte[] bytearray = new byte[byteBuffer.remaining()];
            byteBuffer.get(bytearray);
            return bytearray;
        }
        // 如果 byteBuffer 不是 Direct 的,则可以不拷贝直接返回引用
        return byteBuffer.array();
    }
    
    public ByteBuffer toByteBuffer(byte[] array){
        if(array == null){
            return null;
        }
        return ByteBuffer.wrap(array);
    }
    

    转换samples与data_size(),示例代码:

    samples = data_size() / (channel() * 2)
    
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    类型增减AudioFrameCallbackMethod新增
    3.36
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化屏幕共享public abstract int stopScreenVideoCapture();public abstract void stopScreenCapture();
    名称变化音视频回退public abstract int setRemoteSubscribeFallbackOption(SubscribeFallbackOptions option);public abstract int setSubscribeFallbackOption(SubscribeFallbackOptions option);
    参数变化屏幕共享
  • public abstract int publishScreen();
  • public abstract int unpublishScreen();
  • public abstract int publishScreen(MediaStreamType type);
  • public abstract int unpublishScreen(MediaStreamType type);
  • 新增参数,设置发布/取消发布的媒体类型
    参数变化转推直播/多房间
  • public abstract void startLiveTranscoding(LiveTranscoding liveTranscode, ILiveTranscodingObserver observer);
  • public abstract void stopLiveTranscoding();
  • public abstract void updateLiveTranscoding(LiveTranscoding transcoding);
  • public abstract void startLiveTranscoding(String taskId, LiveTranscoding liveTranscode, ILiveTranscodingObserver observer);
  • public abstract void stopLiveTranscoding(String taskId);
  • public abstract void updateLiveTranscoding(String taskId, LiveTranscoding transcoding);
  • 新增参数,设置转推直播任务 ID
    参数变化多房间
  • public abstract void publishScreen();
  • public abstract void unpublishScreen();
  • public abstract void publishScreen(RTCEngine.MediaStreamType type);
  • public abstract void unpublishScreen(RTCEngine.MediaStreamType type);
  • 新增参数,设置发布/取消发布的媒体类型
    名称和参数均变化多房间
  • public abstract void publish();
  • public abstract void unpublish();
  • public abstract void publishStream(RTCEngine.MediaStreamType type);
  • public abstract void unpublishStream(RTCEngine.MediaStreamType type);
  • 名称和参数均变化屏幕共享public abstract int startScreenVideoCapture(Intent mediaProjectionResultData);public abstract void startScreenCapture(ScreenMediaType type, Intent mediaProjectionResultData);
    合并房间管理/媒体流管理
  • public abstract int publish();
  • public abstract int unpublish();
  • public abstract void muteLocalAudio(MuteState muteState);
  • public abstract void muteLocalVideo(MuteState muteState);
  • public abstract int publishStream(MediaStreamType type);
  • public abstract int unpublishStream(MediaStreamType type);
  • 新版本中新增独立的接口单独控制摄像头/麦克风采集的音频/视频的发布/取消发布
    拆分房间管理public abstract void subscribeUserStream(String uid, StreamIndex streamType, SubscribeMediaType mediaType, SubscribeVideoConfig subscribeVideoConfig);
  • public abstract void subscribeStream(String uid, MediaStreamType type);
  • public abstract void unsubscribeStream(String uid, MediaStreamType type);
  • public abstract void subscribeScreen(String uid, MediaStreamType type);
  • public abstract void unsubscribeScreen(String uid, MediaStreamType type);
  • 单房间模式下,解耦摄像头/麦克风采集的媒体流与屏幕共享媒体流的订阅/取消订阅
    拆分多房间public abstract void subscribeUserStream(String uid, StreamIndex streamType, RTCEngine.SubscribeMediaType mediaType, SubscribeVideoConfig subscribeVideoConfig);
  • public abstract void subscribeStream(String uid, RTCEngine.MediaStreamType type);
  • public abstract void unsubscribeStream(String uid, RTCEngine.MediaStreamType type);
  • public abstract void subscribeScreen(String uid, RTCEngine.MediaStreamType type);
  • public abstract void unsubscribeScreen(String uid, RTCEngine.MediaStreamType type);
  • 多房间模式下,解耦摄像头/麦克风采集的媒体流与屏幕共享媒体流的订阅/取消订阅
    拆分视频管理public abstract int setVideoEncoderConfig(List<VideoStreamDescription> videoStreamDescriptions);
  • public abstract int setVideoEncoderConfig(VideoEncoderConfig[] channel_solutions);
  • public abstract int setScreenVideoEncoderConfig(VideoEncoderConfig screen_solution);
  • 使用独立的接口分别设置摄像头视频流和屏幕视频流的发布参数
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理
  • public void IRTCEngineEventHandler.onUserLeave(String uid, int reason)
  • public abstract IRTCRoomEventHandler.onUserLeave(String uid, int reason)
  • public void IRTCEngineEventHandler.onUserLeave(String uid, int reason)
  • public abstract IRTCRoomEventHandler.onUserLeave(String uid, int reason)
  • reason 参数变化
    合并或拆分房间管理
  • public void onStreamAdd(RTCStream stream) {}
  • public void onStreamRemove(RTCStream stream, StreamRemoveReason reason) {}
  • public void onUserMuteAudio(String uid, MuteState muteState) {}
  • public void onUserMuteVideo(String uid, MuteState muteState) {}
  • public void onUserPublishStream(String uid, RTCEngine.MediaStreamType type) {}
  • public void onUserUnPublishStream(String uid, RTCEngine.MediaStreamType type,StreamRemoveReason reason) {}
  • public void onUserPublishScreen(String uid, RTCEngine.MediaStreamType type) {}
  • public void onUserUnPublishScreen(String uid, RTCEngine.MediaStreamType type,StreamRemoveReason reason) {}
  • 单房间模式下,解耦新增或移除摄像头/麦克风采集的媒体流与新增屏幕共享媒体流的回调,同时去除旧版本回调在功能上的重合
    合并或拆分多房间
  • public abstract void onStreamAdd(RTCStream stream);
  • public abstract void onStreamRemove(RTCStream stream, IRTCEngineEventHandler.StreamRemoveReason reason);
  • public abstract void onUserMuteAudio(String uid, MuteState muteState);
  • public abstract void onUserMuteVideo(String uid, MuteState muteState);
  • public abstract void onUserPublishStream(String uid, RTCEngine.MediaStreamType type);
  • public abstract void onUserPublishScreen(String uid, RTCEngine.MediaStreamType type);
  • public abstract void onUserUnPublishStream(String uid, RTCEngine.MediaStreamType type, IRTCEngineEventHandler.StreamRemoveReason reason) ;
  • public abstract void onUserUnPublishScreen(String uid, RTCEngine.MediaStreamType type, IRTCEngineEventHandler.StreamRemoveReason reason);
  • 多房间模式下,解耦新增或移除摄像头/麦克风采集的媒体流与新增屏幕共享媒体流的回调,同时去除旧版本回调在功能上的重合
    删除转推直播public void onLiveTranscodingResult(String url, int error) {}/
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举类增减ScreenMediaType新增枚举类
    成员变量变化MediaDeviceType新增成员变量:MEDIA_DEVICE_TYPE_SCREEN_VIDEO_CAPTURE_DEVICE
    成员变量变化LocalStreamStats 和 RemoteStreamStatstxQuality 和 rxQuality 成员变量移动到了新增类型 NetworkQualityStats 中,通过 onNetworkQuality 回调获取
    成员变量变化RTCRoomConfig新增 remoteVideoConfig
    成员变量变化MultiRoomConfig新增 remoteVideoConfig
    成员变量变化AudioPropertiesInfo成员变量 volume 拆分为 linearVolume 和 nonlinearVolume
    3.35
    行为变更

    自此版本起,本地视频采集参数默认由系统自动设置,而不是和编码参数保持一致。你可以通过 VideoCaptureConfig 进行相关设置。如果你的代码逻辑中对采集到的视频帧进行了自定义处理,应对处理逻辑进行相应修改。

    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化视频管理public abstract int setVideoCaptureConfig(VideoCaptureConfig videoCaptureConfig);public abstract int setVideoCaptureConfig(VideoCaptureConfig videoCaptureConfig);增加摄像头采集参数中的模式设置
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化视频管理public void onFirstRemoteVideoFrameRendered(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo) {}public void onFirstRemoteVideoFrameDecoded(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo) {}
    名称变化多房间public abstract void onFirstRemoteVideoFrameRendered(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo);public abstract void onFirstRemoteVideoFrameDecoded(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo);
    3.34
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删NetworkDetectionStopReason新增了枚举值:NetworkDetectionStopReasonInnerErr
    枚举值增删AudioMixingError新增了枚举值:AUDIO_MIXING_ERROR_ID_TYPE_INVALID_PITCH
    成员变量变化AudioMixingConfig新增成员变量:position 和 callbackOnProgressInterval
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增了枚举值:-5011
    3.33
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化屏幕共享public abstract boolean pushScreenFrame(RTCVideoFrame videoFrame);public abstract boolean pushScreenFrame(VideoFrame videoFrame);
    参数变化自定义视频采集渲染
  • public abstract boolean pushExternalVideoFrame(RTCVideoFrame frame);
  • public abstract boolean pushExternalVideoFrame(RTCVideoFrame frame, boolean isDirectEncode);
  • public abstract boolean pushExternalVideoFrame(VideoFrame frame);
  • public abstract boolean pushExternalVideoFrame(VideoFrame frame, boolean isDirectEncode);
  • 参数变化音频管理
  • public abstract void enableAudioMixingFrame(AudioMixingType type);
  • public abstract void disableAudioMixingFrame()
  • public abstract int pushAudioMixingFrame(AudioFrame audioFrame)
  • public abstract void enableAudioMixingFrame(int id, AudioMixingType type);
  • public abstract void disableAudioMixingFrame(int id);
  • public abstract int pushAudioMixingFrame(int id, AudioFrame audioFrame);
  • 错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode废弃了枚举值 -5002 ~ -5008。
    使用 public void onMediaDeviceStateChanged(String device_id, int device_type, int device_state, int device_error) {} 代替。
    枚举值增删LocalVideoStreamError新增了枚举值 7。
    3.29
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理public abstract void joinRoom(String token, String roomId, UserInfo userInfo, RTCRoomConfig roomConfig);public abstract int joinRoom(String token, String roomId, UserInfo userInfo, RTCRoomConfig roomConfig);
    参数变化多房间public abstract void joinRoom(String token, UserInfo userInfo, MultiRoomConfig roomConfig);public abstract int joinRoom(String token, UserInfo userInfo, MultiRoomConfig roomConfig);
    参数变化视频管理public abstract void setVideoSourceType(VideoSourceType type);public abstract void setVideoSourceType(StreamIndex index, VideoSourceType type);
    名称和参数均变化房间管理public abstract void setAudioVolumeIndicationInterval(int interval);public abstract void enableAudioPropertiesReport(AudioPropertiesConfig config);
    名称和参数均变化视频管理public abstract int setLocalVideoMirrorMode(MirrorMode mirrorMode);public abstract int setLocalVideoMirrorType(MirrorType mirrorType);
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    拆分音频管理public void onAudioVolumeIndication(IRTCEngineEventHandler.AudioVolumeInfo[] speakers, int totalRemoteVolume)
  • public void onLocalAudioPropertiesReport(LocalAudioPropertiesInfo[] audioPropertiesInfos){}
  • public void onRemoteAudioPropertiesReport(RemoteAudioPropertiesInfo[] audioPropertiesInfos, int totalRemoteVolume)
  • 旧版回调拆分为 onLocalAudioPropertiesReport 和 onRemoteAudioPropertiesReport
    删除视频管理public void onMirrorStateChanged(boolean mirrored){}/
    3.28
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删AudioSampleRate新增了枚举值:AUDIO_SAMPLE_RATE_AUTO
    枚举值增删AudioChannel新增了枚举值:AUDIO_CHANNEL_AUTO
    3.27
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化引擎管理public static int feedback(Context context, int grade, int type, String problemDesc){return RTCEngineImpl.feedback(context, grade, type, problemDesc);}public abstract int feedback(List<ProblemFeedback> types, String problemDesc);
    名称和参数均变化音频管理public abstract void setRecordingVolume(int volume);public abstract void setCaptureVolume(StreamIndex index, int volume);
    名称和参数均变化视频管理public abstract void registerMetadataObserver(IMetadataObserver observer);public abstract int sendSEIMessage(StreamIndex streamIndex, byte[] message, int repeatCount);
    拆分屏幕共享public abstract int startScreenSharing(Intent mediaProjectionResultData, ScreenSharingParameters parameters);
  • public abstract int startScreenVideoCapture(Intent mediaProjectionResultData);
  • public abstract int publishScreen();
  • 解耦屏幕共享流的采集与发布
    拆分屏幕共享public abstract int stopScreenSharing();
  • public abstract int stopScreenVideoCapture();
  • public abstract int unpublishScreen();
  • 解耦屏幕共享流的停止采集与停止发布
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化视频数据回调public void onMetadataReceived(byte[] buffer, String uid, long timeStampMs);public void onSEIMessageReceived(RemoteStreamKey remoteStreamKey,ByteBuffer message)
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删ProblemFeedback删除了枚举值:
  • PROBLEM_CONNECT_FAILED
  • PROBLEM_VIDEO_LAGGING
  • PROBLEM_AUDIO_DELAY
  • 增加了枚举值:
  • PROBLEM_EAR_BACK_DELAY
  • 错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增了枚举值:
  • WARNING_CODE_SET_SCREEN_AUDIO_SOURCE_TYPE_FAILED
  • WARNING_CODE_SET_SCREEN_STREAM_INDEX_FAILED
  • 3.26
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理public abstract int joinRoom(String token, String roomId, UserInfo userInfo, ChannelProfile profile_type);public abstract int joinRoom(String token, String roomId, UserInfo userInfo, RTCRoomConfig roomConfig);
    名称和参数均变化房间管理public abstract int setUserRole(ClientRole clientRole);public abstract int setUserVisibility(boolean enable);
    合并房间管理
  • public abstract void subscribeStream(String userId, SubscribeConfig info);
  • public abstract void unSubscribe(String userId, boolean isScreen);
  • public abstract void muteRemoteAudio(String uid, MuteState muteState);
  • public abstract int muteRemoteVideo(String uid, MuteState muteState);
  • public abstract void subscribeUserStream(String uid, StreamIndex streamType, SubscribeMediaType mediaType, SubscribeVideoConfig subscribeVideoConfig);
    合并音频管理/视频管理
  • public abstract int muteAllRemoteVideo(MuteState muteState);
  • public abstract void muteAllRemoteAudio(MuteState muteState);
  • public abstract void pauseAllSubscribedStream(PauseResumeControlMediaType mediaType);通过 pauseAllSubscribedStream 和 resumeAllSubscribedStream 来暂停或接收所有远端媒体流
    删除房间管理public abstract void enableAutoSubscribe(SubscribeMode audioMode, SubscribeMode videoMode);/使用 joinRoom 中的 roomConfig 设置
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删AudioScenarioType新增了枚举值:AUDIO_SCENARIO_GAME_STREAMING
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增了枚举值:
  • WARNING_CODE_PUBLISH_STREAM_FORBIDEN
  • WARNING_CODE_RECEIVE_USER_NOTIFY_STOP
  • 枚举值增删UserMessageSendResult新增了枚举值:
  • USER_MESSAGE_SEND_RESULT_NOT_LOGIN
  • USER_MESSAGE_SEND_RESULT_SERVER_PARAMS_NOT_SET
  • 3.25
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化混音public abstract int getAudioMixingDuration();public abstract int getAudioMixingDuration(int id);
    参数变化混音public abstract int getAudioMixingCurrentPosition();public abstract int getAudioMixingCurrentPosition(int id);
    参数变化混音public abstract int setAudioMixingPosition(int pos);public abstract void setAudioMixingPosition(int id, int position);
    名称和参数均变化混音public abstract int preloadEffect(int soundId, String filePath);public abstract void preloadAudioMixing(int id, String filePath);
    名称和参数均变化混音public abstract boolean pushAudioMixingStreamData(byte[] audioFrame, int frameNum);public abstract int pushAudioMixingFrame(AudioFrame audioFrame);
    合并自定义视频采集渲染
  • int setupRemoteVideoRender(IVideoSink videoSink, String roomid, String uid)
  • int setupRemoteVideoRender(IVideoSink videoSink, String uid)
  • int setupRemoteVideoRender(IVideoSink videoSink, String roomid, String uid, boolean isInitialized)
  • int setupRemoteVideoRender(IVideoSink videoSink, String uid, boolean isInitialized)
  • int setupRemoteScreenRender(IVideoSink videoSink, String roomid, String uid)
  • int setupRemoteScreenRender(IVideoSink videoSink, String uid)
  • public abstract void setRemoteVideoSink(RemoteStreamKey streamKey, IVideoSink videoSink, @IVideoSink.PixelFormat int requiredFormat);多个旧版接口合并为 setRemoteVideoSink
    合并自定义视频采集渲染
  • int setupLocalVideoRender(IVideoSink videoSink, String uid)
  • int setupLocalVideoRender(IVideoSink videoSink, String uid, boolean isInitialized)
  • int setupLocalScreenRender(IVideoSink videoSink, String uid)
  • public abstract void setLocalVideoSink(StreamIndex index, IVideoSink videoSink, @IVideoSink.PixelFormat int requiredFormat);多个旧版接口合并为 setLocalVideoSink
    合并混音
  • public abstract int startAudioMixing(String file, boolean loopback, boolean replace, int cycle);
  • public abstract int playEffect(int soundId, String filePath, boolean loopback, int cycle, int volume);
  • public abstract void startAudioMixing(int id, String filePath, AudioMixingConfig config);多个旧版接口合并为 startAudioMixing
    合并混音
  • public abstract int stopAudioMixing();
  • public abstract int stopEffect(int soundId);
  • public abstract int stopAllEffects();
  • public abstract void stopAudioMixing(int id);多个旧版接口合并为 stopAudioMixing
    合并混音
  • public abstract int pauseAudioMixing();
  • public abstract int pauseEffect(int soundId);
  • public abstract int pauseAllEffects();
  • public abstract void pauseAudioMixing(int id);多个旧版接口合并为 pauseAudioMixing
    合并混音
  • public abstract int resumeAudioMixing();
  • public abstract int resumeEffect(int soundId);
  • public abstract int resumeAllEffects();
  • public abstract void resumeAudioMixing(int id);多个旧版接口合并为 resumeAudioMixing
    合并混音
  • public abstract int unloadEffect(int soundId);
  • public abstract int unloadAllEffects();
  • public abstract void unloadAudioMixing(int id);多个旧版接口合并为 unloadAudioMixing
    合并混音
  • public abstract int adjustAudioMixingVolume(int volume);
  • public abstract int setVolumeOfEffect(int soundId, int volume);
  • public abstract int adjustAudioMixingPlayoutVolume(int volume);
  • public abstract int adjustAudioMixingPublishVolume(int volume);
  • public abstract int setEffectsVolume(int volume);
  • public abstract void setAudioMixingVolume(int id, int volume, AudioMixingType type);多个旧版接口合并为 setAudioMixingVolume
    拆分混音public abstract void setAudioPlayoutMixStream(boolean enable, int sampleRate, int channelNum);
  • public abstract void enableAudioMixingFrame(AudioMixingType type);
  • public abstract void disableAudioMixingFrame();
  • 旧接口拆分为 enableAudioMixingFrame 和 disableAudioMixingFrame
    删除混音public abstract int getEffectVolume(int soundId);/
    删除混音public abstract int getAudioMixingStreamCachedFrameNum();/
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化引擎管理public void onMediaDeviceStateChanged(int device_type, int device_state, int device_error) {}public void onMediaDeviceStateChanged(String device_id, int device_type, int device_state, int device_error) {}
    3.24
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化视频特效public abstract void setVideoEffectColorFilter(String resFile);public abstract int setVideoEffectColorFilter(String resFile);
    参数变化视频特效public abstract void setVideoEffectColorFilterIntensity(float intensity);public abstract int setVideoEffectColorFilterIntensity(float intensity);
    参数变化视频管理public abstract int muteLocalVideo(MuteState muteState);public abstract void muteLocalVideo(MuteState muteState);
    名称和参数均变化视频特效public abstract void setVideoEffectPath(List<String> effectPaths);public abstract int setVideoEffectNodes(List<String> effectNodes);
    名称和参数均变化视频特效public abstract void updateVideoEffect(String effectPath, String key, float value);public abstract int updateVideoEffectNode(String effectNode, String key, float value);
    名称和参数均变化视频管理public abstract void setVideoInputType(MediaInputType type);public abstract void setVideoSourceType(VideoSourceType type);
    删除视频特效public abstract void addVideoEffectPath(List<String> effectPaths);/
    删除视频特效 public abstract void removeVideoEffectPath(List<String> effectPaths);/
    删除音频管理public abstract void setAudioPerformanceProfile(AudioPerformanceProfile profile);/
    删除视频管理public abstract boolean isLocalVideoMirrorOn();/
    删除屏幕共享public abstract int updateScreenSharingParameters(ScreenSharingParameters parameters);/
    3.23
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    拆分音频管理public abstract int enableLocalAudio(boolean enabled);
  • public abstract void startAudioCapture();
  • public abstract void stopAudioCapture();
  • 拆分后的接口解除了音频采集与发布的绑定关系。无论是否发布音频,你都可以开启音频采集,并且停止发布后不再自动关闭采集
  • 新接口解除了对外部源的推送控制,仅控制是否进行内部音频采集
  • 方法行为变化视频管理public abstract void startVideoCapture();public abstract void startVideoCapture();
  • 无论是否发布视频,你都可以开启视频采集
  • 解除了对外部源的推送控制,仅控制内部视频采集
  • 方法行为变化视频管理public abstract void stopVideoCapture();public abstract void stopVideoCapture();
  • 停止视频发布后不再自动关闭采集,可手动关闭
  • 解除了对外部源的推送控制,仅控制内部视频采集
  • 方法行为变化视频管理public abstract void setVideoInputType(MediaInputType type);public abstract void setVideoInputType(MediaInputType type);
  • 由自定义采集切换至内部采集后,须手动开启内部采集方可开始采集
  • 无切换场景时,内部采集、自定义采集互不影响
  • 进房前后均可切换
  • 方法行为变化音频管理public abstract void enableExternalAudioDevice(AudioFormat recordingFormat, AudioFormat playbackFormat);public abstract void enableExternalAudioDevice(AudioFormat recordingFormat, AudioFormat playbackFormat);
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增了枚举值:WARNING_CODE_MEDIA_DEVICE_OPERATION_DENIED
    3.22
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化CDN 推流public abstract void startLiveTranscoding(LiveTranscoding liveTranscode);public abstract void startLiveTranscoding(LiveTranscoding liveTranscode, ILiveTranscodingObserver observer);
    参数变化视频管理public abstract int switchCamera();public abstract int switchCamera(CameraId cameraId);
    名称和参数均变化CDN 推流public abstract void updateLiveTranscodingLayout(``LiveTranscoding.Layout layout``);public abstract void updateLiveTranscoding(``LiveTranscoding transcoding``);
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化引擎管理void onMediaDeviceStateChanged(int device_type, int device_state)void onMediaDeviceStateChanged(int device_type, int device_state, int device_error)新增了回调参数 device_error
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删MediaDeviceState删除了枚举值:
  • MEDIA_DEVICE_STATE_START_FAILED
  • MEDIA_DEVICE_STATE_STOP_FAILED
  • ,新增了枚举值:
  • MEDIA_DEVICE_STATE_RUNTIMEERROR
  • MEDIA_DEVICE_STATE_ADDED
  • MEDIA_DEVICE_STATE_REMOVED
  • 错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删WarningCode新增了枚举值:WARNING_CODE_RECORDING_SILENCE
    3.21
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化房间管理public abstract int renewToken(String token)public abstract int updateToken(String token)
    名称变化房间管理public abstract int leaveChannel()public abstract int leaveRoom()
    名称变化视频管理int setVideoProfiles(VideoStreamDescription[] videoStreamDescriptions)int setVideoEncoderConfig(List<VideoStreamDescription> videoStreamDescriptions)
    名称变化引擎管理public abstract void SetRuntimeParameters(JSONObject params);public abstract void setRuntimeParameters(JSONObject params);
    名称变化音频管理int adjustRecordingSignalVolume(int volume)void setRecordingVolume(int volume)
    名称变化音频管理int adjustPlaybackSignalVolume(int volume)void setPlaybackVolume(int volume)
    名称变化音频管理void AdjustRemoteAudioVolume(String uid, int volume)void setRemoteAudioPlaybackVolume(String uid, int volume)
    名称变化音频管理void SetAudioPerfProfile(AudioPerfProfile profile)void setAudioPerformanceProfile(AudioPerformanceProfile profile)
    名称变化CDN 推流public abstract void disableLiveTranscoding()public abstract void stopLiveTranscoding()
    参数变化视频管理int setLocalVideoMirrorMode(int mode)int setLocalVideoMirrorMode(MirrorMode mirrorMode)
    参数变化性能回退public abstract int setPublishFallbackOption(int option)public abstract int setPublishFallbackOption(PublishFallbackOption option)
    参数变化音频管理boolean pushExternalAudioFrame(byte[] audioFrame, int frameNum)int pushExternalAudioFrame(AudioFrame audioFrame)
    参数变化音频管理boolean pullExternalAudioFrame(byte[] audioFrame, int frameNum)int pullExternalAudioFrame(AudioFrame audioFrame)
    名称和参数均变化房间管理public abstract int setClientRole(CLIENT_ROLE_TYPE clientRole)public abstract int setUserRole(ClientRole clientRole);
    名称和参数均变化房间管理public abstract int joinChannel(String token, String channelName, PublisherConfiguration publisherConfiguration, String uid, String traceId)public abstract int joinRoom(String token, String roomId, UserInfo userInfo, ChannelProfile profile_type)
    名称和参数均变化视频管理int muteRemoteVideoStream(String uid, boolean muted)int muteRemoteVideo(String uid, MuteState mute_state)
    名称和参数均变化视频管理int muteLocalVideoStream(boolean muted)int muteLocalVideo(MuteState state)
    名称和参数均变化视频管理int setVideoProfiles(VideoStreamDescription[] videoStreamDescriptions, VideoEncoderConfiguration.ORIENTATION_MODE orientationMode)int setVideoEncoderConfig(List<VideoStreamDescription> videoStreamDescriptions, VideoEncoderConfiguration.OrientationMode orientationMode)
    名称和参数均变化音频管理int setEnableSpeakerphone(boolean enable)int setAudioPlaybackDevice(AudioPlaybackDevice audioPlaybackDevice)
    名称和参数均变化音频管理int enableAudioVolumeIndication(int interval, int smooth)void setAudioVolumeIndicationInterval(int interval)
    名称和参数均变化音频管理int muteLocalAudioStream(boolean muted)void muteLocalAudio(MuteState muteState)
    名称和参数均变化音频管理int muteRemoteAudioStream(String uid, boolean muted)void muteRemoteAudio(String uid, MuteState muteState)
    名称和参数均变化CDN 推流public abstract void enableLiveTranscoding(LiveTranscoding liveTranscode)public abstract void startLiveTranscoding(LiveTranscoding liveTranscode)
    名称和参数均变化CDN 推流public abstract void setVideoCompositingLayout(LiveTranscoding.Layout layout)public abstract void updateLiveTranscodingLayout(LiveTranscoding.Layout layout)
    合并视频管理
  • void setExternalVideoSource(boolean enable, boolean useTexture, boolean push)
  • void setExternalVideoSource(boolean enable, boolean useTexture, boolean push, boolean needRender)
  • void setVideoInputType(MediaInputType type)多个旧版接口合并为 setVideoInputType
    合并视频管理
  • int muteAllRemoteVideoStreams(boolean muted)
  • int setDefaultMuteAllRemoteVideoStreams(boolean muted)
  • int muteAllRemoteVideo(MuteState mute_state)多个旧版接口合并为 muteAllRemoteVideo
    合并视频管理
  • int setupRemoteVideo(VideoCanvas videoCanvas)
  • void setupRemoteScreen(VideoCanvas videoCanvas)
  • int setRemoteVideoCanvas(String user_id, StreamIndex index, VideoCanvas canvas)多个旧版接口合并为 setRemoteVideoCanvas
    合并视频管理
  • int setupLocalVideo(VideoCanvas local)
  • int setupLocalScreen(VideoCanvas videoCanvas)
  • int setLocalVideoCanvas(StreamIndex index, VideoCanvas canvas)多个旧版接口合并为 setLocalVideoCanvas
    合并音频管理
  • int muteAllRemoteAudioStreams(boolean muted)
  • int setDefaultMuteAllRemoteAudioStreams(boolean muted)
  • void muteAllRemoteAudio(MuteState muteState)多个旧版接口合并为 muteAllRemoteAudio
    拆分视频管理int enableLocalVideo(boolean enabled)
  • void startVideoCapture()
  • void stopVideoCapture()
  • 旧版接口拆分为 startVideoCapture() 和 stopVideoCapture()
    拆分音频管理boolean setExternalAudioDevice(boolean enable, int sampleRate, int recordChannelNum, int playoutChannelNum)
  • void enableExternalAudioDevice(AudioFormat recordingFormat, AudioFormat playbackFormat)
  • void disableExternalAudioDevice()
  • 旧版接口拆分为 enableExternalAudioDevice 和 disableExternalAudioDevice
    删除房间管理public abstract int setChannelProfile(CHANNEL_PROFILE_TYPE channelProfile)/删除旧版接口,设置房间模式请使用 joinRoom
    删除引擎管理public static void enablePerformanceCollect(boolean enable)/删除旧版接口,且无替代接口
    删除引擎管理public abstract void setLogFilter(IRtcEngineEventHandler.RtcLogLevel level)/删除旧版接口,且无替代接口
    删除引擎管理public static void setLoggerMessageLevel(IRtcEngineEventHandler.RtcLogLevel level)/删除旧版接口,且无替代接口
    删除引擎管理public static RtcNativeLibraryLoader getRtcNativeLibraryLoader()/删除旧版接口,且无替代接口
    删除引擎管理public static void setEnableLog(boolean enableLog)/删除旧版接口,且无替代接口
    删除音频管理boolean setAudioDeviceEventHandler(IRtcEngineAudioDeviceEventHandler handler)/删除旧版接口,且无替代接口
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称变化房间管理public abstract void onWarning(int warn)public abstract void onRoomWarning(int warn)
    名称变化房间管理public abstract void onError(int err)public abstract void onRoomError(int err)
    名称变化房间管理public void onUserOffline(String uid, int reason)public void onUserLeave(String uid, int reason)
    名称变化房间管理public void onStreamPublishSucceed(String userId, boolean isScreen)public void onStreamPublishSuccess(String userId, boolean isScreen)
    名称变化数据统计void onRtcStats(IRtcEngineEventHandler.RtcStats stats)void onRoomStats(RTCRoomStats stats)
    参数变化引擎管理void onMediaDeviceStateChanged(int device_type, int device_state)void onMediaDeviceStateChanged(int device_type, int device_state)MediaDeviceType 和 MediaDeviceState 枚举值名称变化
    参数变化房间管理public void onUserJoined(String uid, int elapsed)public void onUserJoined(UserInfo userInfo, int elapsed)
    参数变化视频管理void onMuteAllRemoteVideo(String uid, boolean muted)void onMuteAllRemoteVideo(String uid, MuteState muteState)
    参数变化视频管理void onUserMuteVideo(String uid, boolean muted)void onUserMuteVideo(String uid, MuteState muteState)
    参数变化视频管理void onRemoteVideoStateChanged(String uid, int state, int reason, int elapsed)void onRemoteVideoStateChanged(RemoteStreamKey streamKey, RemoteVideoState videoState, RemoteVideoStateChangeReason videoStateReason)
    参数变化视频管理void onLocalVideoStateChanged(int state, int error)void onLocalVideoStateChanged(StreamIndex streamIndex, LocalVideoStreamState state, LocalVideoStreamError error)
    参数变化性能回退public void onPerformanceAlarms(int level, SourceWantedData data)public void onPerformanceAlarms(PerformanceAlarmMode mode, String roomId, PerformanceAlarmReason reason, SourceWantedData data)
    参数变化音频管理void onAudioVolumeIndication(IRtcEngineEventHandler.AudioVolumeInfo[] speakers, int totalVolume)void onAudioVolumeIndication(IRtcEngineEventHandler.AudioVolumeInfo[] speakers, int totalRemoteVolume)
    参数变化音频管理void onUserMuteAudio(String uid, boolean muted)void onUserMuteAudio(String uid, MuteState muteState)
    参数变化音频管理void onLocalAudioStateChanged(int state, int error)void onLocalAudioStateChanged(LocalAudioStreamState state, LocalAudioStreamError error)
    参数变化音频管理void onRemoteAudioStateChanged(String uid, int state, int reason,int elapsed)void onRemoteAudioStateChanged(RemoteStreamKey key, RemoteAudioState state, RemoteAudioStateChangeReason reason)
    参数变化音频管理void onFirstLocalAudioFrame(int elapsed)void onFirstLocalAudioFrame(StreamIndex streamIndex)
    参数变化音频管理void onFirstRemoteAudioFrame(String uid, long elapsed)void onFirstRemoteAudioFrame(RemoteStreamKey remoteStreamKey)
    参数变化流消息public void onUserMessageSendResult(long msgid, int error)public void onUserMessageSendResult(long msgid, int error)UserMessageSendResult 枚举值名称变更 & 新增枚举值 |
    名称和参数均变化房间管理public void onLeaveChannel(IRtcEngineEventHandler.RtcStats stats)public void onLeaveRoom(IRtcEngineEventHandler.RtcRoomStats stats)
    名称和参数均变化性能回退public void onRemoteStreamSwitch(RemoteStreamSwitch event)public void onSimulcastSubscribeFallback(RemoteStreamSwitch event)FallbackOrRecoverReason 枚举值名称变更
    名称和参数均变化音频管理void onAudioRouteChanged(int routing)void onAudioPlaybackDeviceChanged(AudioPlaybackDevice device)
    名称和参数均变化CDN 推流public void onStreamPublished(String url, int error)public void onLiveTranscodingResult(String url, int error)TranscodingError 错误码名称变更
    合并房间管理
  • public void onJoinChannelSuccess(String channel, String uid, int elapsed)
  • public void onRejoinChannelSuccess(String channel, String uid, int elapsed)
  • public void onJoinRoomResult(String roomId, String uid, int errorCode, int joinType, int elapsed)旧版回调合并为onJoinRoomResult
    合并视频管理
  • void onFirstRemoteVideoFrame(String uid, int width, int height, int elapsed)
  • void onFirstRemoteScreenFrame(String uid, int width, int height, int elapsed)
  • void onFirstRemoteVideoFrameRendered(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo)旧版回调合并为 onFirstRemoteVideoFrameRendered
    合并视频管理
  • void OnFirstLocalVideoFrame(int width, int height, int elapsed)
  • void OnFirstLocalScreenFrame(String uid, int width, int height, int elapsed)
  • void OnFirstLocalVideoFrameCaptured(Streamindex stream_index, VideoFrameInfo frame_info)旧版回调合并为 OnFirstLocalVideoFrameCaptured
    合并数据统计
  • void onLocalAudioStats(LocalAudioStats stats)
  • void onLocalVideoStats(IRtcEngineEventHandler.LocalVideoStats stats)
  • void onNetworkQuality(String uid, int txQuality, int rxQuality)
  • void onLocalStreamStats(LocalStreamStats stats)多个旧版回调合并为 onLocalStreamStats 中的多个状态
    合并数据统计
  • void onRemoteVideoStats(IRtcEngineEventHandler.RemoteVideoStats stats)
  • void onRemoteAudioStats(IRtcEngineEventHandler.RemoteAudioStats stats)
  • void onNetworkQuality(String uid, int txQuality, int rxQuality)
  • void onRemoteStreamStats(RemoteStreamStats stats)多个旧版回调合并为 onRemoteStreamStats 中的多个状态
    拆分视频管理void onUserEnableLocalVideo(String uid, boolean enabled)int enableLocalVideo(boolean enabled)
  • void onUserStartVideoCapture(String uid)
  • void onUserStopVideoCapture(String uid)
  • 旧版回调拆分为 onUserStartVideoCapture 和 onUserStopVideoCapture
    拆分视频管理void onVideoSizeChanged(String uid, int width, int height, int rotation)
  • void onLocalVideoSizeChanged(StreamIndex streamIndex, VideoFrameInfo frameInfo)
  • void onRemoteVideoSizeChanged(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo) int setRemoteVideoCanvas(String user_id, StreamIndex index, VideoCanvas canvas)
  • 旧版回调拆分为 onLocalVideoSizeChanged 和 onRemoteVideoSizeChanged
    删除房间管理public void onLoginCompletion(int errorCode, ByteStream[] listStream)/
    删除数据统计void onAudioQuality(String uid, int quality, short delay, short lost)/
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删UserMessageSendResult新增了枚举值:USER_MESSAGE_SEND_RESULT_INIT
    枚举值增删RemoteVideoStats删除了枚举值:uid,此变量请参考RemoteStreamStats中的uid
    枚举值增删RemoteAudioStats删除了枚举值:uid,此变量请参考RemoteStreamStats中的uid
    3.20
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    合并引擎管理
  • void onConnectionLost()
  • void onConnectionInterrupted()
  • void onConnectionStateChanged(int state, int reason)多个旧版回调合并为 onConnectionStateChanged 中的多个状态
    3.19.2
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理void enableAutoSubscribe(boolean enable)void enableAutoSubscribe(SubscribeMode audioMode, SubscribeMode videoMode)
    类型变更

    以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:

    变更详情数据类型备注
    枚举值增删CLIENT_ROLE_TYPE删除了枚举值:CLIENT_ROLE_AUDIENCE,建议使用 CLIENT_ROLE_SILENT_AUDIENCE 代替。
    错误码变更

    以下表格中的错误码发生了变化,你需要进行相应的处理:

    变更详情错误码备注
    枚举值增删RtcErrorCode新增了枚举值:
  • BRERR_OVER_STREAM_PUBLISH_LIMIT
  • BRERR_OVER_SCREEN_PUBLISH_LIMIT
  • BRERR_OVER_VIDEO_PUBLISH_LIMIT
  • 3.19.1
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    名称和参数均变化房间管理create(Context context, String appId, IRtcEngineEventHandler handler, boolean useOffline, Object eglContext)createEngine(Context context, String appId, IRtcEngineEventHandler handler, Object eglContext, JSONObject parameters)
    3.18.3
    方法变更

    以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理void unSubscribe(String streamId)void unSubscribe(String userId, boolean isScreen)
    参数变化房间管理void subscribeStream(String streamId, SubscribeConfig info)void subscribeStream(String userId, SubscribeConfig info)
    回调变更

    以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:

    变更详情功能模块变动前方法变动后方法备注
    参数变化房间管理void onStreamRemove(ByteStream stream)void onStreamRemove(ByteStream stream, IRtcEngineEventHandler.RtcStreamRemoveReason reason)