You need to enable JavaScript to run this app.
文档中心
实时音视频

实时音视频

复制全文
下载 pdf
SDK 升级指南
Android 客户端升级指南
复制全文
下载 pdf
Android 客户端升级指南

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

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

本文同时记录升级时需要适配的变更和新版本提供的新增能力。标题中标注“按需使用”的内容,不使用对应能力时无需修改现有代码。SDK 回调或返回的枚举新增取值时,建议检查现有的 switch、白名单和兜底逻辑是否能够处理新值。

3.60.107

错误码变更

如果你的业务使用单流转推,并且会穷举处理 SingleStreamTaskErrorCode,升级后需要补充以下错误码;其他业务无需修改。

SingleStreamTaskErrorCode 新增以下枚举值:

枚举值数值说明
ERROR_PUSH_TO_CDN1098转推到 CDN 失败。
ERROR_TASK_COUNT_OVER_LIMIT1099超过单流转推任务数限制,单个主播同时运行的转推任务不能超过 20 个。

3.60.105

本版本以下内容均为新增能力。不使用直播模式切换、自定义视频前处理范围、关键帧间隔或 SEI 发送能力时,无需修改现有代码。

新增类型

类型名

变更说明

LiveMode(新增枚举)

新增枚举,定义直播模式,包含取值:

  • LIVE_MODE_CO_HOST(1) :多人直播连麦
  • LIVE_MODE_SOLO_HOST(2) 单人直播

ProcessorActionDomain(新增枚举)

新增枚举,定义视频前处理作用范围,包含取值:

  • PREVIEW_AND_ENCODE(0)
  • PREVIEW(1)
  • ENCODE(2)

RTCRoomConfig

新增 liveMode 字段(LiveMode 类型),用于进房时指定直播模式,默认 LIVE_MODE_CO_HOST(多人直播连麦)。

VideoPreprocessorConfig

新增 actionDomain 字段(ProcessorActionDomain 类型),指定自定义视频前处理作用范围,默认 PREVIEW_AND_ENCODE。

VideoEncoderConfig

新增 keyFrameIntervalMs 字段(int 类型),关键帧间隔,单位毫秒,默认 0。

新增接口

接口

说明

RTCRoom.setLiveMode(LiveMode mode)

设置房间直播模式。加入房间后调用,仅当 RTCRoomConfig.profile 为 CHANNEL_PROFILE_LIVE_BROADCASTING 时生效。支持在连麦直播(LIVE_MODE_CO_HOST)和单人直播(LIVE_MODE_SOLO_HOST)之间切换。

RTCEngine.sendLivePushSEIMessage(String jsonString, int count, boolean isKeyFrameOnly, boolean allowOverwrite)

以 Key-Value JSON 格式通过视频帧发送 SEI 数据。调用前需将房间模式设为 LIVE_MODE_SOLO_HOST。

3.60.104

新增回调

仅 AI 音视频互动方案中使用 License 计费的业务需要关注该回调,并建议按下表说明处理。其他业务无需适配。

回调

说明

onLicenseQuotaExceeded

AI 音视频互动方案使用 License 计费时,License 配额用尽后,SDK 会触发此回调并中止服务。收到回调后,请及时续费并离开房间、销毁 SDK;续费成功后,再重新加入房间。

依赖项变更

  1. 新增可选插件:libbytertc_license_extension.so。仅使用 CloudRenderLAN 场景下的 License 功能时需要集成;其他业务无需添加。
  2. libbytenn.so 新增依赖:libc++_shared.so。
    集成时需确保 APK 中包含系统 NDK 的 libc++_shared.so 动态库。
    • 如果你的业务已经依赖了该动态库,直接使用即可。
    • 如果没有,建议手动添加 NDK 28.0.13004108 中的版本。参考路径如下:

      说明

      请将 <您的 NDK 路径> 替换为您本地 NDK 的实际安装目录。

      • armeabi-v7a

        <您的 NDK 路径>/28.0.13004108/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so
        
      • arm64-v8a

        <您的 NDK 路径>/28.0.13004108/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so
        

3.60.102

API 变更

头文件和基础类名

变更类型

V3.58

V3.60

头文件名称变更

../RTCVideo.java

../RTCEngine.java

../IRTCVideoEventHandler.java

../IRTCEngineEventHandler.java

基础类名变更(所有模块)

public abstract class RTCVideo

public abstract class RTCEngine

新增加头文件

无

../RTSRoom.java
../IRTSRoomEventHandler.java
../IGameRoom.java

引擎管理

功能

V3.58

V3.60

变更说明

创建引擎对象

createRTCVideo(Context context, IRTCVideoEventHandler handler, EngineConfig config)

createRTCEngine(EngineConfig config, IRTCEngineEventHandler handler)

  • 参数变更:
    • Context 被移入 EngineConfig 类中
    • EngineConfig 中新增字段: isGameScene,用于控制游戏场景的开关 。
  • 回调名称变更:

从 IRTCVideoEventHandler 更改为 IRTCEngineEventHandler

销毁引擎

destroyRTCVideo

destroyRTCEngine

方法名称变更

引擎事件回调

IRTCVideoEventHandler

IRTCEngineEventHandler

方法名称变更

房间管理

功能

V3.58

V3.60

变更说明

加入房间

创建房间失败回调

onCreateRoomStateChanged(String roomId, int errorCode)

onRoomStateChanged(String roomId, String uid,int state, String extraInfo)

接口替换:
创建房间失败由 onRoomStateChanged 进行通知。不再通过 onCreateRoomStateChanged 回调。

创建房间实例

createRTCRoom(String roomId)

createRTCRoom(String roomId)

行为变更:
使用已存在 roomId 创建房间实例时,将返回上次创建的房间实例,不再触发错误码 WARNING_CODE_OLD_ROOM_BEEN_REPLACED = -2016

远端可见用户加入房间,或房内不可见用户切换为可见的回调

onUserJoined(UserInfo userInfo,int elapsed)

onUserJoined(UserInfo userInfo)

参数变更:删除无效参数 elapsed。

发布和订阅 Simulcast 流

功能

V3.58

V3.60

变更说明

开启/关闭推送多路视频流

enableSimulcastMode(boolean enabled)

setLocalSimulcastMode(VideoSimulcastMode mode)

  • 接口重命名
  • 功能扩展、参数变更:移除旧方法中的 boolean enabled,替换为 VideoSimulcastMode mode,允许通过参数VideoSimulcastMode 指定具体的多路流模式类型。
  • 默认行为调整:
    • 旧接口:当 enabled 为 true 时会发布所有已设置的 Simulcast 流
    • 新接口:将 mode 参数设置为 VIDEO_SIMULCAST_MODE_ALWAYS_SIMULCAST(2) 时会发布所有已设置的 Simulcast 流。
  • 调用时机变更:旧方法在进房前或进房后但未发布流时调用,新方法需在进房前调用。

设置期望订阅的远端视频流的参数

setRemoteVideoConfig(
String userId,
RemoteVideoConfig remoteVideoConfig
)

setRemoteSimulcastStreamType(String streamId, SimulcastStreamType streamType)

  • 接口重命名
  • 参数变更:
    • 移除 RemoteVideoConfig remoteVideoConfig,替换为 SimulcastStreamType streamType,不再需要指定具体数值,你可以通过传入枚举值指定订阅偏好。
    • streamId替换userId

设置或更新 Simulcast 流的编码参数

setVideoEncoderConfig(VideoEncoderConfig[] channelSolutions)

setLocalSimulcastMode(VideoSimulcastMode mode, VideoEncoderConfig[] streamConfig)

接口替换

  • 单流时设置这路视频流编码参数
  • 多路大小流时设置最大那路流视频流编码参数

setVideoEncoderConfig(VideoEncoderConfig maxSolution)

setVideoEncoderConfig(VideoEncoderConfig encoderConfig)

  • 接口合并
  • 功能变更:新方法仅用于设置大流编码参数。
  • 参数变更:形参变更为 encoderConfig

发布和订阅主流(摄像头/麦克风采集的流)

功能

V3.58

V3.60

变更说明

  1. 发布/取消音视频流

API:

  • 发布音视频流
  • 取消发布音视频流
  • publishStream(MediaStreamType type)
  • unpublishStream(MediaStreamType type)
  • publishStreamVideo(boolean publish)
  • publishStreamAudio(boolean publish)
  • 接口拆分、功能扩展:
    • 按照音频和视频拆分:2 个新方法分别用于控制视频流和音频流的发布
    • 合并发布与取消发布:新接口通过 boolean publish 参数处理发布和取消发布操作
  • 参数变更:
    • 移除 MediaStreamType type,新方法直接通过方法名直接区分视频和音频流
    • 新增 boolean publish
  • 行为变更:
    • V3.58:进房前后都有效
    • V3.60:作用域范围只限进房后,进房前调用无效

回调:

  • 房间内远端摄像头/麦克风采集的媒体流的回调
  • 房间内远端摄像头/麦克风采集的媒体流移除的回调
  • onUserPublishStream(String uid,MediaStreamType type)
  • onUserUnpublishStream(String uid,MediaStreamType type, StreamRemoveReason reason)
  • onUserPublishStreamAudio(String streamId, StreamInfo streamInfo, boolean isPublish)
  • onUserPublishStreamVideo(String streamId, StreamInfo streamInfo, boolean isPublish)
  • 接口拆分重命名、功能扩展:
    • 按照音频和视频拆分:2 个新方法分别用于控制音频流和视频流订阅回调
    • 合并订阅与取消订阅状态:新接口通过 isPublish 参数处理发布和取消发布的回调
  • 参数变更:
    • 移除 MediaStreamType type,新方法直接通过方法名直接区分视频和音频流
    • 新增 streamId, streamInfo参数,用于标识流
    • 移除了 StreamRemoveReason reason,不再提供移除原因的详细信息

回调:
音视频流状态触发警告或错误时回调

onStreamStateChanged(
String roomId,
String uid,
int state,
String extraInfo
)

  • onVideoPublishStateChanged(String streamId, StreamInfo streamInfo, PublishState state, PublishStateChangeReason reason)
  • onAudioPublishStateChanged(String streamId, StreamInfo streamInfo, PublishState state, PublishStateChangeReason reason)
  • 接口拆分重命名:按照音频和视频拆分,新方法分别用于控制视频流和音频流的发布状态回调
  • 参数变更:
    • 参数替换:​roomId、uid替换成 streamId、streamInfo
    • 参数类型变更:state 的类型由 int 替换为枚举类型 SubscribeState
    • 新增参数:新增 reason,类型为 PublishStateChangeReason ,用于更详细地描述状态改变的具体原因。
    • 移除参数:移除无效参数 extraInfo
  1. 订阅/取消订阅音视频流
  • 订阅音视频流
  • 取消订阅音视频流
  • subscribeStream(String uid, MediaStreamType type)
  • unsubscribeStream(String uid, MediaStreamType type)
  • subscribeStreamVideo(String streamId, boolean subscribe)
  • subscribeStreamAudio(String streamId, boolean subscribe)
  • 接口拆分重命名、功能扩展:
    • 按照音频和视频拆分:2 个新方法分别用于控制视频流和音频流的订阅
    • 合并订阅与取消订阅:新接口通过 boolean subscribe 参数处理订阅和取消订阅
  • 参数变更:
    • 移除 MediaStreamType type,新方法直接通过方法名直接区分视频流和音频流
    • uid 被streamId替换
    • 新增 boolean subscribe

