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

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

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=-1025 和 ByteRTCErrorCodeJoinRoomUserForbidden=-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`

优化屏幕共享接口的行为

名称和参数变更

音视频处理

  • 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; }
废弃音频管理onLocalAudioStateChanged 和 onLocalVideoStateChanged使用 onAudioDeviceStateChanged 和 onVideoDeviceStateChanged 代替
类型变更
变更详情数据类型备注
取值范围拓展TranscoderLayoutRegion中,width 和 height取值范围由 (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。
新增PublicStreamErrorCodeonPlayPublicStreamResult 和 onPushPublicStreamResult 中的 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 即可停止播放本地收到的音频流