如果你希望从此前版本的 Android 客户端 SDK 升级到最新的客户端 SDK,请在工程文件中,替换最新的客户端 SDK 文件,并参考本文完成 API,回调,参数类型等的替换。
升级过程中,你可能需要参考历史版本文档归档。
本文同时记录升级时需要适配的变更和新版本提供的新增能力。标题中标注“按需使用”的内容,不使用对应能力时无需修改现有代码。SDK 回调或返回的枚举新增取值时,建议检查现有的 switch、白名单和兜底逻辑是否能够处理新值。
如果你的业务使用单流转推,并且会穷举处理 SingleStreamTaskErrorCode,升级后需要补充以下错误码;其他业务无需修改。
SingleStreamTaskErrorCode 新增以下枚举值:
| 枚举值 | 数值 | 说明 |
|---|---|---|
ERROR_PUSH_TO_CDN | 1098 | 转推到 CDN 失败。 |
ERROR_TASK_COUNT_OVER_LIMIT | 1099 | 超过单流转推任务数限制,单个主播同时运行的转推任务不能超过 20 个。 |
本版本以下内容均为新增能力。不使用直播模式切换、自定义视频前处理范围、关键帧间隔或 SEI 发送能力时,无需修改现有代码。
类型名 | 变更说明 |
|---|---|
LiveMode(新增枚举) | 新增枚举,定义直播模式,包含取值:
|
ProcessorActionDomain(新增枚举) | 新增枚举,定义视频前处理作用范围,包含取值:
|
RTCRoomConfig | 新增 |
VideoPreprocessorConfig | 新增 |
VideoEncoderConfig | 新增 |
接口 | 说明 |
|---|---|
| 设置房间直播模式。加入房间后调用,仅当 |
| 以 Key-Value JSON 格式通过视频帧发送 SEI 数据。调用前需将房间模式设为 |
仅 AI 音视频互动方案中使用 License 计费的业务需要关注该回调,并建议按下表说明处理。其他业务无需适配。
回调 | 说明 |
|---|---|
onLicenseQuotaExceeded | AI 音视频互动方案使用 License 计费时,License 配额用尽后,SDK 会触发此回调并中止服务。收到回调后,请及时续费并离开房间、销毁 SDK;续费成功后,再重新加入房间。 |
libbytertc_license_extension.so。仅使用 CloudRenderLAN 场景下的 License 功能时需要集成;其他业务无需添加。libbytenn.so 新增依赖:libc++_shared.so。libc++_shared.so 动态库。
说明
请将 <您的 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
变更类型 | V3.58 | V3.60 |
|---|---|---|
头文件名称变更 | ../RTCVideo.java | ../RTCEngine.java |
../IRTCVideoEventHandler.java | ../IRTCEngineEventHandler.java | |
基础类名变更(所有模块) | public abstract class RTCVideo | public abstract class RTCEngine |
新增加头文件 | 无 | ../RTSRoom.java |
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
创建引擎对象 | createRTCVideo(Context context, IRTCVideoEventHandler handler, EngineConfig config) | createRTCEngine(EngineConfig config, IRTCEngineEventHandler handler) |
从 |
销毁引擎 | destroyRTCVideo | destroyRTCEngine | 方法名称变更 |
引擎事件回调 | IRTCVideoEventHandler | IRTCEngineEventHandler | 方法名称变更 |
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
加入房间 | |||
创建房间失败回调 | onCreateRoomStateChanged(String roomId, int errorCode) | onRoomStateChanged(String roomId, String uid,int state, String extraInfo) | 接口替换: |
创建房间实例 | createRTCRoom(String roomId) | createRTCRoom(String roomId) | 行为变更: |
远端可见用户加入房间,或房内不可见用户切换为可见的回调 | onUserJoined(UserInfo userInfo,int elapsed) | onUserJoined(UserInfo userInfo) | 参数变更:删除无效参数 |
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
开启/关闭推送多路视频流 | enableSimulcastMode(boolean enabled) | setLocalSimulcastMode(VideoSimulcastMode mode) |
|
设置期望订阅的远端视频流的参数 | setRemoteVideoConfig( | setRemoteSimulcastStreamType(String streamId, SimulcastStreamType streamType) |
|
设置或更新 Simulcast 流的编码参数 | setVideoEncoderConfig(VideoEncoderConfig[] channelSolutions) | setLocalSimulcastMode(VideoSimulcastMode mode, VideoEncoderConfig[] streamConfig) | 接口替换 |
| setVideoEncoderConfig(VideoEncoderConfig maxSolution) | setVideoEncoderConfig(VideoEncoderConfig encoderConfig) |
|
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
| |||
API:
|
|
|
|
回调:
|
|
|
|
回调: | onStreamStateChanged( |
|
|
| |||
|
|
|
|
音视频流订阅状态改变回调 | onStreamSubscribed(int stateCode,String userId,SubscribeConfig info) |
|
|
音视频流状态触发警告或错误时回调 | onStreamStateChanged( |
|
|
| |||
|
|
|
|
暂停接收来自远端的媒体流 | pauseAllSubscribedStream(PauseResumeControlMediaType mediaType) |
|
|
恢复接收来自远端的媒体流 | resumeAllSubscribedStream(PauseResumeControlMediaType mediaType) |
|
|
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
采集屏幕视频 | startScreenCapture(ScreenMediaType type, Intent mediaProjectionResultData) | startScreenCapture(ScreenMediaType type, Intent mediaProjectionResultData) | 行为变更: |
设置屏幕流编码参数 | setScreenVideoEncoderConfig(ScreenVideoEncoderConfig screenSolution) | setVideoEncoderConfig(VideoEncoderConfig encoderConfig) | 接口替换: |
发布/停止发布本地屏幕音视频流 | publishScreen(MediaStreamType type) | publishStreamVideo(boolean publish) | 接口替换: |
订阅/取消订阅远端屏幕音视频流 | subscribeScreen(String uid,MediaStreamType type) | subscribeStreamVideo(String streamId, boolean subscribe) | 接口替换: |
远端用户发布或者取消发布屏幕流回调 | onUserPublishScreen( String uid,MediaStreamType type) | onUserPublishStreamVideo(String streamId, StreamInfo streamInfo, boolean isPublish) | 接口替换: |
屏幕共享流的视频首帧发送状态回调 | onScreenVideoFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state) | onVideoFrameSendStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFrameSendState state) | 接口替换: |
屏幕共享流视频首帧播放状态回调 | onScreenVideoFramePlayStateChanged(String roomId,RtcUser user,FirstFramePlayState state) | onVideoFramePlayStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFramePlayState state) | 接口替换: |
RTC包含RTS能力,当前版本将RTS相关接口进一步进行拆分。如果仅使用RTS的相关能力则调用createRTSRoom创建RTSRoom实例,使用RTSRoomEventHandler回调。如果既使用音视频能力又使用RTS能力则从RTCEngine中调用createRTCRoom创建RTCRoom实例,使用RTCRoomEventHandler回调。
功能 | v3.58 | v3.60 | 变更说明 |
|---|---|---|---|
创建RTS房间 | createRTCRoom(String roomId) | createRTSRoom(String roomId) |
|
设置RTS相关回调 | setRTCRoomEventHandler(IRTCRoomEventHandler rtcRoomEventHandler); | setRTSRoomEventHandler(IRTSRoomEventHandler rtcRoomEventHandler) |
|
收到房间外用户发来的文本消息时,会收到此回调 | onUserMessageReceivedOutsideRoom(String uid,String message) | onUserMessageReceivedOutsideRoom(long msgid, String uid, String message) |
|
收到房间外用户 发来的二进制消息时,会收到此回调 | onUserBinaryMessageReceivedOutsideRoom(String uid, ByteBuffer message) | onUserBinaryMessageReceivedOutsideRoom(long msgid, String uid, ByteBuffer message) |
|
接收到房间内广播消息的回调 | onRoomMessageReceived(String uid,String message) | onRoomMessageReceived(long msgid, String uid, String message) |
|
收到房间内广播二进制消息的回调 | onRoomBinaryMessageReceived(String uid,ByteBuffer message) | onRoomBinaryMessageReceived(long msgid, String uid, ByteBuffer message) |
|
收到来自房间中其他用户发来的点对点文本消息时,会收到此回调 | onUserMessageReceived(String uid,String message) | onUserMessageReceived(long msgid, String uid, String message) |
|
收到来自房间中其他用户发来的点对点二进制消息时,会收到此回调 | onUserBinaryMessageReceived( String uid,ByteBuffer message) | onUserBinaryMessageReceived(long msgid, String uid, ByteBuffer message) |
|
IWTNStream 类中。IWTNStreamEventHandler 回调类中。你需要先调用 setWTNStreamEventHandler 设置回调手柄。功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
发布 WTN 流 | startPushPublicStream( | startPushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig) |
|
更新 WTN 流 | updatePublicStreamParam( | updatePushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig) |
|
停止发布 WTN 流 | stopPushPublicStream(String publicStreamId) | stopPushMixedStream(String taskId, MixedStreamPushTargetType targetType) |
|
订阅/取消订阅 WTN 流 |
|
|
|
绑定 WTN 流画布 | setPublicStreamVideoCanvas( | setWTNRemoteVideoCanvas(String streamId, VideoCanvas canvas) |
|
为 WTN 流指定外部渲染器 | setPublicStreamVideoSink( | setWTNRemoteVideoSink(String streamId, IVideoSink videoSink, RemoteVideoSinkConfig config) |
|
设置 WTN 流播放音量 | setPublicStreamAudioPlaybackVolume( | setWTNRemoteAudioPlaybackVolume(String streamId, int volume) |
|
WTN 流发布结果回调 | onPushPublicStreamResult( | onMixedStreamEvent(MixedStreamTaskInfo info, MixedStreamTaskEvent event, MixedStreamTaskErrorCode error) |
|
播放 WTN 流任务回调 | onPlayPublicStreamResult( |
|
|
接收 WTN 流中的 SEI 回调 | onPublicStreamSEIMessageReceived( | onWTNSEIMessageReceived(String streamId, int channelId, ByteBuffer message) |
|
接收 WTN 流中的 Data Message 回调 | onPublicStreamDataMessageReceived( | onWTNDataMessageReceived(String streamId, ByteBuffer message, DataMessageSourceType sourceType) |
|
WTN 视频流首帧解码成功回调 | onFirstPublicStreamVideoFrameDecoded( | onWTNFirstRemoteVideoFrameDecoded(String streamId, VideoFrameInfo info) |
|
WTN 音频流首帧解码成功回调 | onFirstPublicStreamAudioFrame(String publicStreamId) | onWTNFirstRemoteAudioFrame(String streamId) |
|
优化了转推直播接口的易用性。与 WTN 接口共用 MixedStreamConfig,提升易用性。如果你已经实现了转推直播功能,参考以下表格对接口进行替换。
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
| |||
API:合流转推 | startPushMixedStreamToCDN( | startPushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig) |
|
回调: |
| onMixedStreamEvent(MixedStreamTaskInfo info, MixedStreamTaskEvent event, MixedStreamTaskErrorCode error) |
|
更新合流转推任务 | updatePushMixedStreamToCDN( | updatePushMixedStream(String taskId, MixedStreamPushTargetConfig pushTargetConfig, MixedStreamConfig mixedConfig) |
|
| |||
API:发起单流转推 | startPushSingleStreamToCDN( | startPushSingleStream(String taskId, PushSingleStreamParam param) |
|
回调: | onStreamPushEvent( | onSingleStreamEvent(String taskId, SingleStreamTaskEvent event, SingleStreamTaskErrorCode error) |
|
| |||
停止单流/合流转推 | stopPushStreamToCDN(String taskId) |
|
|
功能 | 接口名 | 变更说明 | |
|---|---|---|---|
接收到来自远端某音频流的第一帧时回调 | |||
|
| 参数变化: | ^^ |
将外部音频参考帧推到sdk内 | pushReferenceAudioPCMData | 新增API:自定义音频回声消除参考信号 |
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
音视频同步状态发生改变时 | onAVSyncStateChange(AVSyncState state) | onAVSyncEvent(String roomId, String uid, AVSyncEvent eventCode) |
|
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
强制切换当前的音频播放路由 | setAudioRoute | setAudioRoute | 限制发生变化: |
设置音频场景类型 | setAudioScenario | setAudioScenario |
|
v3.58 | v3.60 | 变更说明 |
|---|---|---|
pushExternalVideoFrame(VideoFrame frame) | pushExternalVideoFrame(VideoFrameData frame) | 参数变更: |
v3.58 | v3.60 | 变更说明 |
|---|---|---|
getHotMusic(@NonNull MusicHotType[] hotTypes,@NonNull MusicFilterType[] filters) | getHotMusic(@NonNull ListcustomHotlistId, @NonNull MusicFilterType[] filters) | 参数替换:移除
|
当前版本使用streamId唯一标识一路流,因此各个API中以前版本的streamIndex参数被streamId或相关信息替换,涉及到API如下:
v3.58 | v3.60 | 变更说明 |
|---|---|---|
muteAudioCapture(StreamIndex index, boolean mute) | muteAudioCapture(boolean mute) | 参数变化: |
setCaptureVolume(StreamIndex index, int volume) | setCaptureVolume(int volume) | 参数变化: |
enableAlphaChannelVideoEncode(StreamIndex streamIndex, AlphaLayout alphaLayout) | enableAlphaChannelVideoEncode(AlphaLayout alphaLayout) | 参数变化: |
disableAlphaChannelVideoEncode(StreamIndex streamIndex) | disableAlphaChannelVideoEncode() | 参数变化: |
setLocalVideoCanvas(StreamIndex streamIndex, VideoCanvas videoCanvas) | setLocalVideoCanvas(VideoCanvas videoCanvas) | 参数变化: |
updateLocalVideoCanvas(StreamIndex streamIndex, int renderMode, int backgroundColor) | updateLocalVideoCanvas(int renderMode, int backgroundColor) | 参数变化: |
setRemoteVideoCanvas(RemoteStreamKey streamKey, VideoCanvas videoCanvas) | setRemoteVideoCanvas(String streamId, VideoCanvas videoCanvas) | 参数变化: |
int updateRemoteStreamVideoCanvas(RemoteStreamKey streamKey, RemoteVideoRenderConfig remoteVideoRenderConfig) | updateRemoteStreamVideoCanvas(String streamId, RemoteVideoRenderConfig remoteVideoRenderConfig) | 参数变化: |
setLocalVideoSink(StreamIndex index, IVideoSink videoSink, LocalVideoSinkConfig config) | setLocalVideoSink(IVideoSink videoSink, LocalVideoSinkConfig config) | 参数变化: |
setRemoteVideoSink(RemoteStreamKey streamKey, IVideoSink videoSink, RemoteVideoSinkConfig config) | setRemoteVideoSink(String streamId, IVideoSink videoSink, RemoteVideoSinkConfig config) | 参数变化: |
setVideoSourceType(StreamIndex index, VideoSourceType type) | setVideoSourceType(VideoSourceType type) | 参数变化: |
setRemoteVideoMirrorType(RemoteStreamKey remoteStreamKey, RemoteMirrorType mirrorType) | setRemoteVideoMirrorType(String streamId, RemoteMirrorType mirrorType) | 参数变化: |
sendSEIMessage(StreamIndex streamIndex, byte[] message, int repeatCount, SEICountPerFrame mode) | sendSEIMessage(byte[] message, int repeatCount, SEICountPerFrame mode) | 参数变化: |
startFileRecording(StreamIndex type, RecordingConfig config, RecordingType recordingType) | startFileRecording(RecordingConfig config, RecordingType recordingType) | 参数变化: |
stopFileRecording(StreamIndex type) | stopFileRecording() | 参数变化: |
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) | 参数变化: |
setVideoDecoderConfig(RemoteStreamKey key, VideoDecoderConfig config) | setVideoDecoderConfig(String streamId, VideoDecoderConfig config) | 参数变化: |
requestRemoteVideoKeyFrame(RemoteStreamKey streamKey) | requestRemoteVideoKeyFrame(String streamId) | 参数变化: |
setVideoWatermark(StreamIndex streamIndex, String imagePath, RTCWatermarkConfig watermarkConfig) | setVideoWatermark(String imagePath, RTCWatermarkConfig watermarkConfig) | 参数变化: |
clearVideoWatermark(StreamIndex streamIndex) | clearVideoWatermark() | 参数变化: |
takeLocalSnapshot(StreamIndex streamIndex, ISnapshotResultCallback callback) | takeLocalSnapshot(ISnapshotResultCallback callback) | 参数变化: |
takeRemoteSnapshot(StreamIndex streamIndex, ISnapshotResultCallback callback) | takeRemoteSnapshot(String streamId, ISnapshotResultCallback callback) | 参数变化: |
onUserStartVideoCapture(String roomId,String uid) | onUserStartVideoCapture(String streamId, StreamInfo streamInfo) | 参数变化: |
onUserStopVideoCapture(String roomId, String uid) | onUserStopVideoCapture(String streamId, StreamInfo streamInfo) | 参数变化: |
onUserStartAudioCapture(String roomId, String uid) | onUserStartAudioCapture(String streamId, StreamInfo streamInfo) | 参数变化: |
onUserStopAudioCapture(String roomId, String uid) | onUserStopAudioCapture(String streamId, StreamInfo streamInfo) | 参数变化: |
onLocalAudioStateChanged(LocalAudioStreamState state, LocalAudioStreamError error) | onLocalAudioStateChanged(String streamId, StreamInfo streamInfo, LocalAudioStreamState state, LocalAudioStreamError error) | 参数变化: |
onLocalVideoStateChanged(StreamIndex streamIndex, LocalVideoStreamState state, LocalVideoStreamError error) | onLocalVideoStateChanged(String streamId, StreamInfo streamInfo, LocalVideoStreamState state, LocalVideoStreamError error) | 参数变化: |
onRemoteAudioStateChanged(RemoteStreamKey key, RemoteAudioState state ,RemoteAudioStateChangeReason reason) | onRemoteAudioStateChanged(String streamId, StreamInfo streamInfo, RemoteAudioState state, RemoteAudioStateChangeReason reason) | 参数变化: |
onRemoteVideoStateChanged(RemoteStreamKey streamKey, RemoteVideoState videoState, RemoteVideoStateChangeReason videoStateReason) | onRemoteVideoStateChanged(String streamId, StreamInfo streamInfo, RemoteVideoState videoState, RemoteVideoStateChangeReason videoStateReason) | 参数变化: |
onFirstLocalVideoFrameCaptured(StreamIndex streamIndex, VideoFrameInfo frameInfo) | onFirstLocalVideoFrameCaptured(IVideoSource videoSource, VideoFrameInfo frameInfo) | 参数变化: |
onLocalVideoSizeChanged(StreamIndex streamIndex, VideoFrameInfo frameInfo) | onLocalVideoSizeChanged(IVideoSource videoSource, VideoFrameInfo frameInfo) | 参数变化: |
onRemoteVideoSizeChanged(RemoteStreamKey remoteStreamKey, VideoFrameInfo frameInfo) | onRemoteVideoSizeChanged(String streamId, StreamInfo streamInfo, VideoFrameInfo frameInfo) | 参数变化: |
onFirstLocalAudioFrame(StreamIndex streamIndex) | onFirstLocalAudioFrame(IAudioSource audioSource) | 参数变化: |
onSEIMessageReceived(RemoteStreamKey remoteStreamKey,ByteBuffer message) | onSEIMessageReceived(String streamId, StreamInfo streamInfo, ByteBuffer message) | 参数变化: |
onSEIStreamUpdate(RemoteStreamKey remoteStreamKey, SEIStreamUpdateEvent event) | onSEIStreamUpdate(String streamId, StreamInfo streamInfo, SEIStreamUpdateEvent event) | 参数变化: |
onRecordingStateUpdate(StreamIndex index, RecordingState state, RecordingErrorCode errorCode, RecordingInfo info) | onRecordingStateUpdate(IVideoSource videoSource, RecordingState state, RecordingErrorCode errorCode, RecordingInfo info) | 参数变化: |
onRecordingProgressUpdate(StreamIndex index, RecordingProgress progress, RecordingInfo info) | onRecordingProgressUpdate(IVideoSource videoSource, RecordingProgress progress, RecordingInfo info) | 参数变化: |
onStreamSyncInfoReceived(RemoteStreamKey streamKey, StreamSyncInfoConfig.SyncInfoStreamType streamType, ByteBuffer data) | onStreamSyncInfoReceived(String streamId, StreamInfo streamInfo, StreamSyncInfoConfig.SyncInfoStreamType streamType, ByteBuffer data) | 参数变化: |
onAudioFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state) | onAudioFrameSendStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFrameSendState state) | 参数变化: |
onVideoFrameSendStateChanged(String roomId, RtcUser user, FirstFrameSendState state) | onVideoFrameSendStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFrameSendState state) | 参数变化: |
onAudioFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state) | onAudioFramePlayStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFramePlayState state) | 参数变化: |
onVideoFramePlayStateChanged(String roomId, RtcUser user, FirstFramePlayState state) | onVideoFramePlayStateChanged(String streamId, StreamInfo streamInfo, RtcUser user, FirstFramePlayState state) | 参数变化: |
onSimulcastSubscribeFallback(RemoteStreamSwitch event) | onSimulcastSubscribeFallback(String streamId, StreamInfo streamInfo, RemoteStreamSwitch event) | 参数变化: |
onPerformanceAlarms(PerformanceAlarmMode mode, String roomId, PerformanceAlarmReason reason, SourceWantedData data) | onPerformanceAlarms(String streamId, StreamInfo streamInfo, PerformanceAlarmMode mode, PerformanceAlarmReason reason, SourceWantedData data) | 参数变化: |
onLocalStreamStats(LocalStreamStats stats) | onLocalStreamStats(String streamId, StreamInfo streamInfo, LocalStreamStats stats) | 参数变化: |
onRemoteStreamStats(RemoteStreamStats stats) | onRemoteStreamStats(String streamId, StreamInfo streamInfo, RemoteStreamStats stats) | 参数变化: |
onLocalEncodedVideoFrame(StreamIndex streamIndex, RTCEncodedVideoFrame encodedVideoFrame) | onLocalEncodedVideoFrame(IVideoSource videoSource, RTCEncodedVideoFrame encodedVideoFrame) | 参数变化: |
onRemoteEncodedVideoFrame(RemoteStreamKey streamKey, RTCEncodedVideoFrame encodedVideoFrame) | onRemoteEncodedVideoFrame(String streamId, StreamInfo streamInfo, RTCEncodedVideoFrame encodedVideoFrame) | 参数变化: |
onTakeLocalSnapshotResult(long taskId, StreamIndex streamIndex, Bitmap image, int errorCode) | onTakeLocalSnapshotResult(long taskId, IVideoSource videoSource, Bitmap image, int errorCode) | 参数变化: |
onTakeRemoteSnapshotResult(long taskId, RemoteStreamKey streamKey, Bitmap image, int errorCode) | onTakeRemoteSnapshotResult(long taskId, String streamId, StreamInfo streamInfo, Bitmap image, int errorCode) | 参数变化: |
onRemoteUserAudioFrame(RemoteStreamKey streamKey, IAudioFrame audioFrame) | onRemoteUserAudioFrame(String streamId, StreamInfo streamInfo, IAudioFrame audioFrame) | 参数变化: |
onProcessRemoteUserAudioFrame(RemoteStreamKey streamKey, IAudioFrame audioFrame) | onProcessRemoteUserAudioFrame(String streamId, StreamInfo streamInfo, IAudioFrame audioFrame) | 参数变化: |
onStart(StreamIndex index) | onStart(String streamId, StreamInfo streamInfo) | 参数变化: |
onStop(StreamIndex index) | onStop(String streamId, StreamInfo streamInfo) | 参数变化: |
onRateUpdate(StreamIndex streamIndex, int videoIndex, int fps, int bitrateKbps) | onRateUpdate(String streamId, StreamInfo streamInfo, int videoIndex, int fps, int bitrateKbps) | 参数变化: |
onRequestKeyFrame(StreamIndex streamIndex, int videoIndex) | onRequestKeyFrame(String streamId, StreamInfo streamInfo, int videoIndex) | 参数变化: |
onActiveVideoLayer(StreamIndex streamIndex, int videoIndex, boolean active) | onActiveVideoLayer(String streamId, StreamInfo streamInfo, int videoIndex, boolean active) | 参数变化: |
改动的数据类型 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
ChannelProfile | CHANNEL_PROFILE_CHAT(5) | CHANNEL_PROFILE_CALL(19) | 注重流畅性,视频缺省码率相对低,对音质要求低,流畅性要求高。 |
CHANNEL_PROFILE_GAME_HD(8) | CHANNEL_PROFILE_LIVE(20) | 更注重画质,视频缺省码率相对高,对音质要求高。 |
功能 | V3.58 | V3.60 | 变更说明 |
|---|---|---|---|
视频帧数据 | VideoFrame | VideoFrameData |
|
本地视频帧回调配置 | LocalVideoRenderPosition | LocalVideoSinkPosition |
|
远端视频帧回调位置 | RemoteVideoRenderPosition | RemoteVideoSinkPosition | 类型重命名 |
是否将视频帧镜像 | VideoRenderMirrorType | VideoSinkMirrorType | 枚举重命名 |
构建纹理格式视频数据返回帧 | GLTextureVideoFrameBuilder | / | 删除,无替代 |
构建 CpuBuffer 的视频帧 | CpuBufferVideoFrameBuilder | / | 删除,无替代 |
ByteRTCStreamMixingEvent 变更为 MixedStreamTaskEvent,和 WTN 流任务共用同一个事件枚举类。描述 | V3.58 | V3.60 |
|---|---|---|
请求发起任务 | STREAM_MIXING_START(1) | START_SUCCESS(1) |
任务发起失败 | STREAM_MIXING_START_FAILED(3) | START_FAILED(2) |
请求更新 | STREAM_MIXING_UPDATE(4) | UPDATE_SUCCESS(3) |
任务更新失败 | STREAM_MIXING_UPDATE_FAILED(6) | UPDATE_FAILED(4) |
请求结束任务 | STREAM_MIXING_STOP(7) | STOP_SUCCESS(5) |
任务结束失败 | STREAM_MIXING_STOP_FAILED(9) | STOP_FAILED(6) |
参数错误 | STREAM_MIXING_REQUEST_PARAM_ERROR(15) | 调用 startPushMixedStream 或 updatePushMixedStream 时返回 RETURN_STATUS_PARAMETER_ERR = -2 |
任务处理超时,请检查网络状态并重试 | STREAM_MIXING_UPDATE_TIMEOUT(13) | 调用 startPushMixedStream 或 updatePushMixedStream 时返回 TIMEOUT(1091) |
合流加图片 | STREAM_MIXING_MIX_IMAGE_EVENT(16) | WARNING(7) |
Warning 事件 | 无 | WARNING(7) |
其他 | STREAM_MIXING_FIRST_AUDIO_FRAME_BY_CLIENT_MIX(11) | 移除 |
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 | 增加字段:
|
远端音频流统计信息 | RemoteAudioStats | 增加字段: |
远端视频流统计信息 | RemoteVideoStats | 增加字段:
|
功能 | 改动的数据类型 | 变更说明 |
|---|---|---|
截图错误码 | SnapshotErrorCode | 新增类 |
音频场景类型 | AudioScenarioType | 枚举值增加: |
混响特效类型 | VoiceReverbType | 枚举值增加: |
登录错误码 | LoginErrorCode | 错误码增加: |
单流转推任务错误码 | SingleStreamTaskErrorCode | 枚举值增加: |
单流转推配置目标房间信息 | DestInfo | 新增类 |
单流转推类型 | SingleStreamPushType | 新增类 |
单流转推直播配置参数 | PushSingleStreamParam | 成员增加: |
镜像类型枚举 | MirrorType | 枚举值增加: |
发布状态变化原因 | PublishStateChangeReason | 新增类 |
V3.58 | V3.60 |
|---|---|
WARNING_CODE_OLD_ROOM_BEEN_REPLACED = -2016 | 移除: |
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 | 耳返支持复用自定义处理后的本地采集音频。
|
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 | 无替代接口 |
删除 |
| 无替代接口 |
删除 |
| 如果你需要使用 ASR 功能,可以通过实时字幕功能相关接口实现:onSubtitleStateChanged、onSubtitleMessageReceived |
删除 | onGLEnvInitiated | 无替代接口 |
删除 | onGLEnvRelease | 无替代接口 |
删除 | subscribeUserStream(String uid, StreamIndex streamType, SubscribeMediaType mediaType, SubscribeVideoConfig subscribeVideoConfig); | subscribeStreamVideo(String streamId, boolean subscribe) |
删除 | setDeviceId(String deviceId) | 无替代接口 |
删除 | replaceBackground(BackgroundMode mode, DivideModel divideModel) | 无替代接口 |
删除 | setAudioPlaybackDevice(AudioPlaybackDevice audioPlaybackDevice) | setDefaultAudioRoute(AudioRoute route) |
删除 | pushExternalVideoFrame(VideoFrame frame, boolean isDirectEncode) | 无替代接口 |
删除 |
|
|
删除 | setOnDestroyCompletedCallback(Runnable callback) | 无替代接口 |
删除 |
|
|
删除 | IAudioMixingManager | IMediaPlayer |
删除 | muteAudioPlayback(MuteState muteState) | setPlaybackVolume(int volume) |
删除 |
|
|
删除 | IRTCRoomEventHandler.onRoomError(int err) |
|
删除 |
|
|
删除 |
|
|
删除 |
| 无替代接口,此版本屏幕流不支持设置外部源数据 |
变更详情 | 功能模块 | 改动的数据类型 | 说明 |
|---|---|---|---|
新增枚举值 | 音效 |
自 3.57 版本起,RTC SDK 支持动态加载除主库外的 .so 文件,SDK 离线包的结构发生变化,请关注手动集成 SDK 指南的更新。
SDK 在 EngineConfig 类中提供 nativeLoadPath 属性,支持在 App 运行时从指定的私有目录动态加载所需的 .so 文件,从而减小 App 的安装包体积。如需动态加载 .so 文件,参看按需集成插件以缩小应用体积。
该版本提供 SAMI 音频技术动态库插件、VP8 编解码插件、AAC 软件编解码插件、APM 稳定性监控插件,详情参看Android。
该版本对所有不规范的 API 命名进行了统一修复,提升代码规范度和易用性。以下仅为变更示例,请至类型详情页查看所用类型的具体改动。
变更对象 | 变更详情 | 旧版示例 | 新版示例 |
|---|---|---|---|
枚举值 |
| 以
| 以
|
结构体成员 | 改为首字母小写,驼峰标识 | 以
| 以
|
变更详情 | 功能模块 | 废弃的类/接口 | 替代的类/接口 | 说明 |
|---|---|---|---|---|
删除 | 主调类 |
|
| |
删除 | 引擎管理 |
| 咨询技术支持获取详细信息。 | |
使用范围拓展 | 视频处理 |
| 旧版接口仅支持在手动订阅时使用,新增支持在自动订阅时使用。 | |
废弃 | 视频管理 |
| 新接口通过 | |
删除 | 音频处理 |
|
| |
参数数据结构新增成员变量 | 音频管理 |
| 新增参数 |
变更详情 | 功能模块 | 废弃的类/接口 | 替代的类/接口 | 说明 |
|---|---|---|---|---|
删除 | 主回调类 |
|
| |
参数变更 | 消息 |
|
| 在 |
参数数据结构新增成员变量 | 音频管理 |
| 新增参数 |
变更详情 | 功能模块 | 改动的数据类型 | 说明 |
|---|---|---|---|
成员变量新增 | 字幕翻译服务 | 在字幕内容回调 | |
成员变量变更 | CDN 推流 | 转推直播单个用户画面由设置相对于整体画面的归一化比例变更为可设置像素绝对值。 |
该版本为全部 API 增加返回值,通过返回值可以明确发现失败的 API 调用,定位失败原因。具体返回值的含义参看各 API 注释。
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 说明 |
|---|---|---|---|---|
将混音相关的类和接口按音效和音乐进行拆分,具体变动情况请参看混音相关的新旧接口对应表 | 混音 |
| 一般来说,对于短时间的音效(比如小于 20s),可以使用音效类;对于较长的音频或 PCM 数据,可以使用音乐类。 |
附:混音相关的新旧接口对应表
接口分类 | 接口用途 | 废弃类/接口 | 新类/接口(音效) | 新类/接口(音乐) | 备注 |
|---|---|---|---|---|---|
获取实例 | 获取播放器实例 |
|
|
| |
混音类 |
|
|
| ||
混音主调接口 | 将音效文件加载至内存 |
|
|
| |
播放/停止/暂停/恢复 |
|
|
| ||
获取/指定位置/时长 |
|
|
| ||
获取/指定音量 |
|
|
| ||
调整音调 |
| NA |
| ||
设置声道模式 |
| NA |
| ||
获取/设置音轨数 |
| NA |
|
| |
设置播放速度 |
| NA |
| ||
设置播放进度回调间隔 |
| NA |
| ||
设置响度 |
| NA |
| ||
播放外部音频源 |
| NA |
| ||
混音回调接口 | 播放状态回调 |
|
|
| |
音频数据回调 |
| NA |
| ||
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 说明 |
|---|---|---|---|---|
参数变更 | 引擎管理 | 参数数据类型变更 | ||
行为变更 | 高级功能 | 在此前版本中,此接口仅支持进房后调用。 | ||
合并 | 高级功能 |
| 新接口支持本地用户同时设置自己的发声位置和发声朝向。 | |
| 新接口支持本地用户设置远端用户的发声位置和发声朝向。 | |||
废弃 | CDN 推流 |
|
| 合流转推直播接口/参数类型重命名,行为逻辑无变化,新旧版本类名对应关系参看该版本中的“类型变更” |
|
| |||
|
| |||
变更详情 | 功能模块 | 变动前回调 | 变动后回调 | |
|---|---|---|---|---|
参数变更、拆分 | 音视频传输 |
| 参数
|
变更详情 | 类型 | 变更前 | 变更后 | 说明 |
|---|---|---|---|---|
重命名 | 转推直播一级结构体 |
| 结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看 | |
转推直播 Observer |
|
| 升级该版本你需要 import com.ss.bytertc.engine.video.VideoFrame 类替代 org.webrtc.VideoFrame 类 | |
转推直播二级结构体 |
| 结构体中变量名称/方法名称均有变更,请至对应的类型详情中查看 | ||
| ||||
|
| |||
|
| |||
| ||||
|
| |||
转推直播相关枚举类型 |
|
| 各枚举类中的枚举值名称均有变更,请至对应的类型详情中查看 | |
| ||||
| ||||
| ||||
| ||||
| ||||
| ||||
|
|
变更详情 | 错误码 | 说明 |
|---|---|---|
枚举值变更 | 新增枚举值:
名称变更:
| |
新增枚举值: | ||
废弃枚举值 |
该版本 SDK 产物新增 apm_insight_crash_lite 依赖库,若以离线方式集成 SDK,需手动添加该依赖库,具体添加方式参看添加依赖。
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
返回值变更 | 房间管理 |
| joinRoom 返回值含义如下:
| 返回值为 |
网络管理 |
|
| ||
引擎管理 |
| setBusinessId 返回值含义如下:
| ||
拆分 | 视频管理 |
| 解除人脸识别与视频特效之间的耦合,提升接口易用性。 | |
参数类型变更 | 屏幕共享 |
|
| 参数类型变更为新增的 |
行为变更 | 屏幕共享 |
|
| 优化屏幕共享接口的行为 |
所属类型变更、名称变更、参数变更 | 音视频处理 |
| public abstract int initCVResource(String license_file, String algo_model_dir); |
|
| ||||
| ||||
| public abstract int updateEffectNode(String effect_node, String key, float value); | |||
| ||||
| ||||
| public abstract int setColorFilterIntensity(float intensity); | |||
参数变更 | 消息 |
|
| 支持 SEI 多发模式,即在 1 帧间隔内多次发送 SEI 数据时,多个 SEI 随下个视频帧同时发送。 |
多个模块 | 返回值类型变化,例如:
以下接口返回值类型由 void 变为 int,具体 int 值含义参考新增数据结构 ReturnStatus: | |||
视频管理 |
|
| 通过 | |
|
| 通过 | ||
名称变更 | 引擎管理 |
| 修正大小写。 | |
名称和参数变更 | 屏幕分享 |
|
|
|
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
行为变更 | 自定义流处理 | 在此前版本中,修改通过此回调返回的音频帧,会影响发送到远端的音频数据和本地软件耳返中的音频数据。 | ||
参数变更 | CDN 推流 |
| onMixingAudioFrame | 新增参数 |
消息 |
|
| 新增参数 | |
名称变更 | 自定义流处理 |
| 大驼峰变更为小驼峰 | |
| ||||
| ||||
| ||||
| ||||
CDN 推流 |
|
| ||
删除回调类 | 范围语音 |
| 此前,在手动订阅的场景下,如果你希望使用范围语音功能,你必须根据此回调获取的衰减系数,设定音量。 | |
变更详情 | 数据类型 | 备注 |
|---|---|---|
取值范围拓展 |
| 取值范围由 |
枚举值变化 |
| |
音频路由和发布订阅状态到音量类型的映射关系改变 | 最新的映射关系查看数据结构的文档。 | |
成员变量变更 | 新增成员变量: | |
roomId
| ||
枚举值增删 | 新增枚举值: | |
变量类型变更 | 空间音频功能中表示空间坐标的 position 的 变量 | 提升球面立体声渲染效果。 |
配置变更 | 房间属性的默认值 | |
成员变量增减 |
| 新增成员变量: |
变更详情 | 错误码 | 说明 |
|---|---|---|
枚举值增删 | 新增枚举值: | |
新增枚举值: | ||
新增枚举值: | ||
枚举类增删 | onPushPublicStreamResult 和 |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 | 新增屏幕共享音频的枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 方法 | 备注 |
|---|---|---|---|
参数数据结构改动 | 音频管理 |
| 数据结构中,新增参数: |
方法行为变更 | 高级功能 |
| 自适应启用硬件耳返 |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
成员变量增删 | 新增高音质畅聊模式: | |
枚举值增删 | 新增获取软件耳返音频: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
废弃原方法 | 音频处理 |
|
| 设置远端用户音量为 0 即可停止播放本地收到的音频流 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
合并、名称和参数变更 | 音视频处理 |
|
|
该版本部分头文件名称发生变化,请参照下表在工程文件中进行调整:
平台 | 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 | |
名称和参数变更 | 多房间 |
|
| |
引擎管理 |
|
| ||
|
| |||
位置迁移,所属类型变更 | 房间管理 | 以下方法从 RTCVideo(原 RTCEngine)类下移除,使用 RTCRoom 类中的同名方法代替: | ||
参数变更 | 音频管理 |
|
| 新增 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
基础类名变更 | 所有模块 | public abstract class IRTCEngineEventHandler | public abstract class IRTCVideoEventHandler | |
位置迁移,所属类型变更 | 引擎管理 | 以下回调从 IRTCVideoEventHandler(原 IRTCEngineEventHandler)类下移除,使用 IRTCRoomEventHandler 类中的同名回调代替: | ||
参数变更 | 音频管理 |
|
| |
|
| |||
音视频传输 |
|
| ||
|
| |||
房间管理 |
|
| ||
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
公共流管理 |
|
| ||
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
成员变量增删 | 删除成员变量: | |
枚举值增删 | 增加枚举值: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
基础类名变更 | 所有模块 | public abstract class IRTCRoom | public abstract class RTCRoom | |
位置迁移,所属类型变更 | 多房间 | 以下方法从 RTCRoom(原 IRTCRoom)类下移除,使用 RTCEngine 类中的同名方法代替: | 由于新方法变更为从引擎类上调用,因此增加了 roomId 相关的字段,且均为必填字段。 | |
参数变更 | 音频路由 |
|
| |
消息 |
|
| ||
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
方法重构 | 自定义音频处理 |
|
| |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
位置迁移,所属类型变更 | 多房间 | 以下回调从 IRTCRoomEventHandler 类下移除,使用 IRTCEngineEventHandler 类中的同名回调代替: | ||
名称和参数变更 | 多房间 |
|
| |
参数变更 | 音频路由 |
|
| |
回调重构 | 自定义音频处理 |
|
| |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
位置迁移,所属类型变更 | 以下数据类型从 RTCEngine 类下移出: 以下数据类型从 IRTCEngineEventHandler 类下移出 | |
枚举值增删 |
| 增加以下枚举值:
|
枚举值增删 | 增加以下枚举值: | |
成员变量增删 | 删除以下成员变量: | |
成员变量增删 | 增加以下成员变量值: | |
枚举值增删 | 增加以下枚举值: | |
枚举值含义变更 | 枚举值对应的语音模式决策逻辑发生变化,本地是否播放不再是决策因素,只取决于麦克风是否开启 |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增枚举值: |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
合并或拆分 | 房间管理 |
| public void onRoomStateChanged(String roomId, String uid, int state, String extraInfo) {} | |
合并或拆分 | 多房间 |
|
|
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称和参数变更 | 位置语音 |
|
| 接口由 RTCEngine 类移动至 IRTCRoom 类 |
名称变更 | 音频管理 |
| ||
原接口废弃,使用新接口代替 | 音频管理 |
|
| |
参数变更 | 转推直播 |
|
| 修改可预定义的参数为枚举类型 |
|
| |||
|
| |||
|
|
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 |
| 删除枚举值: |
类型增减 |
| 新增 |
类型增减 |
| 新增 |
成员函数变更 | 成员函数 | |
成员函数变更 | 成员函数 | |
类型名称变化 | 类型名由 |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
返回值变更 | 实时消息 |
|
| |
API 行为变更 | 订阅媒体流 | SDK 在每条远端流属性中维护订阅关系。如果该流被移除,订阅关系也将取消 | SDK 在房间属性中维护订阅关系列表。订阅关系将在用户退房后才会取消。 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 实时消息 |
|
| |
参数变化 | 转推直播 |
|
| |
参数变化 | 转推直播 |
| public void onRoomMessageSendResult(long msgid, RoomMessageSendResult error) |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举类新增 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
替换 | 音频路由设置 |
|
|
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
替换 | 音频路由设置 |
|
|
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
成员变量增删 | 新增成员变量: | |
成员函数参数变更 | 成员函数 | |
枚举值增删 | 新增枚举值: | |
枚举值增删 | 新增枚举值: | |
枚举值增删 | 新增枚举值: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增错误码: | |
枚举值增删 | 新增枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
合并 | 音频数据回调 |
|
| 在 |
参数增加 | 本地录制 |
|
|
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 | |
|---|---|---|---|---|---|
拆分 | 引擎管理 |
|
| 媒体设备状态回调拆分成音频和视频设备状态回调 | |
拆分 | 引擎管理 |
|
| 媒体设备警告回调拆分成音频和视频设备警告回调 | |
参数变化 | 音频数据回调 |
|
| ||
参数变化 | 音频数据回调 |
| |||
参数变化 | 音频数据回调 |
|
转换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)
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
类型增减 | 新增 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称变化 | 屏幕共享 |
|
| |
名称变化 | 音视频回退 |
|
| |
参数变化 | 屏幕共享 |
|
| 新增参数,设置发布/取消发布的媒体类型 |
参数变化 | 转推直播/多房间 |
|
| 新增参数,设置转推直播任务 ID |
参数变化 | 多房间 |
|
| 新增参数,设置发布/取消发布的媒体类型 |
名称和参数均变化 | 多房间 |
|
| |
名称和参数均变化 | 屏幕共享 |
|
| |
合并 | 房间管理/媒体流管理 |
|
| 新版本中新增独立的接口单独控制摄像头/麦克风采集的音频/视频的发布/取消发布 |
拆分 | 房间管理 |
|
| 单房间模式下,解耦摄像头/麦克风采集的媒体流与屏幕共享媒体流的订阅/取消订阅 |
拆分 | 多房间 |
|
| 多房间模式下,解耦摄像头/麦克风采集的媒体流与屏幕共享媒体流的订阅/取消订阅 |
拆分 | 视频管理 |
|
| 使用独立的接口分别设置摄像头视频流和屏幕视频流的发布参数 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 房间管理 |
|
|
|
合并或拆分 | 房间管理 |
|
| 单房间模式下,解耦新增或移除摄像头/麦克风采集的媒体流与新增屏幕共享媒体流的回调,同时去除旧版本回调在功能上的重合 |
合并或拆分 | 多房间 |
|
| 多房间模式下,解耦新增或移除摄像头/麦克风采集的媒体流与新增屏幕共享媒体流的回调,同时去除旧版本回调在功能上的重合 |
删除 | 转推直播 |
| / |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举类增减 |
| 新增枚举类 |
成员变量变化 |
| 新增成员变量: |
成员变量变化 | LocalStreamStats 和 RemoteStreamStats |
|
成员变量变化 | 新增 | |
成员变量变化 |
| 新增 |
成员变量变化 | 成员变量 |
自此版本起,本地视频采集参数默认由系统自动设置,而不是和编码参数保持一致。你可以通过 VideoCaptureConfig 进行相关设置。如果你的代码逻辑中对采集到的视频帧进行了自定义处理,应对处理逻辑进行相应修改。
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 视频管理 |
| public abstract int setVideoCaptureConfig(VideoCaptureConfig videoCaptureConfig); | 增加摄像头采集参数中的模式设置 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称变化 | 视频管理 |
| ||
名称变化 | 多房间 |
|
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 | 新增了枚举值: | |
枚举值增删 | 新增了枚举值: | |
成员变量变化 |
| 新增成员变量: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增了枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 屏幕共享 |
|
| |
参数变化 | 自定义视频采集渲染 |
|
| |
参数变化 | 音频管理 |
|
|
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 废弃了枚举值 | |
枚举值增删 | 新增了枚举值 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 房间管理 |
| ||
参数变化 | 多房间 |
|
| |
参数变化 | 视频管理 |
| public abstract void setVideoSourceType(StreamIndex index, VideoSourceType type); | |
名称和参数均变化 | 房间管理 |
| public abstract void enableAudioPropertiesReport(AudioPropertiesConfig config); | |
名称和参数均变化 | 视频管理 |
| public abstract int setLocalVideoMirrorType(MirrorType mirrorType); |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
拆分 | 音频管理 |
| public void onLocalAudioPropertiesReport(LocalAudioPropertiesInfo[] audioPropertiesInfos){} | 旧版回调拆分为 |
删除 | 视频管理 |
| / |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增了枚举值: | |
枚举值增删 | 新增了枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 引擎管理 |
| public abstract int feedback(List | |
名称和参数均变化 | 音频管理 |
| public abstract void setCaptureVolume(StreamIndex index, int volume); | |
名称和参数均变化 | 视频管理 |
| public abstract int sendSEIMessage(StreamIndex streamIndex, byte[] message, int repeatCount); | |
拆分 | 屏幕共享 |
|
| 解耦屏幕共享流的采集与发布 |
拆分 | 屏幕共享 |
|
| 解耦屏幕共享流的停止采集与停止发布 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称变化 | 视频数据回调 |
| public void onSEIMessageReceived(RemoteStreamKey remoteStreamKey,ByteBuffer message) |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 |
| 删除了枚举值: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增了枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 房间管理 |
| ||
名称和参数均变化 | 房间管理 |
| ||
合并 | 房间管理 |
|
| |
合并 | 音频管理/视频管理 |
|
| 通过 pauseAllSubscribedStream 和 resumeAllSubscribedStream 来暂停或接收所有远端媒体流 |
删除 | 房间管理 |
| / | 使用 joinRoom 中的 roomConfig 设置 |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 | 新增了枚举值: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 | 新增了枚举值: | |
枚举值增删 | 新增了枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 混音 |
|
| |
参数变化 | 混音 |
|
| |
参数变化 | 混音 |
|
| |
名称和参数均变化 | 混音 |
|
| |
名称和参数均变化 | 混音 |
|
| |
合并 | 自定义视频采集渲染 |
|
| 多个旧版接口合并为 setRemoteVideoSink |
合并 | 自定义视频采集渲染 |
|
| 多个旧版接口合并为 setLocalVideoSink |
合并 | 混音 |
|
| 多个旧版接口合并为 |
合并 | 混音 |
|
| 多个旧版接口合并为 |
合并 | 混音 |
|
| 多个旧版接口合并为 |
合并 | 混音 |
|
| 多个旧版接口合并为 |
合并 | 混音 |
|
| 多个旧版接口合并为 |
合并 | 混音 |
|
| 多个旧版接口合并为 |
拆分 | 混音 |
|
| 旧接口拆分为 |
删除 | 混音 |
| / | |
删除 | 混音 |
| / |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 引擎管理 |
|
|
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 视频特效 |
|
| |
参数变化 | 视频特效 |
|
| |
参数变化 | 视频管理 |
|
| |
名称和参数均变化 | 视频特效 |
|
| |
名称和参数均变化 | 视频特效 |
|
| |
名称和参数均变化 | 视频管理 |
| public abstract void setVideoSourceType(VideoSourceType type); | |
删除 | 视频特效 |
| / | |
删除 | 视频特效 |
| / | |
删除 | 音频管理 |
| / | |
删除 | 视频管理 |
| / | |
删除 | 屏幕共享 |
| / |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 | |
|---|---|---|---|---|---|
拆分 | 音频管理 |
| public abstract void startAudioCapture(); | 拆分后的接口解除了音频采集与发布的绑定关系。无论是否发布音频,你都可以开启音频采集,并且停止发布后不再自动关闭采集 | |
方法行为变化 | 视频管理 | 无论是否发布视频,你都可以开启视频采集 | |||
方法行为变化 | 视频管理 | 停止视频发布后不再自动关闭采集,可手动关闭 | |||
方法行为变化 | 视频管理 |
|
| 由自定义采集切换至内部采集后,须手动开启内部采集方可开始采集 | |
方法行为变化 | 音频管理 |
|
| 由自定义采集切换至内部采集时,必须先关闭自定义采集,后手动开启内部采集 | |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | CDN 推流 |
|
| |
参数变化 | 视频管理 |
| ||
名称和参数均变化 | CDN 推流 |
|
|
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 引擎管理 |
|
| 新增了回调参数 |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 | 删除了枚举值: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称变化 | 房间管理 |
| ||
名称变化 | 房间管理 |
| ||
名称变化 | 视频管理 |
| ||
名称变化 | 引擎管理 |
| public abstract void setRuntimeParameters(JSONObject params); | |
名称变化 | 音频管理 |
|
| |
名称变化 | 音频管理 |
| ||
名称变化 | 音频管理 |
| ||
名称变化 | 音频管理 |
|
| |
名称变化 | CDN 推流 |
|
| |
参数变化 | 视频管理 |
|
| |
参数变化 | 性能回退 |
| public abstract int setPublishFallbackOption(PublishFallbackOption option) | |
参数变化 | 音频管理 |
| ||
参数变化 | 音频管理 |
| ||
名称和参数均变化 | 房间管理 |
|
| |
名称和参数均变化 | 房间管理 |
| ||
名称和参数均变化 | 视频管理 |
|
| |
名称和参数均变化 | 视频管理 |
|
| |
名称和参数均变化 | 视频管理 |
|
| |
名称和参数均变化 | 音频管理 |
|
| |
名称和参数均变化 | 音频管理 |
|
| |
名称和参数均变化 | 音频管理 |
|
| |
名称和参数均变化 | 音频管理 |
|
| |
名称和参数均变化 | CDN 推流 |
|
| |
名称和参数均变化 | CDN 推流 |
|
| |
合并 | 视频管理 |
|
| 多个旧版接口合并为 |
合并 | 视频管理 |
|
| 多个旧版接口合并为 |
合并 | 视频管理 |
|
| 多个旧版接口合并为 setRemoteVideoCanvas |
合并 | 视频管理 |
|
| 多个旧版接口合并为 setLocalVideoCanvas |
合并 | 音频管理 |
|
| 多个旧版接口合并为 |
拆分 | 视频管理 |
|
| 旧版接口拆分为 startVideoCapture() 和 stopVideoCapture() |
拆分 | 音频管理 |
|
| 旧版接口拆分为 |
删除 | 房间管理 |
| / | 删除旧版接口,设置房间模式请使用 |
删除 | 引擎管理 |
| / | 删除旧版接口,且无替代接口 |
删除 | 引擎管理 |
| / | 删除旧版接口,且无替代接口 |
删除 | 引擎管理 |
| / | 删除旧版接口,且无替代接口 |
删除 | 引擎管理 |
| / | 删除旧版接口,且无替代接口 |
删除 | 引擎管理 |
| / | 删除旧版接口,且无替代接口 |
删除 | 音频管理 |
| / | 删除旧版接口,且无替代接口 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称变化 | 房间管理 |
|
| |
名称变化 | 房间管理 |
|
| |
名称变化 | 房间管理 |
| ||
名称变化 | 房间管理 |
|
| |
名称变化 | 数据统计 |
| ||
参数变化 | 引擎管理 |
|
|
|
参数变化 | 房间管理 |
| ||
参数变化 | 视频管理 |
|
| |
参数变化 | 视频管理 |
|
| |
参数变化 | 视频管理 |
| ||
参数变化 | 视频管理 |
| ||
参数变化 | 性能回退 |
| ||
参数变化 | 音频管理 |
|
| |
参数变化 | 音频管理 |
|
| |
参数变化 | 音频管理 |
| void onLocalAudioStateChanged(LocalAudioStreamState state, LocalAudioStreamError error) | |
参数变化 | 音频管理 |
| ||
参数变化 | 音频管理 |
| ||
参数变化 | 音频管理 |
| void onFirstRemoteAudioFrame(RemoteStreamKey remoteStreamKey) | |
参数变化 | 流消息 |
| UserMessageSendResult 枚举值名称变更 & 新增枚举值 | | |
名称和参数均变化 | 房间管理 |
| public void onLeaveRoom(IRtcEngineEventHandler.RtcRoomStats stats) | |
名称和参数均变化 | 性能回退 |
| public void onSimulcastSubscribeFallback(RemoteStreamSwitch event) | FallbackOrRecoverReason 枚举值名称变更 |
名称和参数均变化 | 音频管理 |
|
| |
名称和参数均变化 | CDN 推流 |
|
| TranscodingError 错误码名称变更 |
合并 | 房间管理 |
|
| 旧版回调合并为 |
合并 | 视频管理 |
|
| 旧版回调合并为 onFirstRemoteVideoFrameRendered |
合并 | 视频管理 |
|
| 旧版回调合并为 OnFirstLocalVideoFrameCaptured |
合并 | 数据统计 |
|
| 多个旧版回调合并为 onLocalStreamStats 中的多个状态 |
合并 | 数据统计 |
|
| 多个旧版回调合并为 onRemoteStreamStats 中的多个状态 |
拆分 | 视频管理 |
|
| |
拆分 | 视频管理 |
|
| |
删除 | 房间管理 |
| / | |
删除 | 数据统计 |
| / |
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 |
| |
枚举值增删 |
| 删除了枚举值: |
枚举值增删 |
| 删除了枚举值: |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
合并 | 引擎管理 |
|
| 多个旧版回调合并为 onConnectionStateChanged 中的多个状态 |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 房间管理 |
|
|
以下表格中的类型发生了变化,你需要在工程文件中找到该类型,并根据变化调整相关处理逻辑:
变更详情 | 数据类型 | 备注 |
|---|---|---|
枚举值增删 |
| 删除了枚举值: |
以下表格中的错误码发生了变化,你需要进行相应的处理:
变更详情 | 错误码 | 备注 |
|---|---|---|
枚举值增删 |
| 新增了枚举值: |
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
名称和参数均变化 | 房间管理 |
|
|
以下表格中的方法发生了变化。你需要在工程文件中找到该方法,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 房间管理 |
|
| |
参数变化 | 房间管理 |
|
|
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
参数变化 | 房间管理 |
|
|