音视频流订阅状态改变回调

onStreamSubscribed(int stateCode,String userId,SubscribeConfig info)

  • onVideoSubscribeStateChanged(String streamId, StreamInfo streamInfo, SubscribeState state, SubscribeStateChangeReason reason)
  • onAudioSubscribeStateChanged(String streamId, StreamInfo streamInfo, SubscribeState state, SubscribeStateChangeReason reason)
  • 接口拆分、重命名:按照音频和视频拆分,2 个新方法分别用于控制音频流和视频流订阅状态改变回调
  • 参数变更
    • int stateCode :替换为被替换更明确的枚举类型 SubscribeState state
    • userId 替换成streamId、streamInfo
    • 新增了参数 reason:用于更详细地描述订阅状态改变的具体原因
    • 移除了 SubscribeConfig info

音视频流状态触发警告或错误时回调

onStreamStateChanged(
String roomId,
String uid,
int state,
String extraInfo
)

  • onVideoSubscribeStateChanged(String streamId, StreamInfo streamInfo, SubscribeState state, SubscribeStateChangeReason reason)
  • onAudioSubscribeStateChanged(String streamId, StreamInfo streamInfo, SubscribeState state, SubscribeStateChangeReason reason)
  • 接口拆分、重命名:按照音频和视频拆分,2 个新方法分别用于控制音频流和视频流订阅状态改变回调
  • 参数变更:
    • 参数类型变更:
      • state 的类型由 int 替换为枚举类型 SubscribeState
      • roomId 和 uid 被 streamId 和 streamInfo 替换
    • 新增参数:新增 reason,类型为 SubscribeStateChangeReason ,用于更详细地描述状态改变的具体原因。
    • 移除参数:移除无效参数 extraInfo
  1. 订阅/取消订阅所有媒体流
  • 订阅所有媒体流
  • 取消订阅所有媒体流
  • subscribeAllStreams(MediaStreamType type)
  • unsubscribeAllStreams(MediaStreamType type)
  • subscribeAllStreamsVideo(boolean subscribe)
  • subscribeAllStreamsAudio(boolean subscribe)
  • 接口拆分重命名、功能扩展:
    • 按照音频和视频拆分:2 个新方法分别用于订阅/取消所有视频流、订阅/取消所有音频流
    • 合并订阅与取消订阅:新接口通过 boolean subscribe 参数处理订阅和取消订阅
  • 参数变更:
    • 移除 MediaStreamType type,新方法直接通过方法名直接区分视频和音频流
    • 新增 boolean subscribe

暂停接收来自远端的媒体流

pauseAllSubscribedStream(PauseResumeControlMediaType mediaType)

  • pauseAllSubscribedStreamAudio()
  • pauseAllSubscribedStreamVideo()
  • 接口拆分:按照音频和视频拆分,2 个新方法分别用于暂停接收所有远端的音频流、暂停所有远端的视频流
  • 参数变更:移除了 PauseResumeControlMediaType mediaType,新方法通过方法名直接区分音频和视频流

恢复接收来自远端的媒体流

resumeAllSubscribedStream(PauseResumeControlMediaType mediaType)

  • resumeAllSubscribedStreamAudio()
  • resumeAllSubscribedStreamVideo()
  • 接口拆分:按照音频和视频拆分,2 个新方法分别用于恢复接收所有远端的音频流、恢复接收所有远端的视频流
  • 参数变更:移除了 PauseResumeControlMediaType mediaType,新方法通过方法名直接区分音频和视频流

屏幕分享

  1. 屏幕流和普通视频流在同一引擎中不能共存,开启屏幕流时会自动关闭普通视频流,开启普通视频流时会自动关闭屏幕流。
  2. 屏幕流和普通视频流发布订阅方式一致,废除了一系列以带"screen"的接口。

功能

V3.58

V3.60

变更说明

采集屏幕视频

startScreenCapture(ScreenMediaType type, Intent mediaProjectionResultData)

startScreenCapture(ScreenMediaType type, Intent mediaProjectionResultData)

行为变更:
在开始屏幕采集时,会停止视频采集功能

设置屏幕流编码参数

setScreenVideoEncoderConfig(ScreenVideoEncoderConfig screenSolution)

setVideoEncoderConfig(VideoEncoderConfig encoderConfig)

接口替换:
屏幕流和视频流共用同一套编码参数,setVideoEncoderConfig设置的参数会同时作用于屏幕流和一般视频流

发布/停止发布本地屏幕音视频流

publishScreen(MediaStreamType type)
unpublishScreen(MediaStreamType type)

publishStreamVideo(boolean publish)
publishStreamAudio(boolean publish)

接口替换:
屏幕流和视频流共用同一套发布/取消发布接口
接口拆分
音频和视频的发布/取消发布接口拆开

订阅/取消订阅远端屏幕音视频流

subscribeScreen(String uid,MediaStreamType type)
unsubscribeScreen( String uid,MediaStreamType type)

subscribeStreamVideo(String streamId, boolean subscribe)
subscribeStreamAudio(String streamId, boolean subscribe)

接口替换:
屏幕流和视频流共用同一套订阅/取消订阅接口
接口拆分
音频和视频的订阅/取消订阅接口拆开
参数变更:
通过参数streamId来区分具体是哪路流,是否为屏幕流

远端用户发布或者取消发布屏幕流回调

onUserPublishScreen( String uid,MediaStreamType type)
onUserUnpublishScreen(String uid,MediaStreamType type,StreamRemoveReason reason)

onUserPublishStreamVideo(String streamId, StreamInfo streamInfo, boolean isPublish)
onUserPublishStreamAudio(String streamId, StreamInfo streamInfo, boolean isPublish)

接口替换:
屏幕流和视频流共用同一套发布/取消发布回调接口
接口拆分
音频和视频的发布/取消发布回调接口拆开
参数变更:
通过参数streamId来区分具体是哪路流,是否为屏幕流

屏幕共享流的视频首帧发送状态回调

onScreenVideoFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state)

onVideoFrameSendStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFrameSendState state)

接口替换:
屏幕流和视频流共用同一套视频首帧发送状态回调
参数变更:
通过参数streamId来区分具体是哪路流,是否为屏幕流

屏幕共享流视频首帧播放状态回调

onScreenVideoFramePlayStateChanged(String roomId,RtcUser user,FirstFramePlayState state)

onVideoFramePlayStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFramePlayState state)

接口替换:
屏幕流和视频流共用同一套视频首帧播放状态回调
参数变更:
通过参数streamId来区分具体是哪路流,是否为屏幕流

RTS

RTC包含RTS能力,当前版本将RTS相关接口进一步进行拆分。如果仅使用RTS的相关能力则调用createRTSRoom创建RTSRoom实例,使用RTSRoomEventHandler回调。如果既使用音视频能力又使用RTS能力则从RTCEngine中调用createRTCRoom创建RTCRoom实例,使用RTCRoomEventHandler回调。

功能

v3.58

v3.60

变更说明

创建RTS房间

createRTCRoom(String roomId)

createRTSRoom(String roomId)

  • 接口拆分:仅使用RTS的相关能力则调用createRTSRoom创建RTSRoom实例

设置RTS相关回调

setRTCRoomEventHandler(IRTCRoomEventHandler rtcRoomEventHandler);

setRTSRoomEventHandler(IRTSRoomEventHandler rtcRoomEventHandler)

  • 接口拆分:仅使用RTS的相关能力则调用则在RTSRoom中的此接口设置回调

收到房间外用户发来的文本消息时,会收到此回调

onUserMessageReceivedOutsideRoom(String uid,String message)

onUserMessageReceivedOutsideRoom(long msgid, String uid, String message)

  • 参数变更:回调参数增加msgid参数

收到房间外用户 发来的二进制消息时,会收到此回调

onUserBinaryMessageReceivedOutsideRoom(String uid, ByteBuffer message)

onUserBinaryMessageReceivedOutsideRoom(long msgid, String uid, ByteBuffer message)

  • 参数变更:回调参数增加msgid参数

接收到房间内广播消息的回调

onRoomMessageReceived(String uid,String message)

onRoomMessageReceived(long msgid, String uid, String message)

  • 参数变更:回调参数增加msgid参数

收到房间内广播二进制消息的回调

onRoomBinaryMessageReceived(String uid,ByteBuffer message)

onRoomBinaryMessageReceived(long msgid, String uid, ByteBuffer message)

  • 参数变更:回调参数增加msgid参数

收到来自房间中其他用户发来的点对点文本消息时,会收到此回调

onUserMessageReceived(String uid,String message)

onUserMessageReceived(long msgid, String uid, String message)

  • 参数变更:回调参数增加msgid参数

收到来自房间中其他用户发来的点对点二进制消息时,会收到此回调

onUserBinaryMessageReceived( String uid,ByteBuffer message)

onUserBinaryMessageReceived(long msgid, String uid, ByteBuffer message)

  • 参数变更:回调参数增加msgid参数

WTN 流(原公共流)

  • 接口位置移动:
    • 订阅 WTN 流的接口移动到新增的 IWTNStream 类中。
    • WTN 流订阅端回调移动到新增的 IWTNStreamEventHandler 回调类中。你需要先调用 setWTNStreamEventHandler 设置回调手柄。
  • 与合流转推接口共用 MixedStreamConfig,提升易用性。
  • 新增 onWTNRemoteVideoStats 和 onWTNRemoteAudioStats:用于获取 WTN 流信息,检测流质量。
  • 接口发生拆分、重命名、替换、参数变更等,具体变更如下:

功能

V3.58

V3.60

变更说明

发布 WTN 流
支持指定房间内多个用户发布的媒体流合成一路 WTN 流

startPushPublicStream(
String publicStreamId,
PublicStreaming publicStream
)

startPushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig)

  • 接口重命名
  • 接口合并、功能扩展:startPushPublicStream 和 startPushMixedStreamToCDN 合并为 startPushMixedStream,新接口可同时用于合流转推至 CDN 或转推 WTN(原公共流)
  • 参数变更:
    • 新增 taskId:设置转推任务 ID,用于标识转推任务
    • 新增MixedStreamConfig mixedConfig 类型,用于配置合流转推,如视频和音频的转码参数、布局等。
    • 移除 String publicStreamId:由新增参数 MixedStreamPushTargetConfig pushTargetConfig 的来指定 WTN 流 ID(即公共流 ID)
    • 移除 PublicStreaming publicStream,由新增参数 MixedStreamConfig mixedConfig 来指定配置 WTN 流(例如视频转码、布局等)

更新 WTN 流

updatePublicStreamParam(
String publicStreamId,
PublicStreaming transcoding
)

updatePushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig)

  • 接口重命名
  • 接口合并、功能扩展:updatePublicStreamParam 和 updatePushMixedStreamToCDN 合并为 updatePushMixedStream,新接口可同时用于更新合流转推 CDN 和转推 WTN(原公共流)任务
  • 参数变更:
    • 新增 taskId:合流任务的 ID
    • 移除 String publicStreamId:由新增参数 MixedStreamPushTargetConfig pushTargetConfig 的来指定 WTN 流 ID(即公共流 ID)
    • 移除 PublicStreaming transcoding,由新增参数 MixedStreamConfig mixedConfig 来配置 WTN 流(如视频和音频的转码参数、布局等)

停止发布 WTN 流

stopPushPublicStream(String publicStreamId)

stopPushMixedStream(String taskId, MixedStreamPushTargetType targetType)

  • 接口重命名
  • 接口合并、功能扩展:stopPushPublicStream 和 stopPushStreamToCDN 合并为 stopPushMixedStream,新接口可同时用于停止发布 WTN 流(原公共流)和停止合流转推
  • 参数变更:
    • 新增 taskId:合流任务的 ID
    • 移除 String publicStreamId,由 MixedStreamPushTargetType targetType 来指定用于指定要停止的流类型

订阅/取消订阅 WTN 流

  • startPlayPublicStream(String publicStreamId)
  • stopPlayPublicStream(String publicStreamId)
  • subscribeWTNVideoStream(String streamId, boolean subscribe)
  • subscribeWTNAudioStream(String streamId, boolean subscribe)
  • 接口拆分重命名、功能扩展:
    • 按照音频和视频拆分:2 个新方法别用于订阅/取消订阅 WTN 音视流、订阅/取消订阅视频流
    • 合并订阅与取消订阅:新接口通过 boolean subscribe 参数处理订阅和取消订阅
  • 参数变更:
    • publicStreamId:重命名为streamId
    • 新增 boolean subscribe

绑定 WTN 流画布

setPublicStreamVideoCanvas(
String publicStreamId,
VideoCanvas canvas
)

setWTNRemoteVideoCanvas(String streamId, VideoCanvas canvas)

  • 接口重命名
  • 参数变更:publicStreamId 重命名为 streamId

为 WTN 流指定外部渲染器

setPublicStreamVideoSink(
String publicStreamId,
IVideoSink videoSink,
@IVideoSink.PixelFormat int requiredFormat
)

setWTNRemoteVideoSink(String streamId, IVideoSink videoSink, RemoteVideoSinkConfig config)

  • 接口重命名
  • 参数变更:
    • publicStreamId 重命名为 streamId
    • 新增字段 RemoteVideoSinkConfig config,用于配置远端视频帧(例如位置、格式、否将视频帧镜像等)
    • 原 @IVideoSink.PixelFormat int requiredFormat,由RemoteVideoSinkConfig 中的字段 pixelFormat 实现,默认为 0(原格式)

设置 WTN 流播放音量

setPublicStreamAudioPlaybackVolume(
String publicStreamId,
int volume
)

setWTNRemoteAudioPlaybackVolume(String streamId, int volume)

  • 接口重命名
  • 参数变更:publicStreamId 重命名为 streamId

WTN 流发布结果回调

onPushPublicStreamResult(
String roomId,
String publicStreamId,
PublicStreamErrorCode error
)

onMixedStreamEvent(MixedStreamTaskInfo info, MixedStreamTaskEvent event, MixedStreamTaskErrorCode error)

  • 接口重命名
  • 接口合并:onMixingEvent、onStreamMixingEvent 和 onPushPublicStreamResult 合并为 onMixedStreamEvent,新接口可同时用于回调合流转推 CDN / WTN 流状态
  • 参数变更:
    • PublicStreamErrorCode 变更为 MixedStreamTaskErrorCode,和合流转推任务共用同一个枚举类。变更详情,请参见Android
    • roomId:不再需要传入
    • publicStreamId:替换为新增的 MixedStreamTaskInfo info 中的 taskId
    • 新增 MixedStreamTaskEvent event,详情请参见Android

播放 WTN 流任务回调

onPlayPublicStreamResult(
String publicStreamId,
PublicStreamErrorCode error
)

  • onWTNVideoSubscribeStateChanged(String streamId, WTNSubscribeState stateCode, WTNSubscribeStateChangeReason reason)
  • onWTNAudioSubscribeStateChanged(String streamId, WTNSubscribeState stateCode, WTNSubscribeStateChangeReason reason)
  • 接口拆分、重命名:拆分为 2 个独立接口,分别用于回调 WTN 音频/视频流订阅状态变化
  • 参数变更
    • publicStreamId 重命名为 streamId
    • 移除 PublicStreamErrorCode error :替换为WTNSubscribeState stateCode (订阅状态码)和 WTNSubscribeStateChangeReason reason(订阅状态变化原因)。

接收 WTN 流中的 SEI 回调

onPublicStreamSEIMessageReceived(
String publicStreamId,
ByteBuffer message,
DataMessageSourceType sourceType
)

onWTNSEIMessageReceived(String streamId, int channelId, ByteBuffer message)

  • 接口重命名
  • 位置移动:移动到 IWTNStream 类中
  • 参数变更:
    • publicStreamId 重命名为 streamId
    • 新增 channelId:为不同接受方设置不同的 ChannelID,接收方可以根据回调中的 ChannelID 选择应关注的 SEI 信息
    • 删除 DataMessageSourceType sourceType ,不再需要传入

接收 WTN 流中的 Data Message 回调

onPublicStreamDataMessageReceived(
String publicStreamId,
ByteBuffer message,
DataMessageSourceType sourceType
)

onWTNDataMessageReceived(String streamId, ByteBuffer message, DataMessageSourceType sourceType)

  • 接口重命名
  • 位置移动:移动到 IWTNStream 类中
  • 参数变更:publicStreamId 重命名为 streamId

WTN 视频流首帧解码成功回调

onFirstPublicStreamVideoFrameDecoded(
String publicStreamId,
VideoFrameInfo videoFrameInfo
)

onWTNFirstRemoteVideoFrameDecoded(String streamId, VideoFrameInfo info)

  • 接口重命名
  • 位置移动:移动到 IWTNStream 类中
  • 参数变更:
    • publicStreamId 重命名为 streamId
    • videoFrameInfo 重命名为 info

WTN 音频流首帧解码成功回调

onFirstPublicStreamAudioFrame(String publicStreamId)

onWTNFirstRemoteAudioFrame(String streamId)

  • 接口重命名
  • 位置移动:移动到 IWTNStream 类中
  • 参数变更:publicStreamId 重命名为 streamId

转推直播

优化了转推直播接口的易用性。与 WTN 接口共用 MixedStreamConfig,提升易用性。如果你已经实现了转推直播功能,参考以下表格对接口进行替换。

功能

V3.58

V3.60

变更说明

  1. 合流转推

API:合流转推

startPushMixedStreamToCDN(
String taskId,
MixedStreamConfig mixedConfig,
IMixedStreamObserver observer
)

startPushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig)

  • 接口重命名
  • 接口合并、功能变更:startPushPublicStream 和 startPushMixedStreamToCDN 合并为 startPushMixedStream,新接口可同时用于合流转推 CDN 和转推 WTN(原公共流)
  • 参数变更:
    • 删除:observer,不再需要传入
    • 新增:pushTargetConfig,用于指定指定推流地址(比如CDN 地址、WTN 流 ID)

回调:
合流转推直播状态回调

  • onMixingEvent(ByteRTCStreamMixingEvent eventType,String taskId,ByteRTCTranscoderErrorCode error,MixedStreamType mixType)
  • onStreamMixingEvent(ByteRTCStreamMixingEvent eventType,String taskId,ByteRTCTranscoderErrorCode error,MixedStreamType mixType)

onMixedStreamEvent(MixedStreamTaskInfo info, MixedStreamTaskEvent event, MixedStreamTaskErrorCode error)

  • 接口拆分、重命名:按合流任务事件回调、单流任务的事件回调拆分。
  • 接口合并:onMixingEvent、onStreamMixingEvent 和 onPushPublicStreamResult 合并为 onMixedStreamEvent,新接口可同时用于回调合流转推 CDN / WTN 流状态
  • 参数变更:
    • 事件变更:ByteRTCStreamMixingEvent eventType替换为 MixedStreamTaskEvent event,详情请参见Android
    • 错误码变更:ByteRTCTranscoderErrorCode 替换为 MixedStreamTaskErrorCode,详情请参见Android
    • 移除 MixedStreamType mixType:无替代
    • 新增参数 MixedStreamTaskInfo info: 包含了合流任务的相关信息,如流类型等。
  • 位置移动:移动到 IRTCEngineEventHandler

更新合流转推任务

updatePushMixedStreamToCDN(
String taskId,
MixedStreamConfig mixedConfig
)

updatePushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig)

  • 接口重命名
  • 接口合并:updatePublicStreamParam 和 updatePushMixedStreamToCDN 合并为 updatePushMixedStream,新接口可同时用于更新合流转推 CDN 和转推 WTN(原公共流)任务
  • 参数变更:新增参数 MixedStreamPushTargetConfig pushTargetConfig,用于设置目标推流地址
  1. 单流转推

API:发起单流转推

startPushSingleStreamToCDN(
String taskId,
PushSingleStreamParam param,
IPushSingleStreamToCDNObserver observer
)

startPushSingleStream(String taskId, PushSingleStreamParam param)

  • 接口重命名
  • 移除参数:IPushSingleStreamToCDNObserver observer
  • API功能扩展:
    • 本次升级让本接口不仅能将RTC流转推到CDN,也支持将RTC流转推至RTC房间

回调:
单流转推直播状态回调

onStreamPushEvent(
ByteRTCStreamSinglePushEvent eventType,
String taskId,
int error
)

onSingleStreamEvent(String taskId, SingleStreamTaskEvent event, SingleStreamTaskErrorCode error)

  • 接口重命名
  • 参数变更:
    • 事件变更:ByteRTCStreamSinglePushEvent eventType 替换为 SingleStreamTaskEvent event,详情请参见Android
    • int error:替换为SingleStreamTaskErrorCode error,新增枚举提供了更具体的错误码定义,详情请参见Android
  1. 停止转推

