You need to enable JavaScript to run this app.
导航

Linux 客户端升级指南

最近更新时间2024.02.26 10:57:45

首次发布时间2022.11.03 20:15:21

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

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

3.57

重要说明

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

    变更对象变更详情旧版示例新版示例
    枚举值改为以 “k” 开头,“k+类名+值名”,大小写混合UserWorkerType 为例:
    • UserWorkerNormal = 0,
    • UserWorkerSupportSip = (1 << 0),
    • UserWorkerByteVc1Transcoder = (1 << 1),
    • UserWorkerNeedUserListAndCb = (1 << 2),
    • UserWorkerNeedStreamCallBack = (1 << 3),
    • UserWorkerAudioSelectionExemption = (1 << 4),
    UserWorkerType 为例:
    • kUserWorkerTypeNormal = 0,
    • kUserWorkerTypeSupportSip = (1 << 0),
    • kUserWorkerTypeByteVc1Transcoder = (1 << 1),
    • kUserWorkerTypeNeedUserListAndCb = (1 << 2),
    • kUserWorkerTypeNeedStreamCallBack = (1 << 3),
    • kUserWorkerTypeAudioSelectionExemption = (1 << 4),
    结构体成员改用下划线命名法RTCWatermarkConfig 为例:
    • visibleInPreview
    • positionInLandscapeMode
    • positionInPortraitMode
    RTCWatermarkConfig 为例:
    • visible_in_preview
    • position_in_landscape_mode
    • position_in_portrait_mode

方法变更

变更详情功能模块废弃的类/接口替代的类/接口说明
删除主调类IRTCEngineIRTCVideo
废弃自定义流处理setLocalVideoSinksetLocalVideoRender原接口废弃,新接口支持回调采集后的视频帧。新接口使用默认值时行为与原接口一致。
废弃自定义流处理setRemoteVideoSinksetRemoteVideoRender原接口废弃,新接口支持将远端流镜像渲染、将旋转角旋转为 0 度。新接口使用默认值时行为与原接口一致。
使用范围拓展视频处理setVideoDecoderConfigsetVideoDecoderConfig旧版接口仅支持在手动订阅时使用,新增支持在自动订阅时使用。

回调变更

变更详情功能模块废弃的类/接口替代的类/接口说明
删除主回调类IRTCEngineEventHandlerIRTCVideoEventHandler
参数变更消息virtual void onLogout()virtual void onLogout(LogoutReason reason)onLogout 回调上新增 reason 参数,区分用户主动/被动登出。

类型变更

