如果你希望从此前版本的 Electron 客户端 SDK 升级到最新的客户端 SDK,请在工程文件中替换最新的客户端 SDK 文件,并参考本文完成 API、回调、参数类型等的替换。
升级过程中,你可能需要参考历史版本文档归档。
Electron SDK 3.60.1 对引擎类、房间和单流模型、发布订阅、屏幕共享、WTN 流、转推直播及多种数据类型进行了调整。从 3.58.1 及更早版本升级时,请按本节逐项修改。
RTCVideo 更名为 RTCEngine,SDK 的核心类及导出名称同步变更。
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 创建引擎 | createRTCVideo(app_id: string, parameters: string) | createRTCEngine(engine_config: EngineConfig) | 接口重命名,app_id 和 parameters 移入 EngineConfig。 |
| 销毁引擎 | destroyRTCVideo() | destroyRTCEngine() | 接口重命名。销毁引擎前,仍需先离开并销毁已创建的房间。 |
| 获取错误描述 | getErrorDescription(code) | / | 接口已删除,无替代接口。 |
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 回路测试 | startEchoTest(echo_test_config, play_delay_time)、stopEchoTest() | startEchoTest(echo_test_config, play_delay_time)、stopEchoTest() | 3.60.1 中固定返回 -1,暂不支持该能力。 |
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 设置变声特效 | setVoiceChangerType(change_type: number) | setVoiceChangerType(change_type: VoiceChangerType) | 参数改为枚举类型。 |
| 设置混响特效 | setVoiceReverbType(voice_reverb_type: number) | setVoiceReverbType(voice_reverb_type: VoiceReverbType) | 参数改为枚举类型。 |
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 加入房间 | joinRoom(token, user_info, config?) | joinRoom(token, user_info, user_visibility, config?) | 新增必填参数 user_visibility,用于设置进房时的用户可见性。 |
| 自动发布配置 | RTCRoomConfig.is_auto_publish | is_auto_publish_audio、is_auto_publish_video | 自动发布配置按音频和视频拆分。 |
| 房间配置 | / | RTCRoomConfig.live_mode、RTCRoomConfig.stream_id | 分别用于设置直播模式和本地发布流 ID。 |
| 远端视频订阅配置 | RTCRoomConfig.remote_video_config | / | 房间配置中不再包含远端视频订阅参数;进房后通过 setRemoteVideoConfig(stream_id, remote_video_config) 按流设置。 |
| 创建房间失败回调 | onCreateRoomStateChanged(room_id, error_code) | / | 回调已删除,无替代回调。 |
| 远端可见用户加入回调 | onUserJoined(user_info, elapsed) | onUserJoined(user_info) | 删除无效参数 elapsed。 |
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 开启或关闭多路视频流 | enableSimulcastMode(enabled) | setLocalSimulcastMode(mode, stream_config?) | 通过 VideoSimulcastMode 选择只发一路流、按需发布大小流或始终发布大小流。新接口需在进房前调用。 |
| 设置编码参数 | setVideoEncoderConfig(configs: VideoEncoderConfig[]) | setVideoEncoderConfig(config: VideoEncoderConfig) | 从配置多路视频参数改为设置一路期望发布的最大分辨率视频流参数。 |
| 设置最大编码参数 | setMaxVideoEncoderConfig(max_solution) | / | 接口已删除;使用 setVideoEncoderConfig(config) 设置期望发布的最大分辨率视频流参数。 |
| 设置远端视频订阅参数 | setRemoteVideoConfig(user_id, remote_video_config) | setRemoteVideoConfig(stream_id, remote_video_config) | 从按用户设置改为按流 ID 设置。 |
| 订阅降级回调 | onSimulcastSubscribeFallback(event) | onSimulcastSubscribeFallback(stream_id, stream_info, event) | 新增 stream_id 和 StreamInfo,用于标识发生降级或恢复的流。 |
发布和订阅接口按音频、视频拆分,并通过布尔参数合并发布与取消发布、订阅与取消订阅操作。
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 发布或取消发布 | publishStream(type)、unpublishStream(type) | publishStreamVideo(publish)、publishStreamAudio(publish) | 按媒体类型拆分;publish 为 true 时发布,为 false 时取消发布。 |
| 远端流发布状态 | onUserPublishStream、onUserUnpublishStream | onUserPublishStreamVideo(stream_id, stream_info, is_publish)、onUserPublishStreamAudio(stream_id, stream_info, is_publish) | 按媒体类型拆分;is_publish 表示发布或取消发布,不再提供 StreamRemoveReason。 |
| 本地发布状态 | onStreamStateChanged(...) | onVideoPublishStateChanged(stream_id, stream_info, state, reason)、onAudioPublishStateChanged(stream_id, stream_info, state, reason) | 按媒体类型拆分,并通过 PublishState 和 PublishStateChangeReason 返回状态及原因。 |
| 订阅或取消订阅 | subscribeStream(user_id, type)、unsubscribeStream(user_id, type) | subscribeStreamVideo(stream_id, subscribe)、subscribeStreamAudio(stream_id, subscribe) | 改为按流 ID 操作;subscribe 为 true 时订阅,为 false 时取消订阅。 |
| 订阅状态 | onStreamSubscribed(state_code, user_id, info) | onVideoSubscribeStateChanged(stream_id, stream_info, state, reason)、onAudioSubscribeStateChanged(stream_id, stream_info, state, reason) | 按媒体类型拆分,并通过 SubscribeState 和 SubscribeStateChangeReason 返回状态及原因。 |
| 订阅或取消订阅所有流 | subscribeAllStreams(type)、unsubscribeAllStreams(type) | subscribeAllStreamsAudio()、unsubscribeAllStreamsAudio()、subscribeAllStreamsVideo()、unsubscribeAllStreamsVideo() | 接口按媒体类型拆分。 |
| 暂停或恢复接收所有流 | pauseAllSubscribedStream(type)、resumeAllSubscribedStream(type) | pauseAllSubscribedStreamAudio()、resumeAllSubscribedStreamAudio()、pauseAllSubscribedStreamVideo()、resumeAllSubscribedStreamVideo() | 接口按媒体类型拆分,并移除媒体类型参数。 |
3.60.1 统一了屏幕流与普通流的发布、订阅、编码和渲染接口。采集接口仍使用 startScreenAudioCapture、startScreenVideoCapture、stopScreenAudioCapture 和 stopScreenVideoCapture。同一用户同一时刻只能发布一路音视频流,不能同时发布摄像头流和屏幕流;切换采集源后,使用统一的发布接口控制当前流。
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 屏幕流编码参数 | setScreenVideoEncoderConfig(config) | setVideoEncoderConfig(config) | 屏幕流和摄像头流共用编码参数接口。 |
| 发布屏幕流 | publishScreen(type)、unpublishScreen(type) | publishStreamVideo(publish)、publishStreamAudio(publish) | 屏幕流和普通流共用发布接口。 |
| 订阅屏幕流 | subscribeScreen(user_id, type)、unsubscribeScreen(user_id, type) | subscribeStreamVideo(stream_id, subscribe)、subscribeStreamAudio(stream_id, subscribe) | 屏幕流和普通流共用订阅接口,并改为按 stream_id 操作。 |
| 本地屏幕渲染 | setupLocalScreen(...)、removeLocalScreen() | setupLocalVideo(...)、removeLocalVideo() | 本地屏幕流和摄像头流共用渲染接口。 |
| 远端屏幕渲染 | setupRemoteScreen(user_id, room_id, ...)、removeRemoteScreen(user_id, room_id) | setupRemoteVideo(stream_id, ...)、removeRemoteVideo(stream_id) | 通过 stream_id 区分并渲染远端屏幕流。 |
| 屏幕流发布回调 | onUserPublishScreen、onUserUnpublishScreen | onUserPublishStreamVideo、onUserPublishStreamAudio | 屏幕流与普通流共用发布状态回调,通过 StreamInfo.is_screen 判断是否为屏幕流。 |
| 屏幕首帧回调 | onScreenVideoFrameSendStateChanged、onScreenVideoFramePlayStateChanged、onScreenAudioFrameSendStateChanged、onScreenAudioFramePlayStateChanged | onVideoFrameSendStateChanged、onVideoFramePlayStateChanged、onAudioFrameSendStateChanged、onAudioFramePlayStateChanged | 屏幕流和普通流共用首帧状态回调,通过 stream_id 和 StreamInfo 区分。 |
| 屏幕采集音量 | setCaptureVolume(stream_index, volume) | setCaptureVolume(volume)、setScreenCaptureVolume(volume) | 麦克风和屏幕音频采集音量分别设置。 |
| 屏幕音频流索引 | setScreenAudioStreamIndex(index) | / | 接口已删除,无替代接口。 |
公共流能力调整为 WTN 流模块。发布 WTN 流与合流转推 CDN 共用合流任务接口;订阅和播放 WTN 流则迁移到独立的 RTCWTNStream。
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 获取 WTN 流实例 | / | getWTNStream() | 新增接口,返回 RTCWTNStream。 |
| 发布或更新 WTN 流 | startPushPublicStream、updatePublicStreamParam | startPushMixedStream、updatePushMixedStream | 在 IMixedStreamConfig 中将 push_target_type 设为 kMixedStreamPushTargetTypeToWTN,并通过 push_wtn_stream_id 指定 WTN 流 ID。 |
| 停止发布 WTN 流 | stopPushPublicStream(public_stream_id) | stopPushMixedStream(task_id, target_type) | target_type 设为 kMixedStreamPushTargetTypeToWTN。 |
| 订阅或取消订阅 | startPlayPublicStream、stopPlayPublicStream | subscribeWTNVideoStream(stream_id, subscribe)、subscribeWTNAudioStream(stream_id, subscribe) | 按音频、视频拆分,并通过布尔参数合并订阅和取消订阅。 |
| 内部渲染 | setupPublicStreamVideo、removePublicStreamVideo | setupWTNRemoteVideo、removeWTNRemoteVideo | 迁移到 RTCWTNStream。 |
| 自定义渲染 | setPublicStreamVideoSink、unsetPublicStreamVideoSink | setWTNRemoteVideoSink、unsetWTNRemoteVideoSink | 迁移到 RTCWTNStream。 |
| 播放音量 | setPublicStreamAudioPlaybackVolume | setWTNRemoteAudioPlaybackVolume | 迁移到 RTCWTNStream。 |
| 发送 SEI | sendPublicStreamSEIMessage(stream_index, channel_id, message, repeat_count, mode) | sendPublicStreamSEIMessage(channel_id, message, repeat_count, mode) | 删除 stream_index;接收端通过 RTCWTNStream.onWTNSEIMessageReceived 获取 SEI 消息。 |
| 发布结果 | onPushPublicStreamResult | onMixedStreamEvent | WTN 和 CDN 合流任务共用 MixedStreamTaskInfo、MixedStreamTaskEvent 和 MixedStreamTaskErrorCode。 |
| 订阅及媒体回调 | onPlayPublicStreamResult、onFirstPublicStreamAudioFrame、onFirstPublicStreamVideoFrameDecoded、onPublicStreamSEIMessageReceived、onPublicStreamDataMessageReceived、onPublicStreamVideoFrame | onWTNVideoSubscribeStateChanged、onWTNAudioSubscribeStateChanged、onWTNFirstRemoteAudioFrame、onWTNFirstRemoteVideoFrameDecoded、onWTNSEIMessageReceived、onWTNDataMessageReceived、onWTNVideoFrame | 回调迁移到 RTCWTNStream,订阅结果按音频和视频拆分。 |
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 服务端合流转推 | startPushMixedStreamToCDN、updatePushMixedStreamToCDN | startPushMixedStream、updatePushMixedStream | CDN 和 WTN 共用一套接口,通过 IMixedStreamConfig.push_target_type 区分目标。 |
| 旧转码接口 | startLiveTranscoding、updateLiveTranscoding、stopLiveTranscoding | startPushMixedStream、updatePushMixedStream、stopPushMixedStream | 旧接口删除,配置统一为 IMixedStreamConfig。 |
| 合流任务回调 | onStreamMixingEvent、onMixingEvent | onMixedStreamEvent | 服务端合流转推任务统一使用 MixedStreamTaskEvent 和 MixedStreamTaskErrorCode。 |
| 单流转推 | startPushSingleStreamToCDN、stopPushStreamToCDN | startPushSingleStream、stopPushSingleStream | 除 CDN 外,还可通过 PushSingleStreamParam.dest_info 和 push_type 转推到 RTC 房间。 |
| 单流转推回调 | onStreamPushEvent(event, task_id, error) | onSingleStreamEvent(task_id, event, error_code) | 事件类型改为 SingleStreamTaskEvent,错误码类型改为 SingleStreamTaskErrorCode。 |
onFirstRemoteAudioFrame、onFirstRemoteVideoFrameRendered 和 onFirstRemoteVideoFrameDecoded 改为通过 stream_id 和 StreamInfo 标识远端流。
| 功能 | 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|---|
| 远端流播放音量 | setRemoteAudioPlaybackVolume(room_id, user_id, volume) | setRemoteAudioPlaybackVolume(stream_id, volume) | 改为按流 ID 设置。 |
| 麦克风采集音量 | setCaptureVolume(stream_index, volume) | setCaptureVolume(volume) | 删除 stream_index。屏幕音频改用 setScreenCaptureVolume。 |
| 麦克风采集静音 | muteAudioCapture(stream_index, mute) | muteAudioCapture(index, mute) | 为兼容旧版本保留首个参数,但当前实现会忽略该参数,只控制麦克风采集。屏幕音频改用 muteScreenAudioCapture(mute)。 |
| 音频场景 | setAudioScenario(scenario)、setAudioScene(scene) | / | 两个接口以及 AudioScenarioType、AudioSceneType 已从 Electron 3.60.1 导出中删除。 |
| 3.58.1 | 3.60.1 | 变更说明 |
|---|---|---|
setVideoSourceType(stream_index, type) | setVideoSourceType(type) | 删除 stream_index。 |
pushExternalVideoFrame(frame) | pushExternalVideoFrame(frame) | 方法签名不变,但 ExternalVideoFrame 删除 color_space,相应的 ColorSpace 枚举不再导出。 |
3.60.1 使用 stream_id 唯一标识一路流。原来通过 room_id、user_id、StreamIndex 或 RemoteStreamKey 定位流的接口和回调,需要改为传入 stream_id;StreamInfo 提供 stream_id、room_id、user_id、stream_index 和 is_screen。
需要迁移的主要接口如下:
| 3.58.1 | 3.60.1 |
|---|---|
setupRemoteVideo(user_id, room_id, view, ...) | setupRemoteVideo(stream_id, view, ...) |
removeRemoteVideo(user_id, room_id) | removeRemoteVideo(stream_id) |
setRemoteVideoSink(stream_key, required_format) | setRemoteVideoSink(stream_id, config?) |
unsetRemoteVideoSink(stream_key) | unsetRemoteVideoSink(stream_id) |
takeRemoteSnapshot(stream_key) | takeRemoteSnapshot(stream_id) |
setRemoteAudioPlaybackVolume(room_id, user_id, volume) | setRemoteAudioPlaybackVolume(stream_id, volume) |
setAudioAlignmentProperty(stream_key, mode) | setAudioAlignmentProperty(stream_id, mode) |
setRemoteVideoSuperResolution(stream_key, mode) | setRemoteVideoSuperResolution(stream_id, mode) |
sendSEIMessage(stream_index, message, repeat_count, mode) | sendSEIMessage(message, repeat_count, mode) |
sendStreamSyncInfo(data, config),其中 config.stream_index 用于指定流 | sendStreamSyncInfo(data, config),config 删除 stream_index |
startFileRecording(type, config, recording_type) | startFileRecording(config, recording_type) |
stopFileRecording(type) | stopFileRecording() |
setVideoWatermark(stream_index, image_path, config) | setVideoWatermark(image_path, config) |
clearVideoWatermark(stream_index) | clearVideoWatermark() |
takeLocalSnapshot(stream_index) | takeLocalSnapshot() |
setLocalVideoSink(stream_index, required_format) | setLocalVideoSink(config) |
unsetLocalVideoSink(stream_index) | unsetLocalVideoSink() |
下列回调也改为通过 stream_id 和 StreamInfo 标识流:
onUserStartAudioCapture、onUserStopAudioCapture、onUserStartVideoCapture、onUserStopVideoCapture;onRemoteAudioStateChanged、onRemoteVideoStateChanged;onFirstRemoteAudioFrame、onFirstRemoteVideoFrameRendered、onFirstRemoteVideoFrameDecoded、onRemoteVideoSizeChanged;onAudioFrameSendStateChanged、onAudioFramePlayStateChanged、onVideoFrameSendStateChanged、onVideoFramePlayStateChanged;onSEIMessageReceived、onSEIStreamUpdate、onStreamSyncInfoReceived、onRemoteUserAudioFrame、onTakeRemoteSnapshotResult。onPerformanceAlarms 从通过 room_id 标识受影响房间,改为通过 stream_id 和 StreamInfo 标识受影响流。本地流回调也移除了 StreamIndex:onFirstLocalAudioFrame()、onFirstLocalVideoFrameCaptured(info)、onLocalVideoSizeChanged(info)、onLocalVideoStateChanged(state, error)、onRecordingStateUpdate(state, error_code, info) 和 onRecordingProgressUpdate(process, info)。onLocalAudioStateChanged(state, error) 的签名不变。
updateSpatialPosition、updateSelfOrientation、updateListenerPosition 和 updateListenerOrientation 已删除。请使用 updateSelfPosition(position_info) 和 updateRemotePosition(uid, position_info),通过 PositionInfo 同时设置位置和朝向。
RTCEngine 中旧的音频混音接口及其回调、类型已删除:
startAudioMixing、stopAudioMixing、pauseAudioMixing、resumeAudioMixing、preloadAudioMixing、unloadAudioMixing,以及 getAudioMixing*、setAudioMixing*、stopAllAudioMixing、pauseAllAudioMixing、resumeAllAudioMixing 不再由 RTCEngine 提供。onAudioMixingFinished、onAudioMixingStateChanged、onAudioMixingPlayingProgress、AudioMixingConfig、AudioMixingState 和 AudioMixingError 不再导出。RTCMediaPlayer 新增 onMediaPlayerEvent(player_id, event, message),用于接收播放器事件。RoomLiveMode 枚举定义为:kRoomLiveModeCoHost = 1 表示连麦直播,kRoomLiveModeSoloHost = 2 表示单人直播。
| 类型 | 变更说明 |
|---|---|
ExternalVideoFrame | 删除 color_space 字段;ColorSpace 枚举不再导出。 |
IVideoFrame | 删除 public_stream_id,新增 is_screen 和可选字段 stream_id。 |
LocalVideoSinkConfig | 新增本地视频帧回调配置,包含 position 和 pixel_format;position 使用新增的 LocalVideoSinkPosition。 |
RemoteVideoSinkConfig | 新增远端视频帧回调配置,包含 pixel_format、apply_rotation 和 mirror_type;后两个字段分别使用新增的 VideoApplyRotation 和 VideoSinkMirrorType。 |
VideoEncoderConfig | 新增可选字段 key_frame_interval_ms,单位为毫秒,默认值为 0,表示由编码器自行决定。 |
StreamMixingEvent 替换为 MixedStreamTaskEvent,事件值重新整理:
| 3.60.1 枚举值 | 数值 |
|---|---|
kMixedStreamTaskEventStartSuccess | 1 |
kMixedStreamTaskEventStartFailed | 2 |
kMixedStreamTaskEventUpdateSuccess | 3 |
kMixedStreamTaskEventUpdateFailed | 4 |
kMixedStreamTaskEventStopSuccess | 5 |
kMixedStreamTaskEventStopFailed | 6 |
kMixedStreamTaskEventWarning | 7 |
IMixedStreamConfig 新增 push_target_type、push_wtn_stream_id、layout_mode 和 interpolation_mode。其中,push_target_type 用于选择 CDN 或 WTN;向 WTN 推流时,可通过其余字段设置 WTN 流 ID、布局模式和补帧模式。补帧模式使用新增的 InterpolationMode。
MixedStreamLayoutRegionConfig.region_id 更名为 user_id;布局坐标 location_x、location_y、width、height 从归一化比例改为像素值;新增 source_crop,仅用于 WTN 源视频裁剪。
SingleStreamPushEvent 替换为 SingleStreamTaskEvent:
| 3.60.1 枚举值 | 数值 |
|---|---|
kSingleStreamTaskEventStartSuccess | 1 |
kSingleStreamTaskEventStartFailed | 2 |
kSingleStreamTaskEventStopSuccess | 3 |
kSingleStreamTaskEventStopFailed | 4 |
kSingleStreamTaskEventWarning | 5 |
PushSingleStreamParam 新增 dest_info、dest_info_size 和 push_type,并新增 DestInfo、SingleStreamPushType 类型,用于配置转推到 RTC 房间或 CDN。
| 类型 | 新增字段 |
|---|---|
LocalAudioStats | encode_frame_rate |
RemoteAudioStats | decode_frame_rate、is_muted |
RemoteVideoStats | cap_to_render_delay、av_sync_diff_ms、is_muted |
SubscribeState 的旧含义迁移到 StreamSubscribeState;新的 SubscribeState 仅表示已订阅或已取消订阅。新增 PublishState、PublishStateChangeReason 和 SubscribeStateChangeReason。EngineConfig、StreamInfo、VideoSimulcastMode、SnapshotErrorCode、AVSyncEvent、MixedStreamTaskInfo、MixedStreamPushTargetType、WTNSubscribeState 和 WTNSubscribeStateChangeReason。StreamSycnInfoConfig 修正为 StreamSyncInfoConfig,旧拼写不再导出。StreamSyncInfoConfig 删除 stream_index 字段。LocalAudioPropertiesInfo 删除 stream_index 字段;RemoteAudioPropertiesInfo 删除 stream_key,新增 stream_id 和 stream_info。AudioFrameCallbackMethod 新增 kCaptureMixed,对应麦克风采集音频与 MediaPlayer、EffectPlayer 播放音频的混音数据回调 onCaptureMixedAudioFrame。onFaceDetectResult 从传入单个 FaceDetectResult 对象,改为依次传入 detect_result、face_count、rect、image_width、image_height 和 frame_timestamp_us。| 变更 | 3.58.1 | 3.60.1 |
|---|---|---|
| 拼写修正 | kWarningCodePublishStreamForbiden = -2009 | kWarningCodePublishStreamForbidden = -2009 |
| 新增 | / | kWarningCodeSubscribeStreamForbidden = -2010 |
PublicStreamErrorCode 已删除。发布 WTN 流的任务结果通过 onMixedStreamEvent 返回,并使用 MixedStreamTaskErrorCode;订阅 WTN 流的状态和原因分别通过 WTNSubscribeState 和 WTNSubscribeStateChangeReason 返回。旧公共流错误码与新枚举的语义并非一一对应,升级时应按新的发布任务事件和订阅状态回调分别处理。
StreamMixingErrorCode 替换为 MixedStreamTaskErrorCode。新枚举的有效错误码如下:
| 错误码 | 数值 |
|---|---|
kMixedStreamTaskErrorCodeOK | 0 |
kMixedStreamTaskErrorCodeTimeout | 1091 |
kMixedStreamTaskErrorCodeInvalidParamByServer | 1092 |
kMixedStreamTaskErrorCodeSubTimeoutByServer | 1093 |
kMixedStreamTaskErrorCodeInvalidStateByServer | 1094 |
kMixedStreamTaskErrorCodeAuthenticationByCDN | 1095 |
kMixedStreamTaskErrorCodeUnKnownByServer | 1096 |
kMixedStreamTaskErrorCodeSignalRequestTimeout | 1097 |
kMixedStreamTaskErrorCodeMixImageFailed | 1098 |
kMixedStreamTaskErrorCodePushWTNFailed | 1195 |
单流转推使用新增的 SingleStreamTaskErrorCode。除 0 和 1090~1097 外,Electron 3.60.1 还增加:
| 错误码 | 数值 | 说明 |
|---|---|---|
kSingleStreamTaskErrorCodePushToCDN | 1098 | 转推到 CDN 失败。 |
kSingleStreamTaskErrorCodeCountOverLimit | 1099 | 超过单流转推任务数限制。 |
ReturnStatus 新增 kReturnStatusAudioDeviceProcessNotExist = -110、kReturnStatusAudioDeviceSpecifyingProcessUnsupport = -111、kReturnStatusAecSceneError = -302 和 kReturnStatusAecTypeWarning = -303。MediaDeviceWarning 新增 kMediaDeviceWarningRecordingAllProcess = 29 和 kMediaDeviceWarningRecordingAllProcessFailed = 30。除前述模块中的替代接口外,3.60.1 还新增以下能力:
| 类别 | 新增接口或回调 | 说明 |
|---|---|---|
| 房间 | getCallId、setLiveMode、setStreamExtraInfo、onRoomStreamExtraInfoUpdate | 获取通话 ID、管理直播模式和流附加信息。 |
| 屏幕音频 | setScreenCaptureVolume、muteScreenAudioCapture | 单独控制屏幕音频采集音量和静音。 |
| 视频 | requestRemoteVideoKeyFrame | 在手动订阅场景下请求指定远端视频流的关键帧,主要用于自定义解码失败后的恢复。 |
| 音画同步 | onAVSyncEvent | 调用 setMultiDeviceAVSync 后发生音画同步错误时,返回房间 ID、用户 ID 和 AVSyncEvent。 |
| 截图 | takeLocalSnapshotToFile、takeRemoteSnapshotToFile、onLocalSnapshotTakenToFile、onRemoteSnapshotTakenToFile | 将截图保存为本地文件并返回结果。 |
| WTN | getWTNStream 及 RTCWTNStream 的订阅、渲染、音量接口和回调 | 替代旧公共流播放能力。 |
| 直播 SEI | sendLivePushSEIMessage | 在单人直播场景发送 Key-Value 格式的 SEI 数据。 |
| 音频帧 | onCaptureMixedAudioFrame | 获取麦克风与播放器混音后的音频帧。 |
| 播放器 | onMediaPlayerEvent | 接收 RTCMediaPlayer 事件。 |
| License | onLicenseQuotaExceeded | AI 音视频互动 License 配额用尽时触发。收到回调后应及时续费,并离开房间、销毁 SDK;续费成功后重新加入房间。 |
| 类别 | 已删除接口或回调 | 替代方式 |
|---|---|---|
| 引擎 | createRTCVideo、destroyRTCVideo | createRTCEngine、destroyRTCEngine |
| 错误描述 | getErrorDescription | 无替代接口。 |
| 视频编码 | setMaxVideoEncoderConfig | 使用 setVideoEncoderConfig。 |
| 屏幕流 | publishScreen、unpublishScreen、subscribeScreen、unsubscribeScreen、setupLocalScreen、removeLocalScreen、setupRemoteScreen、removeRemoteScreen、setScreenVideoEncoderConfig | 使用普通流的发布、订阅、渲染和编码接口。 |
| 公共流 | startPushPublicStream、updatePublicStreamParam、stopPushPublicStream、startPlayPublicStream、stopPlayPublicStream、setupPublicStreamVideo、removePublicStreamVideo、setPublicStreamVideoSink、unsetPublicStreamVideoSink、setPublicStreamAudioPlaybackVolume | 使用合流转推接口和 RTCWTNStream。 |
| 转推 | startLiveTranscoding、updateLiveTranscoding、stopLiveTranscoding、startPushMixedStreamToCDN、updatePushMixedStreamToCDN、startPushSingleStreamToCDN、stopPushStreamToCDN | 使用 start/update/stopPushMixedStream 或 start/stopPushSingleStream。 |
| 音频混音 | RTCEngine 中的 *AudioMixing* 系列接口与回调 | 使用 RTCMediaPlayer 或 RTCAudioEffectPlayer。 |
| 空间音频 | updateSpatialPosition、updateSelfOrientation、updateListenerPosition、updateListenerOrientation | 使用 updateSelfPosition 和 updateRemotePosition。 |
| 音频场景 | setAudioScenario、setAudioScene | 无直接替代接口。 |
| 设备列表 | enableFilterSilentDevice | 如需过滤无声设备,请联系技术支持。 |
| 代理回调 | onHttpProxyState、onHttpsProxyState、onSocks5ProxyState | 使用 onLocalProxyStateChanged。 |
| 原始视频帧回调 | onLocalScreenFrame、onRemoteScreenFrame、onPublicStreamVideoFrame | 屏幕流使用统一的视频 Sink;WTN 视频帧使用 onWTNVideoFrame。 |
| 旧流和批量控制类型 | RemoteStreamKey、PauseResumeControlMediaType | 使用 stream_id、StreamInfo 以及按音频和视频拆分的批量控制接口。 |
| 屏幕编码类型 | ScreenVideoEncoderConfig、ScreenVideoEncodePreference | 使用 VideoEncoderConfig 和 VideoEncodePreference。 |
| 公共流类型 | IPublicStreamParam、PublicStreamAudioParam、PublicStreamVideoParam、PublicStreamLayoutRegion、PublicStreamErrorCode、PublicStreamRenderMode | 发布改用 IMixedStreamConfig 及合流任务类型;订阅和渲染改用 WTN 类型。 |
| 旧转码类型 | ITranscoderParam、TranscoderAudioParam、TranscoderVideoParam、TranscoderLayoutRegion、TranscoderLayoutRegionDataParam、TranscoderLayoutRegionType、TranscoderAudioCodecProfile、TranscoderAudioCodecType、TranscoderVideoCodecType、StreamMixingType | 使用 IMixedStreamConfig 及 MixedStream* 系列配置和枚举。 |
升级后,请重点检查所有依赖 user_id、room_id、StreamIndex 或 RemoteStreamKey 定位流的代码,并改为保存发布回调返回的 stream_id。同时检查 WTN、转推、混音和屏幕共享代码是否仍调用已删除接口。
| 序号 | 变更详情 | 功能模块 | 变更前回调 | 变更后回调 | 说明 |
|---|---|---|---|---|---|
| 1 | 参数变更 | 消息 | onLogout() => void | onLogout(reason: LogoutReason) => void | 在 onLogout 回调上新增 reason 参数,区分用户主动/被动登出。具体参数类型参看 LogoutReason。 |
| 序号 | 变更详情 | 功能模块 | 改动的数据类型 | 说明 |
|---|---|---|---|---|
| 1 | 成员变量新增 | 字幕翻译服务 | SubtitleMessage | 在字幕内容回调 onSubtitleMessageReceived 的参数 SubtitleMessage 中新增成员变量 language 和 mode,可用于同时收到字幕原文和字幕译文。 |
| 2 | 成员变量变更 | CDN 推流 | MixedStreamLayoutRegionConfig | 转推直播单个用户画面由设置相对于整体画面的归一化比例变更为可设置像素绝对值。 |
| 3 | 成员变量新增 | 音频管理 | AudioPropertiesInfo | 新增变量 voicePitch 返回本地用户的人声基频。 |
| 4 | 成员变量新增 | 引擎管理 | LogConfig | 新增变量 log_filename_prefix 用于自定义日志文件前缀。 |
该版本对所有不规范的枚举值和成员变量名进行了统一修复,对齐 Native 端名称,提升代码规范度和易用性。
| 变更对象 | 3.54 及之前版本 | 3.57 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 变更对象 | 3.54 及之前版本 | 3.57 |
|---|---|---|
|
|
|
|
|
|
|
|
|
ScreenCaptureSourceInfo | * primaryMonitor | * primary_monitor |
|
|
|
|
|
|
|
|
|
MixedStreamVideoConfig | enable_Bframe | enable_bframe |
|
|
|
以下表格中的错误码发生了变化,你需要进行相应的处理:
| 变更详情 | 错误码 | 备注 |
|---|---|---|
名称变更 | AudioRecordingErrorCode
| 变更为:
|
名称变更 | StreamMixingErrorCode
| 变更为:
|
该版本为全部 API 增加返回值,通过返回值可以明确发现失败的 API 调用,定位失败原因。具体返回值的含义参看各 API 注释。
| 变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 说明 |
|---|---|---|---|---|
拆分 | 音视频传输 | setPublicStreamVideoSink | 拆分为两个方法 绑定:setPublicStreamVideoSink 解绑:unsetPublicStreamVideoSink | |
行为变更 | 音频管理 |
| 等待超时后返回空列表,超时时间默认为 10 s | |
| 行为变更 | 视频管理 | enumerateVideoCaptureDevices | 等待超时后返回空列表,超时时间默认为 10 s | |
参数变更 | 引擎管理 | createRTCVideo删除了入参 document_path。 使用 setLogConfig 指定日志相关配置。 | ||
混音相关的方法从 | 混音 |
|
| 一般来说,对于短时间的音效(比如小于 20s),可以使用音效类;对于较长的音频或 PCM 数据,可以使用音乐类。 |
| 变更详情 | 数据类型 | 说明 |
|---|---|---|
| 参数变更 | IAudioFrame | 变量 type 名称变更为 frame_type |
| 类型变更 | format | 类型由 number 变更为枚举类 VideoPixelFormat |
| 参数增删 | IDataFrame | 删除无意义字段 u32_data_size |
| 参数增删 | IPublicStreamParam | 增加参数 bg_color |
| 变更详情 | 错误码 | 备注 |
|---|---|---|
| 枚举值增删 | ErrorCode | 删除枚举值:kErrorCodeOverScreenPublishLimit = -1081、kErrorCodeOverVideoPublishLimit = -1082 |
附:混音相关的新旧接口对应表
| 接口分类 | 接口用途 | 废弃类/接口 | 新类/接口(音效 RTCAudioEffectPlayer) | 新类/接口(音乐 RTCMediaPlayer) | 备注 |
|---|---|---|---|---|---|
混音主调接口 | 将音效文件加载至内存 |
|
|
| |
播放/停止/暂停/恢复 |
|
|
| ||
获取/指定位置/时长 |
|
|
| ||
获取/指定音量 |
|
|
| ||
| 调整音调 | setAudioMixingPitch | NA | setAudioPitch | ||
| 设置声道模式 | setAudioMixingDualMonoMode | NA | setAudioDualMonoMode | ||
获取/设置音轨数 |
| NA |
|
| |
| 设置播放速度 | setAudioMixingPlaybackSpeed | NA | setPlaybackSpeed | ||
| 设置播放进度回调间隔 | setAudioMixingProgressInterval | NA | setProgressInterval | ||
| 设置响度 | setAudioMixingLoudness | NA | setLoudness | ||
混音回调接口 | 播放状态回调 |
|
|
|
| 变更详情 | 功能模块 | 方法 | 说明 |
|---|---|---|---|
| 参数变更 | 引擎管理 | feedback | 参数数据类型变更 |
| 接口名称变更 | CDN 推流 | startLiveTranscoding | 用 startPushMixedStreamToCDN 替代 |
stopLiveTranscoding | 用 stopPushStreamToCDN 替代 | ||
updateLiveTranscoding | 用 updatePushMixedStreamToCDN 替代 | ||
接口废弃 | 高级功能 |
| 用 updateSelfPosition() 替代,新接口支持本地用户同时设置自己的发声位置和发声朝向。 |
| 用 updateRemotePosition()替代,新接口支持本地用户设置远端用户的发声位置和发声朝向。 |
| 变更详情 | 方法 | 说明 |
|---|---|---|
参数变更 |
| 参数 拆分为:
|
| 变更详情 | 错误码 | 说明 |
|---|---|---|
枚举值变更 | PublicStreamErrorCode |
|
| ErrorCode | 新增错误码枚举值:kErrorCodeJoinRoomRoomForbidden=-1025 和 kErrorCodeJoinRoomUserForbidden=-1026。当服务端在指定房间封禁指定用户,而此用户加入房间失败,或从房间中被踢出时收到。 | |
废弃枚举值:kErrorCodeOverScreenPublishLimit=-1081,用 kErrorCodeOverStreamPublishLimit=-1080 代替。 |
接口类名称由 veRTCVideo 变更为 RTCVideo,veRTCRoom 变更为 RTCRoom。
| 变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
返回值变更 | 房间管理 |
| joinRoom 返回值含义如下:
| 返回值为 |
| 网络管理 | stopEchoTest 返回 -1 代表失败,未开启回路检测。 | stopEchoTest 返回 -3 代表失败,未开启回路检测 | ||
引擎管理 |
| setBusinessId 返回值含义如下:
| ||
拆分 | 视频管理 | registerFaceDetectionObserver |
| 解除人脸识别与视频特效之间的耦合,提升接口易用性。 |
废弃 | 范围语音 | registerRangeAudioObserver onRangeAudioInfor | None | 此前,在手动订阅的场景下,如果你希望使用范围语音功能,你必须注册相关回调获取的衰减系数,设定音量。 自此版本起,无论是手动订阅还是自动订阅,衰减效果都由 SDK 实现,无需使用此接口。 |
| 替代 | 音频管理 | muteAudioPlayback | setPlaybackVolume | 将本地音量设置为 0 可静音本地音频播放 |
| 参数类型变更 | 屏幕共享 | public setVideoEncoderConfig(solutions: VideoEncoderConfig[]): number | setScreenVideoEncoderConfig(screenSolution: VideoEncoderConfig): any; | 参数类型变更为新增的 VideoEncoderConfig |
拆分 | 音视频处理 |
| initCVResource | |
enableEffect |
| |||
| updateNode | updateEffectNode | |||
setBackgroundSticker |
| |||
| 参数变更 | 消息 | public sendSEIMessage(stream_index: number, message: Uint8Array, repeat_count: number) => number | public sendSEIMessage(stream_index: number,message: Uint8Array,repeat_count: number,mode: SEICountPerFrame): number | 支持 SEI 多发模式,即在 1 帧间隔内多次发送 SEI 数据时,多个 SEI 随下个视频帧同时发送。 |
以下表格中的回调发生了变化。你需要在工程文件中找到该回调,并进行相关修改:
| 变更详情 | 功能模块 | 变动前方法 | 变动后方法 | 备注 |
|---|---|---|---|---|
| 参数变更 | 消息 | onPublicStreamSEIMessageReceived(public_stream_id: string, message: string) => void | onPublicStreamSEIMessageReceived(public_stream_id: string, source_type: SEIMessageSourceType) => void | 新增参数 source_type |
| 接口废弃 | 音频管理 | onRemoteAudioStateChanged 和 onRemoteVideoStateChanged | / | |
替代 | CDN 推流 |
|
|
| 变更详情 | 数据类型 | 备注 |
|---|---|---|
| 成员变量变更 | FaceDetectResult | 新增成员变量:frame_timestamp_us |
| 成员变量变更 | TranscoderAudioParam | 新增成员变量:audio_codec_type |
成员变量变更 | TranscoderVideoParam | 新增成员变量:bFrame 删除了:lowLatency 名称变更:video_codec_profile 变更为 video_codec_type,类型由 TranscoderVideoCodecProfile 改为 TranscoderVideoCodecType |
成员变量变更 | TranscoderLayoutRegion | 新增成员变量: corner_radius type data data_param spatial_position |
成员变量变更,名称变更 | ITranscoderParam | 类型名称由 TranscoderParam 改为 ITranscoderParam 新增成员变量:expected_mix_type: StreamMixingType |
枚举值变更 | TranscoderAudioCodecProfile | 删除了 kByteAACProfileMain kByteAACProfileHEv1 对应的数值由 2 变更为 1 kByteAACProfileHEv2 对应的数值由 3 变更为 2 |
| 配置变更 | RoomProfileType | 房间属性的默认值 kRoomProfileTypeCommunication = 0,对应的由 kRoomProfileTypeChatRoom = 6 变更为 kRoomProfileTypeMeeting = 16。 |
| 新增 | PublicStreamErrorCode | onPlayPublicStreamResult 和 onPushPublicStreamResult 中的 errorCode 参数类型由 int 改为 PublicStreamErrorCode |
| 参数数据结构改动 | AudioPropertiesConfig | 数据结构中,新增参数 smooth |
| 取值范围拓展 | TranscoderLayoutRegion 中,width 和 height | 取值范围由 (0.0, 1.0] 拓展为 [0.0, 1.0]。 |