停止单流/合流转推

stopPushStreamToCDN(String taskId)

  • stopPushSingleStream(String taskId)
  • stopPushMixedStream(String taskId, MixedStreamPushTargetType targetType)
  • 接口拆分、重命名:按单流和合流拆分
  • **其中,停止合流转推接口(**stopPushMixedStream):
    • 功能上:即可用于停止转推 CDN,也可以用于停止转推 WTN 流
    • 新增参数:MixedStreamPushTargetType targetType,用于指定要停止的流类型

音视频传输

功能

接口名

变更说明

接收到来自远端某音频流的第一帧时回调

  • SDK 渲染成功远端视频流首帧后回调
  • SDK 接收并解码远端视频流首帧后回调
  • onFirstRemoteVideoFrameRendered(String streamId, StreamInfo streamInfo, VideoFrameInfo frameInfo)
  • onFirstRemoteVideoFrameDecoded(String streamId, StreamInfo streamInfo, VideoFrameInfo frameInfo)

参数变化:
RemoteStreamKey参数替换成streamId、streamInfo
新增适用场景:
远端用户取消发布视频并再发布视频后,也会收到该这两个回调。
取消发布包括发布端主动取消、主动退房、掉线以及停止采集。

^^

将外部音频参考帧推到sdk内

pushReferenceAudioPCMData

新增API:自定义音频回声消除参考信号

音画同步

功能

V3.58

V3.60

变更说明

音视频同步状态发生改变时

onAVSyncStateChange(AVSyncState state)

onAVSyncEvent(String roomId, String uid, AVSyncEvent eventCode)

  • 接口重命名
  • 参数变更
    • 新增了 roomId 和 uid
    • AVSyncState state(同步状态): 类型替换为 AVSyncEvent(同步失败事件 ),你可以在收到该通知时,调用 setMultiDeviceAVSync 传入空参数解绑同步关系,并再次调用该接口进行绑定。
  • 行为变更:音视频同步失败
    • 3.58:由以下错误码返回:ErrorCode.ERROR_CODE_INVALID_AUDIO_SYNC_USERID_REPEATED = -1083
    • 3.60:通过 onAVSyncEvent 返回 AVSyncEvent.INVALID_UID_REPEATED(0)

音量、音频播放路由、音频场景

功能

V3.58

V3.60

变更说明

强制切换当前的音频播放路由

setAudioRoute

setAudioRoute

限制发生变化:
强制切换当前的音频播放路由,不再限制仅在 AUDIO_SCENARIO_COMMUNICATION 音频场景下使用,只要当前状态为通话模式,即可使用。

设置音频场景类型

setAudioScenario

setAudioScenario

  • 参数变更:
    • 音频设备使用的音量模式发生了变更,参看媒体音量和通话音量:
      • 已经通过 setAudioScenario 设置了音频场景:需要参看上述文档,替换为更新后的音频场景,并关注音量模式的变化情况。
      • 未曾通过 setAudioScenario 设置音频场景:也需要关注默认音频场景下,同一音频设备的音量模式变化情况。
  • API行为变化:
    • 本次升级导致本接口会根据不同AudioScenarioType参数采用不同音频3A算法。

推送外部视频帧

v3.58

v3.60

变更说明

pushExternalVideoFrame(VideoFrame frame)

pushExternalVideoFrame(VideoFrameData frame)

参数变更:
参数 videoFrame 的类型由 VideoFrame 替换为 VideoFrameData,与原类型相比,包含参数和是否必填均发生变化。详情,请参见Android。

根据热榜获取每个榜单的歌曲列表

v3.58

v3.60

变更说明

getHotMusic(@NonNull MusicHotType[] hotTypes,@NonNull MusicFilterType[] filters)

getHotMusic(@NonNull ListcustomHotlistId, @NonNull MusicFilterType[] filters)

参数替换:移除 hotType ,替换为customHotlistId,类型也由枚举改为 List<String> (榜单 ID 列表),用于提供自定义的热门音乐列表 ID。属性值对应如下:

  • CONTENT_CENTER → ContentCenter
  • PROJECT → Project

StreamId唯一识别流

当前版本使用streamId唯一标识一路流,因此各个API中以前版本的streamIndex参数被streamId或相关信息替换,涉及到API如下:

v3.58

v3.60

变更说明

muteAudioCapture(StreamIndex index, boolean mute)

muteAudioCapture(boolean mute)

参数变化:
删除StreamIndex参数

setCaptureVolume(StreamIndex index, int volume)

setCaptureVolume(int volume)

参数变化:
删除StreamIndex参数

enableAlphaChannelVideoEncode(StreamIndex streamIndex, AlphaLayout alphaLayout)

enableAlphaChannelVideoEncode(AlphaLayout alphaLayout)

参数变化:
删除StreamIndex参数

disableAlphaChannelVideoEncode(StreamIndex streamIndex)

disableAlphaChannelVideoEncode()

参数变化:
删除StreamIndex参数

setLocalVideoCanvas(StreamIndex streamIndex, VideoCanvas videoCanvas)

setLocalVideoCanvas(VideoCanvas videoCanvas)

参数变化:
删除StreamIndex参数

updateLocalVideoCanvas(StreamIndex streamIndex, int renderMode, int backgroundColor)

updateLocalVideoCanvas(int renderMode, int backgroundColor)

参数变化:
删除StreamIndex参数

setRemoteVideoCanvas(RemoteStreamKey streamKey, VideoCanvas videoCanvas)

setRemoteVideoCanvas(String streamId, VideoCanvas videoCanvas)

参数变化:
将RemoteStreamKey参数换为streamId

int updateRemoteStreamVideoCanvas(RemoteStreamKey streamKey, RemoteVideoRenderConfig remoteVideoRenderConfig)

updateRemoteStreamVideoCanvas(String streamId, RemoteVideoRenderConfig remoteVideoRenderConfig)

参数变化:
将RemoteStreamKey参数换为streamId

setLocalVideoSink(StreamIndex index, IVideoSink videoSink, LocalVideoSinkConfig config)

setLocalVideoSink(IVideoSink videoSink, LocalVideoSinkConfig config)

参数变化:
删除StreamIndex参数

setRemoteVideoSink(RemoteStreamKey streamKey, IVideoSink videoSink, RemoteVideoSinkConfig config)

setRemoteVideoSink(String streamId, IVideoSink videoSink, RemoteVideoSinkConfig config)

参数变化:
将RemoteStreamKey参数换为streamId

setVideoSourceType(StreamIndex index, VideoSourceType type)

setVideoSourceType(VideoSourceType type)

参数变化:
删除StreamIndex参数

setRemoteVideoMirrorType(RemoteStreamKey remoteStreamKey, RemoteMirrorType mirrorType)

setRemoteVideoMirrorType(String streamId, RemoteMirrorType mirrorType)

参数变化:
将RemoteStreamKey参数换为streamId

sendSEIMessage(StreamIndex streamIndex, byte[] message, int repeatCount, SEICountPerFrame mode)

sendSEIMessage(byte[] message, int repeatCount, SEICountPerFrame mode)

参数变化:
删除StreamIndex参数

startFileRecording(StreamIndex type, RecordingConfig config, RecordingType recordingType)

startFileRecording(RecordingConfig config, RecordingType recordingType)

参数变化:
删除StreamIndex参数

stopFileRecording(StreamIndex type)

stopFileRecording()

参数变化:
删除StreamIndex参数

setRemoteAudioPlaybackVolume(String roomId, String uid, int volume)

setRemoteAudioPlaybackVolume(String streamId, int volume)

  • 参数变化:

将roomid、uid参数换为streamId

  • 功能拓展:

仅支持调节来自指定用户的媒体流音量,升级为支持分别调节本地采集媒体流音量,屏幕流音量,和指定进程音量。

pushExternalEncodedVideoFrame(StreamIndex streamIndex, int videoIndex, RTCEncodedVideoFrame encodedVideoFrame)

pushExternalEncodedVideoFrame(int videoIndex, RTCEncodedVideoFrame encodedVideoFrame)

参数变化:
删除StreamIndex参数

setVideoDecoderConfig(RemoteStreamKey key, VideoDecoderConfig config)

setVideoDecoderConfig(String streamId, VideoDecoderConfig config)

参数变化:
将RemoteStreamKey参数换为streamId

requestRemoteVideoKeyFrame(RemoteStreamKey streamKey)

requestRemoteVideoKeyFrame(String streamId)

参数变化:
将RemoteStreamKey参数换为streamId

setVideoWatermark(StreamIndex streamIndex, String imagePath, RTCWatermarkConfig watermarkConfig)

setVideoWatermark(String imagePath, RTCWatermarkConfig watermarkConfig)

参数变化:
删除StreamIndex参数

clearVideoWatermark(StreamIndex streamIndex)

clearVideoWatermark()

参数变化:
删除StreamIndex参数

takeLocalSnapshot(StreamIndex streamIndex, ISnapshotResultCallback callback)

takeLocalSnapshot(ISnapshotResultCallback callback)

参数变化:
将StreamIndex参数换为streamId

takeRemoteSnapshot(StreamIndex streamIndex, ISnapshotResultCallback callback)

takeRemoteSnapshot(String streamId, ISnapshotResultCallback callback)

参数变化:
将StreamIndex参数换为streamId

onUserStartVideoCapture(String roomId,String uid)

onUserStartVideoCapture(String streamId, StreamInfo streamInfo)

参数变化:
roomId、uid被streamId、streamInfo替换

onUserStopVideoCapture(String roomId, String uid)

onUserStopVideoCapture(String streamId, StreamInfo streamInfo)

参数变化:
roomId、uid被streamId、streamInfo替换

onUserStartAudioCapture(String roomId, String uid)

onUserStartAudioCapture(String streamId, StreamInfo streamInfo)

参数变化:
roomId、uid被streamId、streamInfo替换

onUserStopAudioCapture(String roomId, String uid)

onUserStopAudioCapture(String streamId, StreamInfo streamInfo)

参数变化:
roomId、uid被streamId、streamInfo替换

onLocalAudioStateChanged(LocalAudioStreamState state, LocalAudioStreamError error)

onLocalAudioStateChanged(String streamId, StreamInfo streamInfo, LocalAudioStreamState state, LocalAudioStreamError error)

参数变化:
增加参数streamId、streamInfo

onLocalVideoStateChanged(StreamIndex streamIndex, LocalVideoStreamState state, LocalVideoStreamError error)

onLocalVideoStateChanged(String streamId, StreamInfo streamInfo, LocalVideoStreamState state, LocalVideoStreamError error)