变更详情功能模块改动的数据类型说明
枚举值名称变更视频管理RenderTargetType
  • kRenderTargetView 改为 kRenderTargetTypeView
  • kRenderTargetSurface 改为 kRenderTargetTypeSurface
  • 成员变量新增字幕翻译服务SubtitleMessage在字幕内容回调 onSubtitleMessageReceived 的参数 SubtitleMessage 中新增成员变量 languagemode,可用于同时收到字幕原文和字幕译文。
    类型名称变更消息USER_ONLINE_STATUS名称变更为 UserOnlineStatus

    错误码变更

    变更详情错误码说明
    枚举值增删UserMessageSendResult新增客户端向业务服务器发送消息失败错误码:
  • kUserMessageSendResultE2BSSendFailed = 17
  • kUserMessageSendResultE2BSReturnFailed = 18
  • 3.54

    重要说明

    1. 该版本 Linux 端新增音频编解码器插件、视频编解码器插件,详情参看按需集成插件文档。
    2. 该版本为全部 API 增加返回值,通过返回值可以明确发现失败的 API 调用,定位失败原因。具体返回值的含义参看各 API 注释。

    方法变更

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

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

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

    混音主调接口

    将音效文件加载至内存

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

    播放/停止/暂停/恢复

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

    获取/指定位置/时长

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

    获取/指定音量

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

    获取/设置音轨数

    • getAudioTrackCount
    • selectAudioTrack

    NA

    • getAudioTrackCount
    • selectAudioTrack

    Index 取值修改为从 0 开始

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

    播放外部音频源

    • enableAudioMixingFrame
    • disableAudioMixingFrame
    • pushAudioMixingFrame

    NA

    • openWithCustomSource
    • pushExternalAudioFrame

    混音回调接口

    播放状态回调

    onAudioMixingStateChanged

    • setEventHandler
    • onAudioEffectPlayerStateChanged
    • setEventHandler
    • onMediaPlayerStateChanged
    • onMediaPlayerPlayingProgress

    音频数据回调

    • registerAudioFileFrameObserver
    • onAudioFileFrame

    NA

    • IMediaPlayerAudioFrameObserver
    • onFrame

    3.52

    方法变更

    变更详情方法说明
    参数变更feedback参数数据类型变更

    回调变更

    变更详情方法说明

    参数变更

    onPublicStreamSEIMessageReceived

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

    错误码变更

    变更详情错误码说明

    枚举值变更

    PublicStreamErrorCode

    新增枚举值:

    • kPublicStreamErrorCodePullNoPushStream = 1300

    名称变更:

    • kPublicStreamOK = 0 更新为 kPublicStreamErrorCodeOK = 0

    • kPublicStreamPushInvalidParam = 1191 更新为 kPublicStreamErrorCodePushInvalidParam = 119

    • kPublicStreamPushInvalidStatus = 1192 更新为 kPublicStreamErrorCodePushInvalidStatus = 1192

    • kPublicStreamPushInternalError = 1193 更新为 kPublicStreamErrorCodePushInternalError = 1193

    • kPublicStreamPushFailed = 1195 更新为 kPublicStreamErrorCodePushFailed = 1195

    • kPublicStreamPushTimeout = 1196 更新为 kPublicStreamErrorCodePushTimeout = 1196

    ErrorCode

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

    废弃枚举值 kErrorCodeOverScreenPublishLimit=-1081,用 kErrorCodeOverStreamPublishLimit=-1080 代替。

    3.50

    头文件变更

    原 bytertc_common_defines.h 文件拆分为 bytertc_media_defines.h 及 bytertc_rts_defines.h

    方法变更

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

    拆分

    视频管理

    virtual int registerFaceDetectionObserver(IFaceDetectionObserver* observer, int interval_ms) = 0;

    • virtual int enableFaceDetection(IFaceDetectionObserver* observer, unsigned int interval_ms, const char* faceModelPath) = 0;
    • virtual int disableFaceDetection() = 0;

    解除人脸识别与视频特效之间的耦合,提升接口易用性。

    参数类型变更屏幕共享virtual int setScreenVideoEncoderConfig(const VideoEncoderConfig& screen_solution) = 0;virtual int setScreenVideoEncoderConfig(const ScreenVideoEncoderConfig& screen_solution) = 0;参数类型变更为新增的 ScreenVideoEncoderConfig

    行为变更

    屏幕共享

    • setVideoSourceType: 屏幕流默认为外部源
    • setScreenAudioSourceType: 当前设置为内部源时,且已开启了采集,调用该接口切换为外部源时,不会停止内部采集
    • startScreenVideoCapture: 当前为外部源时,调用本接口将自动切换为内部源,并开启采集
    • stopScreenVideoCapture: 当前为外部源时,调用本接口将关闭外部采集
    • setVideoSourceType: 屏幕流默认为内部源
    • setScreenAudioSourceType: 当前设置为内部源时,且已开启了采集,调用该接口切换为外部源时,自动停止内部采集
    • startScreenVideoCapture: 当前为外部源时,调用本接口失败,并触发 `onVideoDeviceWarning`
    • stopScreenVideoCapture: 当前为外部源时,调用本接口失败,并触发 `onVideoDeviceWarning`

    优化屏幕共享接口的行为

    废弃自定义流处理registerVideoFrameObserversetLocalVideoSinksetRemoteVideoSink 代替

    名称和参数变更

    音视频处理

    • virtual int checkLicense(void* androidContext, void* jnienv, const char* licensePath) = 0;
    • virtual void setAlgoModelPath(const char* modelPath) = 0;

    virtual int initCVResource(const char* license_file_path, const char* algo_model_dir) = 0;

    统一返回值

    virtual int enableEffect(bool enabled) = 0;

    • virtual int enableVideoEffect() = 0;
    • virtual int disableVideoEffect() = 0;
    virtual int updateNode(const char* nodePath, const char* nodeKey, float nodeValue) = 0;virtual int updateEffectNode(const char* effectNodePath, const char* nodeKey, float nodeValue) = 0;
    屏幕分享virtual bool pushScreenFrame(IVideoFrame* frame)virtual int pushScreenVideoFrame``(IVideoFrame* frame)
    参数变更消息virtual int sendSEIMessage(StreamIndex stream_index, const uint8_t* message, int length, int repeat_count) = 0;virtual int sendSEIMessage(StreamIndex stream_index, const uint8_t* message, int length, int repeat_count, SEICountPerFrame mode) = 0;支持 SEI 多发模式,即在 1 帧间隔内多次发送 SEI 数据时,多个 SEI 随下个视频帧同时发送。

    多个模块

    返回值类型变化,例如:

    • 旧方法——virtual void updateToken(const char* token) = 0;

    • 新方法——virtual int updateToken(const char* token) = 0;

    该版本中含此变更的方法包括:

    updateToken (返回值 void—>int)

    setRemoteVideoConfig (返回值 void—>int)

    subscribeStream (返回值 void—>int)

    unsubscribeStream (返回值 void—>int)

    subscribeScreen (返回值 void—>int)

    unsubscribeScreen (返回值 void—>int)

    pushExternalAudioFrame (返回值 bool—>int)

    pullExternalAudioFrame (返回值 bool—>int)

    pushExternalVideoFrame (返回值 bool—>int)

    setRemoteAudioPlaybackVolume (返回值 void—>int)

    pushExternalEncodedVideoFrame (返回值 bool—>int)

    setPublicStreamVideoSink (返回值 void—>int)

    enableSimulcastMode (返回值 int—>void)

    setPublishFallbackOption (返回值 int—>void)

    setSubscribeFallbackOption (返回值 int—>void)

    名称变更视频管理setRemoteStreamVideoCanvassetRemoteVideoCanvas
    CDN 推流onStreamMixingVideoFrameonMixingVideoFrame
    onStreamMixingAudioFrameonMixingAudioFrame
    onStreamMixingDataFrameonMixingDataFrame

    回调变更

    变更详情功能模块变动前方法变动后方法备注
    参数变更消息virtual void onPublicStreamSEIMessageReceived(const char* public_stream_id, const uint8_t* message, int message_length) { (void)public_stream_id; (void)message; (void)message_length; }virtual void onPublicStreamSEIMessageReceived(const char* public_stream_id, const uint8_t* message, int message_length, SEIMessageSourceType source_type) { (void)public_stream_id; (void)message; (void)message_length; (void)source_type; }

    类型变更

    变更详情数据类型备注
    取值范围拓展TranscoderLayoutRegion中,widthheight取值范围由 (0.0, 1.0] 拓展为 [0.0, 1.0]
    枚举值增删UserMessageSendResult新增枚举值:kUserMessageSendResultExceedQPS = 5
    RoomMessageSendResult新增枚举值:kRoomMessageSendResultExceedQPS = 5
    AudioProcessorMethod新增枚举值:kAudioFrameProcessorEarMonitor = 3
    成员变量变更FaceDetectResult新增成员变量:frame_timestamp_us

    ContentHint

    废弃屏幕共享内部采集的变量content_hint。可通过 VideoEncodePreference设置视频流编码偏好,通过ScreenVideoEncodePreference设置屏幕流编码偏好。

    AudioDeviceInfo

    增加成员变量 device_short_name[MAX_DEVICE_ID_LENGTH]

    ITranscoderParam新增成员变量:TranscoderClientMixParam
    变量类型变更空间音频功能中表示空间坐标的 position 的 变量 x, y, z 类型由 int 更改为 float提升球面立体声渲染效果。

    枚举值名称变更

    VideoSourceType

    枚举值名称增加前缀 k,更改后的枚举值如下:
    enum VideoSourceType {
    kVideoSourceTypeExternal = 0,
    kVideoSourceTypeInternal = 1,
    kVideoSourceTypeEncodedWithAutoSimulcast = 2,
    kVideoSourceTypeEncodedWithoutAutoSimulcast = 3,
    };

    配置变更RoomProfileType房间属性的默认值 kRoomProfileTypeCommunication = 0,对应的由 kRoomProfileTypeChatRoom = 6 变更为 kRoomProfileTypeMeeting = 16
    新增PublicStreamErrorCodeonPlayPublicStreamResultonPushPublicStreamResult 中的 errorCode 参数类型由 int 改为 PublicStreamErrorCode

    错误码变更

    变更详情错误码备注
    枚举值增删ErrorCode新增枚举值:kErrorCodeUserIDDifferent = -1014

    3.45.2

    方法变更

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

    变更详情功能模块
    方法
    备注
    参数数据结构改动音频管理virtual void enableAudioPropertiesReport(const AudioPropertiesConfig& config) = 0;数据结构中,新增参数:
  • AudioPropertiesMode
  • AudioReportMode
  • 3.45.1

    方法变更

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

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