参数变化:
StreamIndex参数替换成streamId、streamInfo

onRemoteAudioStateChanged(RemoteStreamKey key, RemoteAudioState state ,RemoteAudioStateChangeReason reason)

onRemoteAudioStateChanged(String streamId, StreamInfo streamInfo, RemoteAudioState state, RemoteAudioStateChangeReason reason)

参数变化:
RemoteStreamKey参数替换成streamId、streamInfo

onRemoteVideoStateChanged(RemoteStreamKey streamKey, RemoteVideoState videoState, RemoteVideoStateChangeReason videoStateReason)

onRemoteVideoStateChanged(String streamId, StreamInfo streamInfo, RemoteVideoState videoState, RemoteVideoStateChangeReason videoStateReason)

参数变化:
RemoteStreamKey参数替换成streamId、streamInfo

onFirstLocalVideoFrameCaptured(StreamIndex streamIndex, VideoFrameInfo frameInfo)

onFirstLocalVideoFrameCaptured(IVideoSource videoSource, VideoFrameInfo frameInfo)

参数变化:
StreamIndex参数替换成IVideoSource

onLocalVideoSizeChanged(StreamIndex streamIndex, VideoFrameInfo frameInfo)

onLocalVideoSizeChanged(IVideoSource videoSource, VideoFrameInfo frameInfo)

参数变化:
StreamIndex参数替换成IVideoSource

onRemoteVideoSizeChanged(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo)

onRemoteVideoSizeChanged(String streamId, StreamInfo streamInfo, VideoFrameInfo frameInfo)

参数变化:
RemoteStreamKey参数替换成streamId、streamInfo

onFirstLocalAudioFrame(StreamIndex streamIndex)

onFirstLocalAudioFrame(IAudioSource audioSource)

参数变化:
StreamIndex参数替换成IAudioSource

onSEIMessageReceived(RemoteStreamKey remoteStreamKey,ByteBuffer message)

onSEIMessageReceived(String streamId, StreamInfo streamInfo, ByteBuffer message)

参数变化:
RemoteStreamKey参数替换成streamId、streamInfo

onSEIStreamUpdate(RemoteStreamKey remoteStreamKey, SEIStreamUpdateEvent event)

onSEIStreamUpdate(String streamId, StreamInfo streamInfo, SEIStreamUpdateEvent event)

参数变化:
RemoteStreamKey参数替换成streamId、streamInfo

onRecordingStateUpdate(StreamIndex index, RecordingState state, RecordingErrorCode errorCode, RecordingInfo info)

onRecordingStateUpdate(IVideoSource videoSource, RecordingState state, RecordingErrorCode errorCode, RecordingInfo info)

参数变化:
参数StreamIndex换为IVideoSource

onRecordingProgressUpdate(StreamIndex index, RecordingProgress progress, RecordingInfo info)

onRecordingProgressUpdate(IVideoSource videoSource, RecordingProgress progress, RecordingInfo info)

参数变化:
参数StreamIndex换为IVideoSource

onStreamSyncInfoReceived(RemoteStreamKey streamKey, StreamSyncInfoConfig.SyncInfoStreamType streamType, ByteBuffer data)

onStreamSyncInfoReceived(String streamId, StreamInfo streamInfo, StreamSyncInfoConfig.SyncInfoStreamType streamType, ByteBuffer data)

参数变化:
参数RemoteStreamKey换为streamId、streamInfo

onAudioFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state)

onAudioFrameSendStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFrameSendState state)

参数变化:
参数roomId换为streamId、streamInfo

onVideoFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state)

onVideoFrameSendStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFrameSendState state)

参数变化:
参数roomId换为streamId、streamInfo

onAudioFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state)

onAudioFramePlayStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFramePlayState state)

参数变化:
参数roomId换为streamId、streamInfo

onVideoFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state)

onVideoFramePlayStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFramePlayState state)

参数变化:
参数roomId换为streamId、streamInfo

onSimulcastSubscribeFallback(RemoteStreamSwitch event)

onSimulcastSubscribeFallback(String streamId, StreamInfo streamInfo, RemoteStreamSwitch event)

参数变化:
增加参数streamId、streamInfo

onPerformanceAlarms(PerformanceAlarmMode mode, String roomId, PerformanceAlarmReason reason, SourceWantedData data)

onPerformanceAlarms(String streamId, StreamInfo streamInfo, PerformanceAlarmMode mode, PerformanceAlarmReason reason, SourceWantedData data)

参数变化:
参数roomId换为streamId、streamInfo

onLocalStreamStats(LocalStreamStats stats)

onLocalStreamStats(String streamId, StreamInfo streamInfo, LocalStreamStats stats)

参数变化:
增加参数streamId、streamInfo

onRemoteStreamStats(RemoteStreamStats stats)

onRemoteStreamStats(String streamId, StreamInfo streamInfo, RemoteStreamStats stats)

参数变化:
增加参数streamId、streamInfo

onLocalEncodedVideoFrame(StreamIndex streamIndex, RTCEncodedVideoFrame encodedVideoFrame)

onLocalEncodedVideoFrame(IVideoSource videoSource, RTCEncodedVideoFrame encodedVideoFrame)

参数变化:
参数StreamIndex替换成IVideoSource

onRemoteEncodedVideoFrame(RemoteStreamKey streamKey, RTCEncodedVideoFrame encodedVideoFrame)

onRemoteEncodedVideoFrame(String streamId, StreamInfo streamInfo, RTCEncodedVideoFrame encodedVideoFrame)

参数变化:
参数RemoteStreamKey替换成streamId、streamInfo

onTakeLocalSnapshotResult(long taskId, StreamIndex streamIndex, Bitmap image, int errorCode)

onTakeLocalSnapshotResult(long taskId, IVideoSource videoSource, Bitmap image, int errorCode)

参数变化:
参数StreamIndex替换成IVideoSource

onTakeRemoteSnapshotResult(long taskId, RemoteStreamKey streamKey, Bitmap image, int errorCode)

onTakeRemoteSnapshotResult(long taskId, String streamId, StreamInfo streamInfo, Bitmap image, int errorCode)

参数变化:
参数RemoteStreamKey替换成streamId、streamInfo

onRemoteUserAudioFrame(RemoteStreamKey streamKey, IAudioFrame audioFrame)

onRemoteUserAudioFrame(String streamId, StreamInfo streamInfo, IAudioFrame audioFrame)

参数变化:
参数RemoteStreamKey替换成streamId、streamInfo

onProcessRemoteUserAudioFrame(RemoteStreamKey streamKey, IAudioFrame audioFrame)

onProcessRemoteUserAudioFrame(String streamId, StreamInfo streamInfo, IAudioFrame audioFrame)

参数变化:
参数RemoteStreamKey替换成streamId、streamInfo

onStart(StreamIndex index)

onStart(String streamId, StreamInfo streamInfo)

参数变化:
参数StreamIndex替换成streamId、streamInfo

onStop(StreamIndex index)

onStop(String streamId, StreamInfo streamInfo)

参数变化:
参数StreamIndex替换成streamId、streamInfo

onRateUpdate(StreamIndex streamIndex, int videoIndex, int fps, int bitrateKbps)

onRateUpdate(String streamId, StreamInfo streamInfo, int videoIndex, int fps, int bitrateKbps)

参数变化:
参数StreamIndex替换成streamId、streamInfo

onRequestKeyFrame(StreamIndex streamIndex, int videoIndex)

onRequestKeyFrame(String streamId, StreamInfo streamInfo, int videoIndex)

参数变化:
参数StreamIndex替换成streamId、streamInfo

onActiveVideoLayer(StreamIndex streamIndex, int videoIndex, boolean active)

onActiveVideoLayer(String streamId, StreamInfo streamInfo, int videoIndex, boolean active)

参数变化:
参数StreamIndex替换成streamId、streamInfo

类型变更

房间模式-ChannelProfile

改动的数据类型

V3.58

V3.60

变更说明

ChannelProfile

CHANNEL_PROFILE_CHAT(5)
CHANNEL_PROFILE_LW_TOGETHER(7)

CHANNEL_PROFILE_CALL(19)

注重流畅性,视频缺省码率相对低,对音质要求低,流畅性要求高。

CHANNEL_PROFILE_GAME_HD(8)
CHANNEL_PROFILE_CO_HOST(9)
CHANNEL_PROFILE_KTV(11)
CHANNEL_PROFIEL_VR_CHAT(13)
CHANNEL_PROFILE_LAN_LIVE_STREAMING(15)
CHANNEL_PROFILE_LIVE_BROADCASTING(1)

CHANNEL_PROFILE_LIVE(20)

更注重画质,视频缺省码率相对高,对音质要求高。

视频帧相关

功能

V3.58

V3.60

变更说明

视频帧数据

VideoFrame

VideoFrameData

  1. 类型重命名
  2. 参数变更:
  • 参数重命名
    • getFrameType() 变更为 bufferType()
    • getTimeStampUS() 变更为 timestampUs()
    • getTextureID() 变更为 getTextureId
    • getExternalDataInfo() 变更为 getSeIData()
  • 删除参数
    • 删除 getSupplementaryInfo()
    • 删除 getColorSpace()
  • 新增参数:
    • 新增 addRef()
    • 新增 releaseRef()

本地视频帧回调配置

LocalVideoRenderPosition

LocalVideoSinkPosition

  • 类型重命名
  • 默认值变更:由 LocalVideoRenderPosition.AFTER_CAPTURE(前处理前) 变更为 LocalVideoSinkPosition.AFTER_PREPROCESS(前处理后)。

远端视频帧回调位置

RemoteVideoRenderPosition

RemoteVideoSinkPosition

类型重命名

是否将视频帧镜像

VideoRenderMirrorType

VideoSinkMirrorType

枚举重命名

构建纹理格式视频数据返回帧

GLTextureVideoFrameBuilder

/

删除,无替代

构建 CpuBuffer 的视频帧

CpuBufferVideoFrameBuilder

/

删除,无替代

合流转推事件

  • 名称替换:ByteRTCStreamMixingEvent 变更为 MixedStreamTaskEvent,和 WTN 流任务共用同一个事件枚举类。
  • 枚举值变更如下:

描述

V3.58

V3.60

请求发起任务
推流成功

STREAM_MIXING_START(1)
STREAM_MIXING_START_SUCCESS(2)

START_SUCCESS(1)

任务发起失败

STREAM_MIXING_START_FAILED(3)

START_FAILED(2)
具体失败原因参看 MixedStreamTaskErrorCode

请求更新
任务更新成功

STREAM_MIXING_UPDATE(4)
STREAM_MIXING_UPDATE_SUCCESS(5)

UPDATE_SUCCESS(3)

任务更新失败

STREAM_MIXING_UPDATE_FAILED(6)

UPDATE_FAILED(4)
具体失败原因参看 MixedStreamTaskErrorCode

请求结束任务
任务结束成功

STREAM_MIXING_STOP(7)
STREAM_MIXING_STOP_SUCCESS(8)

STOP_SUCCESS(5)

任务结束失败

STREAM_MIXING_STOP_FAILED(9)

STOP_FAILED(6)
具体失败原因参看 MixedStreamTaskErrorCode

参数错误

STREAM_MIXING_REQUEST_PARAM_ERROR(15)

调用 startPushMixedStream 或 updatePushMixedStream 时返回 RETURN_STATUS_PARAMETER_ERR = -2

任务处理超时,请检查网络状态并重试

STREAM_MIXING_UPDATE_TIMEOUT(13)
STREAM_MIXING_START_TIMEOUT(14)

调用 startPushMixedStream 或 updatePushMixedStream 时返回 TIMEOUT(1091)

合流加图片

STREAM_MIXING_MIX_IMAGE_EVENT(16)

WARNING(7)
具体失败原因参看 MixedStreamTaskErrorCode

Warning 事件

无

WARNING(7)

其他

STREAM_MIXING_FIRST_AUDIO_FRAME_BY_CLIENT_MIX(11)
STREAM_MIXING_FIRST_VIDEO_FRAME_BY_CLIENT_MIX(12)
STREAM_MIXING_CHANGE_MIX_TYPE(10)

移除

单流转推事件

  • 名称变化:由 ByteRTCStreamSinglePushEvent 变更为 SingleStreamTaskEvent。
  • 具体枚举值变化如下

描述

V3.58

V3.60

开始推流

SINGLE_STREAM_PUSH_START = 1

START_SUCCESS = 1

推流成功

SINGLE_STREAM_PUSH_SUCCESS = 2

START_SUCCESS = 1

推流失败

SINGLE_STREAM_PUSH_FAILED = 3

START_FAILED = 2

停止推流

SINGLE_STREAM_PUSH_STOP = 4

STOP_SUCCESS = 3

单流转推直播任务处理超时,请检查网络状态并重试

SINGLE_STREAM_PUSH_TIMEOUT = 5

WARNING = 5,具体错误信息参看 SingleStreamTaskErrorCode。

参数错误

SINGLE_STREAM_PUSH_PARAM_ERROR = 6

调用 startPushSingleStream 时返回 RETURN_STATUS_PARAMETER_ERR = -2。

停止推流失败

无

STOP_FAILED = 4

音视频流统计信息相关

功能

改动的数据类型

变更说明

本地音频流统计信息

LocalAudioStats

增加字段:

  • audioDeviceLoopDelay:音频采集播放延时
  • encodeFrameRate:音频编码帧率

远端音频流统计信息

RemoteAudioStats

增加字段:
decodeFrameRate:音频解码帧率

远端视频流统计信息

RemoteVideoStats

增加字段:

  • capToRenderDelay:从发送端开始采集到接收端渲染完成的延时
  • avSyncDiffMs:音画同步差异
  • codecElapsePerFrame:视频解码平均耗时

其他

功能

改动的数据类型

变更说明

截图错误码

SnapshotErrorCode

新增类

音频场景类型

AudioScenarioType

枚举值增加:
EDUCATION(4,教育场景。适用于以人声教学内容为主的高音质场景。)
AICLIENT(5,AI 对话场景。适用于真人与 AI 智能体互动的场景。)

混响特效类型

VoiceReverbType

枚举值增加:
下面四种混响效果:
增强原声(VOICE_REVERB_ENHANCE_ORIGINAL)、
浴室(VOICE_REVERB_BATHROOM)、
自然(VOICE_REVERB_NATURAL)、
楼道(VOICE_REVERB_HALLWAY)

登录错误码

LoginErrorCode

错误码增加:
增加登录错误码-1004,代表当前为受限模式
在受限模式下使用RTS的能力具有以下限制:
支持房间内广播和点对点;
发送消息速率不超过30KB/秒;
发送消息频率不超过60包/秒;
发送消息包长度不超过1KB;
受限/非受限模式的切换,需要在火山控制台设置。

单流转推任务错误码

SingleStreamTaskErrorCode

枚举值增加:
增加如下错误码:
服务端检测任务参数不合法(1093、INVALID_PARAM_BY_SERVER )
转推任务在目标房间的用户ID被踢出目标房间(1094、REMOTE_KICKED)
转推任务加入目标房间失败(1095、JOIN_DEST_ROOM_FAIED)
转推任务在源房间拉流超时(1096、RECEIVE_SRC_STREAM_TIMEOUT)
音视频编码转推任务不支持(1097、NOT_SURPORT_CODEC)

单流转推配置目标房间信息

DestInfo

新增类

单流转推类型

SingleStreamPushType

新增类

单流转推直播配置参数

PushSingleStreamParam

成员增加:
单流转推直播配置参数中增加:单流转推配置目标房间信息列表(destInfos)、转推类型(pushType)二个成员

镜像类型枚举

MirrorType

枚举值增加:
本地预览时无镜像效果,仅编码传输时有镜像效果(2、kMirrorTypeEncoder)

发布状态变化原因

PublishStateChangeReason

新增类

错误码变更

回调告警 - WarningCode

V3.58

V3.60

WARNING_CODE_OLD_ROOM_BEEN_REPLACED = -2016
已存在相同 roomId 的房间,新创建的房间实例已替换旧房间实例

移除:
使用相同 roomId 再次创建房间时,将返回上次创建的房间实例,不再触发此错误码。

WTN 流错误码(原公共流)

  • 错误码名称变更:PublicStreamErrorCode 变更为 MixedStreamTaskErrorCode,和合流转推任务共用同一个枚举类。
  • 具体错误码的变更详情如下:

描述

V3.58

V3.60

成功

ERROR_CODE_SUCCESS = 0

OK = 0

服务端参数检验失败

ERROR_CODE_PUSH_PARAM_ERROR = 1191

删除,不会回调此类错误。

服务端内部错误

ERROR_CODE_PUSH_STATE_ERROR = 1192

删除,不会回调此类错误。

服务端未知错误

ERROR_CODE_PUSH_INTERNAL_ERROR = 1193

删除,不会回调此类错误。

任务失败

ERROR_CODE_PUSH_ERROR = 1195

PUSH_WTN_FAILED = 1105

任务超时

ERROR_CODE_PUSH_TIMEOUT = 1196

TIMEOUT = 1091

流订阅超时

ERROR_CODE_PULL_NO_PUSH_STREAM = 1300

WTNSubscribeStateChangeReason.UNSUBSCRIBE(1300),通过 onWTNVideoSubscribeStateChanged 或onWTNAudioSubscribeStateChanged 返回。

合流转推错误码

  • 错误码名称变更:ByteRTCTranscoderErrorCode 变更为 MixedStreamTaskErrorCode,和 WTN 流任务共用同一个枚举类。
  • 具体错误码的变更详情如下:

描述

V3.58

V3.60

推流成功

TRANSCODER_ERROR_OK = 0

OK = 0

未定义的合流错误

TRANSCODER_ERROR_BASE = 1090

无,该错误码未启用。

客户端 SDK 检测到无效推流参数

TRANSCODER_ERROR_INVALID_PARAM = 1091

调用 startPushMixedStream 或 updatePushMixedStream 时返回 RETURN_STATUS_PARAMETER_ERR = -2。

状态错误,需要在状态机正常状态下发起操作

TRANSCODER_ERROR_INVALID_STATE = 1092

INVALID_STATE_BY_SERVER = 1094

无效操作

TRANSCODER_ERROR_INVALID_OPERATOR = 1093

INVALID_STATE_BY_SERVER = 1094

转推直播任务处理超时,请检查网络状态并重试

TRANSCODER_ERROR_TIMEOUT = 1094

TIMEOUT = 1091

服务端检测到错误的推流参数

TRANSCODER_ERROR_INVALID_PARAM_BY_SERVER = 1095

INVALID_PARAM_BY_SERVER = 1092

对流的订阅超时

TRANSCODER_ERROR_SUB_TIMEOUT_BY_SERVER = 1096

SUB_TIMEOUT_BY_SERVER = 1093

合流服务端内部错误

TRANSCODER_ERROR_INVALID_STATE_BY_SERVER = 1097

INVALID_STATE_BY_SERVER = 1094

合流服务端推 CDN 失败

TRANSCODER_ERROR_AUTHENTICATION_BY_CDN = 1098

AUTHENTICATION_BY_CDN = 1095

服务端接收信令超时,请检查网络状态并重试。

TRANSCODER_ERROR_TIMEOUT_BY_SIGNALING = 1099

SIGNAL_REQUEST_TIMEOUT = 1097

图片合流失败

TRANSCODER_ERROR_MIX_IMAGE_FAIL = 1100

MIX_IMAGE_FAIL = 1098

服务端未知错误

TRANSCODER_ERROR_UNKNOW_ERROR_BY_SERVER = 1101

UNKNOWN_BY_SERVER = 1096

单流转推错误码

  • 错误码替换:由 StreamMixingErrorCode 替换为 SingleStreamTaskErrorCode。
  • 具体错误码的变更和对应详情如下:

描述

V3.58

V3.60

推流成功

TRANSCODER_ERROR_OK = 0

OK = 0

未定义的合流错误

TRANSCODER_ERROR_BASE = 1090

无,该错误码未启用。

客户端 SDK 检测到无效推流参数

TRANSCODER_ERROR_INVALID_PARAM = 1091

调用 startPushSingleStream 时返回 RETURN_STATUS_PARAMETER_ERR = -2。

状态错误,需要在状态机正常状态下发起操作

TRANSCODER_ERROR_INVALID_STATE = 1092

无,单流任务不会触发该错误码。

无效操作

TRANSCODER_ERROR_INVALID_OPERATOR = 1093

无,单流任务不会触发该错误码。

转推直播任务处理超时,请检查网络状态并重试

TRANSCODER_ERROR_TIMEOUT = 1094

无,单流任务不会触发该错误码。

服务端检测到错误的推流参数

TRANSCODER_ERROR_INVALID_PARAM_BY_SERVER = 1095

无,单流任务不会触发该错误码。

对流的订阅超时

TRANSCODER_ERROR_SUB_TIMEOUT_BY_SERVER = 1096

无,单流任务不会触发该错误码。

合流服务端内部错误

TRANSCODER_ERROR_INVALID_STATE_BY_SERVER = 1097

无,单流任务不会触发该错误码。

合流服务端推 CDN 失败

TRANSCODER_ERROR_AUTHENTICATION_BY_CDN = 1098

无,单流任务不会触发该错误码。

服务端接收信令超时,请检查网络状态并重试

TRANSCODER_ERROR_TIMEOUT_BY_SIGNALING = 1099

SIGNAL_REQUEST_TIMEOUT = 1092

图片合流失败

TRANSCODER_ERROR_MIX_IMAGE_FAIL = 1100

无,单流任务不会触发该错误码。

服务端未知错误

TRANSCODER_ERROR_UNKNOW_ERROR_BY_SERVER = 1101

UNKNOWN_BY_SERVER = 1091

其他错误码

删除了部分已废弃多个版本的错误码

描述

错误码

将自身可见性设置为 false 后,再尝试发布流会触发此警告。

WARNING_CODE_SUBSCRIBE_STREAM_FORBIDEN = -2010

自动订阅模式未关闭时,尝试开启手动订阅模式会触发此警告。

WARNING_CODE_GET_ROOM_FAILED = -2000

新增接口

接口

功能说明

setEarMonitorMode

耳返支持复用自定义处理后的本地采集音频。

如果打开了硬件耳返,那么该接口的 filter 参数是无效的。

setStreamExtraInfo

设置当前推流的流附加信息

getCallId

获取通话 ID,每次进房后拿到的id都是全新的

setWTNStreamEventHandler

设置 WTN 流回调接口

takeLocalSnapshotToFile

截取本地的视频流画面,生成 JPG 文件,并保存到本地指定路径

takeRemoteSnapshotToFile

截取远端的视频流画面,生成 JPG 文件,并保存到本地指定路径

onLocalSnapshotTakenToFile

截取本地的视频流画面回调

onRemoteSnapshotTakenToFile

截取远端的视频流画面回调

onRoomEvent

房间事件回调,并新增枚举 RoomEventInfo

onRemoteEncodedAudioFrame(String streamId, StreamInfo streamInfo, EncodedAudioFrameData audioStream)

调用 registerRemoteEncodedAudioFrameObserver 后,SDK 收到远端音频帧信息时,回调该事件

onRoomStreamExtraInfoUpdate(String streamId, StreamInfo streamInfo, String extraInfo)

设置的流附加信息的回调

createGameRTCRoom

创建游戏房间

GameRTCRoom.destroy

销毁游戏房间

GameRTCRoom.setRTCRoomEventHandler

设置 GameRTCRoom 对象的事件句柄,监听此对象对应的回调事件。

GameRTCRoom.joinRoom

加入游戏房间

GameRTCRoom.leaveRoom

离开游戏房间

GameRTCRoom.getRangeAudio

返回 IRangeAudioIRangeAudio 实例

GameRTCRoom.updateToken

更新 Token

GameRTCRoom.enableMicrophone

开启或关闭麦克风

GameRTCRoom.enableSpeakerphone

开启或关闭扬声器

GameRTCRoom.enableAudioSend

发送或取消发送音频流

GameRTCRoom.enableAudioReceive

是否接收指定用户的音频流

GameRTCRoom.setRemoteRoomAudioPlaybackVolume

调节某个房间内所有远端用户的音频播放音量。

删除/废弃接口

删除了已废弃或不推荐使用的方法,具体如下:

变更类型

已删除/废弃接口

替代接口

废弃

setLocalVideoSink(StreamIndex index, IVideoSink videoSink, @IVideoSink.PixelFormat int requiredFormat)

setLocalVideoSink(IVideoSink videoSink, LocalVideoSinkConfig config)

废弃

setRemoteVideoSink(RemoteStreamKey streamKey, IVideoSink videoSink, @IVideoSink.PixelFormat int requiredFormat)

setRemoteVideoSink(String streamId, IVideoSink videoSink, @IVideoSink.PixelFormat int requiredFormat)

删除

createRTCVideo(Context context, String appId, IRTCVideoEventHandler handler, Object eglContext, JSONObject parameters)

createRTCEngine(EngineConfig config, IRTCEngineEventHandler handler)

删除

getErrorDescription

无替代接口

删除

  • startASR
  • stopASR

无替代接口
如果你需要使用 ASR 功能,可以通过实时字幕功能相关接口实现:startSubtitle、stopSubtitle

删除

  • onSuccessonMessage(String message)
  • onError(int errorCode, String errorMessage)

如果你需要使用 ASR 功能,可以通过实时字幕功能相关接口实现:onSubtitleStateChanged、onSubtitleMessageReceived

删除

onGLEnvInitiated

无替代接口
你需要根据视频帧的回调自行控制初始化操作。

删除

onGLEnvRelease

无替代接口
你需要根据视频帧的回调自行控制销毁操作。

删除

subscribeUserStream(String uid, StreamIndex streamType, SubscribeMediaType mediaType, SubscribeVideoConfig subscribeVideoConfig);

subscribeStreamVideo(String streamId, boolean subscribe)
subscribeStreamAudio(String streamId, boolean subscribe)

删除

setDeviceId(String deviceId)

无替代接口

删除

replaceBackground(BackgroundMode mode, DivideModel divideModel)

无替代接口

删除

setAudioPlaybackDevice(AudioPlaybackDevice audioPlaybackDevice)

setDefaultAudioRoute(AudioRoute route)

删除

pushExternalVideoFrame(VideoFrame frame, boolean isDirectEncode)

无替代接口

删除

  1. startLiveTranscoding(String taskId, LiveTranscoding liveTranscode, ILiveTranscodingObserver observer)
  2. stopLiveTranscoding(String taskId)
  3. updateLiveTranscoding(String taskId, LiveTranscoding transcoding)
  1. startPushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig)
  2. stopPushMixedStream(String taskId, MixedStreamPushTargetType targetType)
  3. updatePushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig)

删除

setOnDestroyCompletedCallback(Runnable callback)

无替代接口

删除

  1. checkVideoEffectLicense(Context context , String licenseFile)
  2. setVideoEffectAlgoModelPath(String modelPath)
  3. enableVideoEffect(boolean enable)
  4. setVideoEffectNodes(ListeffectNodes)
  5. updateVideoEffectNode(String effectNode, String key, float value)
  6. setBackgroundSticker(String modelPath, VirtualBackgroundSource source)
  7. setVideoEffectColorFilter(String resFile)
  8. setVideoEffectColorFilterIntensity(float intensity)
  9. registerFaceDetectionObserver(IFaceDetectionObserver observer, int interval)
  1. IVideoEffect.initCVResource(String licenseFile, String algoModelDir)
  2. IVideoEffect.initCVResource(String licenseFile, String algoModelDir)
  3. IVideoEffect.enableVideoEffect()
  4. IVideoEffect.setEffectNodes(ListeffectNodes)
  5. IVideoEffect.updateEffectNode(String effectNode, String key, float value)
  6. IVideoEffect.enableVirtualBackground(String backgroundStickerRes, VirtualBackgroundSource source)
  7. IVideoEffect.setColorFilter(String filterRes)
  8. IVideoEffect.setColorFilterIntensity(float intensity)
  9. IVideoEffect.enableFaceDetection(IFaceDetectionObserver observer, int interval_ms, String face_model_path)

删除

IAudioMixingManager

IMediaPlayer
IAudioEffectPlayer

删除

muteAudioPlayback(MuteState muteState)

setPlaybackVolume(int volume)

删除

  1. ISpatialAudio.updatePosition(Position pos)
  2. ISpatialAudio.updateSelfOrientation(HumanOrientation orientation)
  3. ISpatialAudio.updateListenerPosition(Position pos)
  4. ISpatialAudio.updateListenerOrientation(HumanOrientation orientation)
  1. ISpatialAudio.updateSelfPosition(PositionInfo positionInfo)
  2. ISpatialAudio.updateSelfPosition(PositionInfo positionInfo)
  3. ISpatialAudio.updateRemotePosition(String uid,PositionInfo positionInfo)
  4. ISpatialAudio.updateRemotePosition(String uid,PositionInfo positionInfo)

删除

IRTCRoomEventHandler.onRoomError(int err)

  • IRTCRoomEventHandler.onRoomStateChanged(String roomId, String uid, int state, String extraInfo)
  • IRTCRoomEventHandler.onStreamStateChanged(String roomId, String uid, int state, String extraInfo)

删除

  1. onUserMuteAudio(String roomId, String uid, MuteState muteState)
  2. onUserMuteVideo(String roomId, String uid, MuteState muteState)
  3. onAudioPlaybackDeviceChanged(AudioPlaybackDevice device)
  4. onMediaDeviceStateChanged(String deviceID, int deviceType, int deviceState, int deviceError)
  5. onMediaDeviceWarning(String deviceID, int deviceType, int deviceWarning)
  6. onHttpProxyState(int state)
  7. onSocks5ProxyState(int state, String cmd, String proxyAddress, String localAddress, String remoteAddress)
  8. onAudioMixingStateChanged(int mixId, AudioMixingState state, AudioMixingError error)
  1. onUserPublishStreamAudio(String streamId, StreamInfo streamInfo, boolean isPublish)
  2. onUserPublishStreamVideo(String streamId, StreamInfo streamInfo, boolean isPublish)
  3. onAudioRouteChanged(AudioRoute route)
  4. onAudioDeviceStateChanged(String deviceID, AudioDeviceType deviceType, int deviceState, int deviceError)
    onVideoDeviceStateChanged(String deviceID, VideoDeviceType deviceType, int deviceState, int deviceError)
  5. onAudioDeviceWarning(String deviceID, AudioDeviceType deviceType, int deviceWarning)
    onVideoDeviceWarning(String deviceID, VideoDeviceType deviceType, int deviceWarning)
  6. onLocalProxyStateChanged(LocalProxyType localProxyType, LocalProxyState localProxyState, LocalProxyError localProxyError)
  7. onLocalProxyStateChanged(LocalProxyType localProxyType, LocalProxyState localProxyState, LocalProxyError localProxyError)
  8. IMediaPlayerEventHandler.onMediaPlayerStateChanged(int playerId, PlayerState state, PlayerError error)
    IAudioEffectPlayerEventHandler.onAudioEffectPlayerStateChanged(int effectId, PlayerState state, PlayerError error)

删除

  1. ILiveTranscodingObserver 接口及其定义的全部方法
  2. LiveTranscoding 类及其定义的全部变量、常量、方法
  1. IMixedStreamObserver 接口及其定义的全部方法
  2. MixedStreamConfig 类及其定义的全部变量、常量、方法

删除

  • RTCEngine(原RTCVideo)类定义的以下方法:
    • setScreenAudioSourceType(AudioSourceType sourceType)
    • pushScreenVideoFrame(VideoFrame videoFrame)
  • IRTCRoomEventHandler 类定义的以下回调:
    • onExternalScreenFrameUpdate(FrameUpdateInfo info)

无替代接口,此版本屏幕流不支持设置外部源数据

3.58

类型变更

变更详情

功能模块

改动的数据类型

说明

新增枚举值

音效

PlayerState

3.57

重要说明

  1. 自 3.57 版本起,RTC SDK 支持动态加载除主库外的 .so 文件,SDK 离线包的结构发生变化,请关注手动集成 SDK 指南的更新。
    SDK 在 EngineConfig 类中提供 nativeLoadPath 属性,支持在 App 运行时从指定的私有目录动态加载所需的 .so 文件,从而减小 App 的安装包体积。如需动态加载 .so 文件,参看按需集成插件以缩小应用体积。

  2. 该版本提供 SAMI 音频技术动态库插件、VP8 编解码插件、AAC 软件编解码插件、APM 稳定性监控插件,详情参看Android。

  3. 该版本对所有不规范的 API 命名进行了统一修复,提升代码规范度和易用性。以下仅为变更示例,请至类型详情页查看所用类型的具体改动。

    变更对象

    变更详情

    旧版示例

    新版示例

    枚举值

    • 删除前缀/后缀
    • 改为全部大写,并以下划线分割

    以 SubscribeMediaType 为例:

    • RTC_SUBSCRIBE_MEDIA_TYPE_NONE(0),
    • RTC_SUBSCRIBE_MEDIA_TYPE_AUDIO_ONLY(1),
    • RTC_SUBSCRIBE_MEDIA_TYPE_VIDEO_ONLY(2),
    • RTC_SUBSCRIBE_MEDIA_TYPE_AUDIO_AND_VIDEO(3);

    以 SubscribeMediaType 为例:

    • NONE(0),
    • AUDIO_ONLY(1),
    • VIDEO_ONLY(2),
    • AUDIO_AND_VIDEO(3);

    结构体成员

    改为首字母小写,驼峰标识

    以 AudioPropertiesConfig 为例:

    • interval;
    • enable_spectrum;
    • enable_vad;
    • local_main_report_mode;
    • audio_report_mode;
    • smooth;

    以 AudioPropertiesConfig 为例:

    • interval;
    • enableSpectrum;
    • enableVad;
    • localMainReportMode;
    • audioReportMode;
    • smooth;

API 变更

变更详情

功能模块

废弃的类/接口

替代的类/接口

说明

删除

主调类

RTCEngine

RTCVideo

删除

引擎管理

RTCVideo.setEnv

setRuntimeParameters

咨询技术支持获取详细信息。

使用范围拓展

视频处理

setVideoDecoderConfig

setVideoDecoderConfig

旧版接口仅支持在手动订阅时使用,新增支持在自动订阅时使用。

废弃

视频管理

public abstract int updateRemoteStreamVideoCanvas(RemoteStreamKey streamKey, int renderMode, int backgroundColor);

public abstract int updateRemoteStreamVideoCanvas(RemoteStreamKey streamKey, RemoteVideoRenderConfig remoteVideoRenderConfig);

新接口通过 remoteVideoRenderConfig 参数统一设置渲染模式和背景颜色,另外新增 renderRotation 参数,支持设置视频帧旋转角度。

删除

音频处理

IAudioProcessor

IAudioFrameProcessor

IAudioProcessor 已在 3.42 中废弃。此次进行了删除。

参数数据结构新增成员变量

音频管理

enableAudioPropertiesReport

enableAudioPropertiesReport

新增参数 enableVoicePitch 控制是否回调本地用户的人声基频。

回调变更

变更详情

功能模块

废弃的类/接口

替代的类/接口

说明

删除

主回调类

IRTCEngineEventHandler

IRTCVideoEventHandler

参数变更

消息

virtual void onLogout()

virtual void onLogout(int reason)

在 onLogout 回调上新增 reason 参数,区分用户主动/被动登出。具体参数类型参看 LogoutReason。

参数数据结构新增成员变量

音频管理

onLocalAudioPropertiesReport

onLocalAudioPropertiesReport

新增参数voicePitch返回本地用户的人声基频。

类型变更

变更详情

功能模块

改动的数据类型

说明

成员变量新增

字幕翻译服务

SubtitleMessage

在字幕内容回调 onSubtitleMessageReceived 的参数 SubtitleMessage 中新增成员变量 language 和 mode,可用于同时收到字幕原文和字幕译文。

成员变量变更

CDN 推流

MixedStreamLayoutRegionConfig

转推直播单个用户画面由设置相对于整体画面的归一化比例变更为可设置像素绝对值。

3.54

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

方法变更

变更详情

功能模块

变动前方法

变动后方法

说明

将混音相关的类和接口按音效和音乐进行拆分,具体变动情况请参看混音相关的新旧接口对应表

混音

  • getAudioMixingManager
  • IAudioMixingManager

一般来说,对于短时间的音效(比如小于 20s),可以使用音效类;对于较长的音频或 PCM 数据,可以使用音乐类。

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

接口分类

接口用途

废弃类/接口

新类/接口(音效)

新类/接口(音乐)

备注

获取实例

获取播放器实例

getAudioMixingManager

getAudioEffectPlayer

getMediaPlayer

混音类

IAudioMixingManager

IAudioEffectPlayer

IMediaPlayer

混音主调接口

将音效文件加载至内存

  • 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

调整音调

setAudioMixingPitch

NA

setAudioPitch

设置声道模式

setAudioMixingDualMonoMode

NA

setAudioDualMonoMode

获取/设置音轨数

  • getAudioTrackCount
  • selectAudioTrack

NA

  • getAudioTrackCount
  • selectAudioTrack

Index 取值修改为从 0 开始

设置播放速度

setAudioMixingPlaybackSpeed

NA

setPlaybackSpeed

设置播放进度回调间隔

setAudioMixingProgressInterval

NA

setProgressInterval

设置响度

setAudioMixingLoudness

NA

setLoudness

播放外部音频源

  • 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);startLiveTranscoding

public 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
拆分为:

  • onPublicStreamSEIMessageReceived:接收客户端插入的 SEI 消息。
  • onPublicStreamDataMessageReceived:接收服务端插入的 SEI 消息和其他数据信息,例如音量信息。

类型变更

变更详情

类型

变更前

变更后

说明

重命名

转推直播一级结构体

LiveTranscoding

MixedStreamConfig

结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看

转推直播 Observer

ILiveTranscodingObserver

IMixedStreamObserver

升级该版本你需要 import com.ss.bytertc.engine.video.VideoFrame 类替代 org.webrtc.VideoFrame 类

转推直播二级结构体

VideoConfig

MixedStreamVideoConfig

结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看

AudioConfig

MixedStreamAudioConfig

SpatialConfig

MixedStreamSpatialConfig

ClientMixParam

MixedStreamClientMixConfig

Region

MixedStreamLayoutRegionConfig

Layout

MixedStreamLayoutConfig

转推直播相关枚举类型

TranscoderClientMixVideoFormat

MixedStreamClientMixVideoFormat

各枚举类中的枚举值名称均有变更,请至对应的类型详情中查看

TranscoderContentControlType

MixedStreamMediaType

TranscoderRenderMode

MixedStreamRenderMode

TranscoderLayoutRegionType

MixedStreamLayoutRegionType

AACProfile

MixedStreamAudioProfile

VideoCodecType

MixedStreamVideoCodecType

AudioCodecType

MixedStreamAudioCodecType

ByteRTCStreamMixingType

MixedStreamType

错误码变更

变更详情

错误码

说明

枚举值变更

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,需手动添加该依赖库,具体添加方式参看添加依赖。

方法变更

变更详情

功能模块

变动前方法

变动后方法

备注

返回值变更

房间管理

joinRoom 返回值含义如下:

  • -1:无效的参数。
  • -2:已经在房间内。

joinRoom 返回值含义如下:

  • -1:调用失败。
  • -2:无效的参数。
  • -4:已经在房间内。

返回值为 0 代表成功,不变。

网络管理

stopEchoTest 返回 -1 代表失败,未开启回路检测。

stopEchoTest 返回 -3 代表失败,未开启回路检测

引擎管理

setBusinessId 返回值含义如下:

  • < 0: 失败,具体原因参照 BusinessCheckCode。
  • -6001: 用户已经在房间中。
  • -6002: 输入非法。

setBusinessId 返回值含义如下:

  • < 0: 失败,具体原因参照 ReturnStatus
  • -2: 输入非法。

拆分

视频管理

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: 当前为外部源时,调用本接口将关闭外部采集

优化屏幕共享接口的行为

所属类型变更、名称变更、参数变更

音视频处理

  • 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 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。

名称变更

引擎管理

getSdkVersion

getSDKVersion

修正大小写。

名称和参数变更

屏幕分享

public abstract boolean pushScreenFrame(VideoFrame videoFrame);

public abstract int pushScreenVideoFrame(VideoFrame videoFrame);

  • 返回参数由 boolean 变更为 int。
  • 方法名称由 pushScreenFrame 变更为 pushScreenVideoFrame。

回调变更

变更详情

功能模块

变动前方法

变动后方法

备注

行为变更

自定义流处理

onProcessRecordAudioFrame

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

参数变更

CDN 推流

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

onMixingAudioFrame

新增参数 timeStampMs

消息

public void onPublicStreamSEIMessageReceived(String publicStreamId, ByteBuffer message) {}

public void onPublicStreamSEIMessageReceived(String publicStreamId, ByteBuffer message, SEIMessageSourceType sourceType) {}

新增参数 sourceType

名称变更

自定义流处理

OnStart

onStart

大驼峰变更为小驼峰

OnStop

onStop

OnRateUpdate

onRateUpdate

OnRequestKeyFrame

onRequestKeyFrame

OnRemoteEncodedVideoFrame

onRemoteEncodedVideoFrame

CDN 推流

onDataFrame

onMixingDataFrame

删除回调类

范围语音

IRangeAudioObserver 类和相关的接口

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

类型变更

变更详情

数据类型

备注

取值范围拓展

Livetranscoding.Region.size 中,width 和 height

取值范围由 (0.0, 1.0] 拓展为 [0.0, 1.0]。

枚举值变化

AudioRoute

AUDIO_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.42

3.43

Android

../IRTCRoom.java

../RTCRoom.java

../RTCEngine.java

../RTCVideo.java

../IRTCEngineEventHandler.java

../IRTCVideoEventHandler.java

方法变更

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

变更详情

功能模块

变动前方法

变动后方法

备注

基础类名变更

所有模块

public abstract class RTCEngine

public 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 IRTCEngineEventHandler

public 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 IRTCRoom

public 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 和 RemoteStreamStats

txQuality 和 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 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 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)

最近更新时间:2026.10.15 11:32:27
这个页面对您有帮助吗?
有用
有用
无用
无用