服务端网关 SDK C++ API 参考
服务端网关 SDK 部署在服务端,可与集成了 RTC SDK 的客户端通过 SD-RTN™ 进行实时通信,实现向客户端发送音视频流和从客户端接收音视频流的功能。
IAgoraService
IAgoraService类是服务端网关 SDK 的入口。
方法 | 描述 |
---|---|
createAgoraService | 创建IAgoraService 对象。 |
initialize | 初始化IAgoraService 对象。 |
release | 销毁IAgoraService 对象。 |
createRtcConnection | 创建一个RtcConnection 对象。 |
createRtmpConnection | 创建一个IRtmpConnection 对象。 |
createLocalAudioTrack | 创建本地音频轨道对象。 |
createCustomAudioTrack1 | 创建本地音频轨道对象,包含一个发送编码音频数据的音频源。 |
createCustomAudioTrack2 | 创建本地音频轨道对象,包含一个发送 PCM 音频数据的音频源。 |
createMediaNodeFactory | 创建一个媒体节点工厂对象。 |
createCustomVideoTrack1 | 创建本地视频轨道对象,包含一个发送 YUV 格式视频数据的视频源。 |
createCustomVideoTrack2 | 创建本地视频轨道对象,包含一个发送编码视频数据的视频源。 |
createMixedVideoTrack | 创建本地视频轨道对象,包含一个合图器。 |
getAgoraParameter | 获取 SDK 全局的IAgoraParameter 对象。 |
IRtcConnection
你可以通过IRtcConnection类与 Agora RTC 频道建立连接。
方法 | 描述 |
---|---|
connect | 连接 RTC 频道。 |
disconnect | 与 RTC 频道断开连接。 |
startLastmileProbeTest | 开始通话前网络质量探测。 |
stopLastmileProbeTest | 停止通话前网络质量探测。 |
renewToken | 更新 Token。 |
getConnectionInfo | 获取连接信息。 |
getLocalUser | 获取本地用户信息。 |
getRemoteUsers | 获取频道中全部远端用户的信息。 |
getUserInfo | 获取频道中指定远端用户的信息。 |
registerObserver | 注册 RTC 连接 observer。 |
unregisterObserver | 销毁网络状态 observer。 |
getConnId | 获取连接 ID。 |
getTransportStats | 获取 RTC 连接的传输状态。 |
getAgoraParameter | 获取某个 Connection 中IAgoraParameter 对象。 |
createDataStream | 创建数据流。 |
sendStreamMessage | 发送数据流消息。 |
与 Agora 频道的连接是异步操作。SDK 可以通过 RTC 连接监听器监听本地和远端用户的连接状态。
事件 | 描述 |
---|---|
onConnected | SDK 与频道的连接状态变更为CONNECTION_STATE_CONNECTED (3) 时触发。 |
onDisconnected | SDK 与频道的连接状态变更为CONNECTION_STATE_DISCONNECTED (1) 时触发。 |
onReconnecting | SDK 与频道的连接状态变更为CONNECTION_STATE_RECONNECTING (4) 时触发。 |
onConnectionLost | SDK 与频道断开连接时触发。 |
onLastmileQuality | 报告 last-mile 网络质量。 |
onLastmileProbeResult | 通话前网络上下行 Last mile 质量探测报告回调。 |
onTokenPrivilegeWillExpire | Token 服务将在 30s 内过期回调。 |
onTokenPrivilegeDidExpire | Token 已过期回调。 |
onConnectionFailure | SDK 与频道的连接状态变更为CONNECTION_STATE_FAILED (5) 时触发。 |
onUserJoined | 远端用户加入频道时触发。 |
onUserLeft | 远端用户离开频道时触发。 |
onTransportStats | 报告连接的传输统计信息。 |
onChangeRoleSuccess | 本地用户角色变更时触发。 |
onChangeRoleFailure | 本地用户角色切换失败时触发。 |
onUserNetworkQuality | 通话中每个用户的网络上下行 last mile 质量报告回调。 |
onError | 发生错误回调。 |
ILocalUser
与 RTC 频道连接之后,每个 RTC 连接都有自己对应的用户。你可以通过getLocalUser方法获取本地用户对象。
每个本地用户有两个用户角色:主播(可以发送和接收媒体流)和观众(只能接收媒体流)。
方法 | 描述 |
---|---|
setUserRole | 设置用户角色。 |
getUserRole | 获取用户角色。 |
setAudioEncoderConfiguration | 设置音频编码。 |
publishAudio | 将本地音频轨道发送到频道。 |
unpublishAudio | 停止将本地音频轨道发送到频道。 |
publishVideo | 将本地视频轨道发送到频道。 |
unpublishVideo | 停止将本地视频轨道发送到频道。 |
subscribeAudio | 订阅频道中特定的远端用户发送的音频流。 |
subscribeAllAudio | 订阅频道中全部远端用户发送的音频流。 |
unsubscribeAudio | 停止订阅频道中特定的远端用户发送的音频流。 |
unsubscribeAllAudio | 停止订阅频道中全部远端用户发送的音频流。 |
setPlaybackAudioFrameBeforeMixingParameters | 设置onPlaybackAudioFrameBeforeMixing 报告的音频数据格式。 |
registerAudioFrameObserver | 注册音频帧 observer。 |
unregisterAudioFrameObserver | 取消注册音频帧 observer。 |
subscribeVideo | 订阅频道中指定远端用户发送的视频流。 |
subscribeAllVideo | 订阅频道中全部远端用户发送的视频流。 |
unsubscribeVideo | 停止订阅频道中特定的远端用户发送的音频流。 |
unsubscribeAllVideo | 停止订阅频道中全部远端用户发送的视频流。 |
registerLocalUserObserver | 注册本地用户 observer。 |
unregisterLocalUserObserver | 销毁本地用户 observer。 |
事件 | 描述 |
---|---|
onAudioTrackPublishSuccess | 在第一个本地音频包发送时触发,表明本地音频轨道已成功发布。 |
onLocalAudioTrackStateChanged | 在本地音频轨道状态变化时触发。 |
onLocalAudioTrackStatistics | 报告本地音频轨道状态。 |
onRemoteAudioTrackStatistics | 报告远端音频轨道状态。 |
onUserAudioTrackSubscribed | 成功订阅远端用户发送的音频流时触发。 |
onUserAudioTrackStateChanged | 在远端音频轨道状态变化时触发。 |
onVideoTrackPublishSuccess | 对远端用户视频订阅状态变更时触发。 |
onLocalVideoTrackStateChanged | 本地视频轨道状态改变时触发。 |
onLocalVideoTrackStatistics | 报告本地视频轨道的统计信息。 |
onUserVideoTrackSubscribed | 成功订阅远端用户发送的视频流时触发。 |
onUserVideoTrackStateChanged | 在远端视频轨道状态变更时触发。 |
onRemoteVideoTrackStatistics | 报告远端视频轨道的统计信息。 |
onStreamMessage | 接收到数据流消息的回调。 |
ILocalAudioTrack
你可以通过createCustomAudioTrack方法创建本地音频轨道。
创建完成之后,你可以通过ILocalUser::publishAudio发布一个或多个本地音频轨道。
方法 | 描述 |
---|---|
setEnabled | 开启或关闭本地音频轨道。 |
isEnabled | 获取本地音频轨道的统计信息。 |
getState | 获取本地音频状态。 |
GetStats | 获取本地音频轨道的统计信息。 |
adjustPublishVolume | 调整音频发布音量。 |
getPublishVolume | 获取音频发布音量。 |
setMaxBufferedAudioFrameNumber | 设置音频发送缓冲区的最大容量。 |
ClearSenderBuffer | 清除当前音频发送缓冲区。 |
setAudioFrameSendDelayMs | 设置音频发送缓冲区允许发送的最小数据时长。 |
IRemoteAudioTrack
你可以通过onUserAudioTrackSubscribed回调获取远端音频轨道。
方法 | 描述 |
---|---|
getStatistics | 获取远端音频状态。 |
getState | 获取远端音频统计信息。 |
ILocalVideoTrack
你可以通过createCustomVideoTrack创建本地视频轨道。
你可以通过ILocalUser::publishVideo发送一个或多个视频轨道。每个视频轨道都对应一条视频流。你也可以同时发送多条视频流。
方法 | 描述 |
---|---|
setEnabled | 开启或关闭本地视频轨道。 |
setVideoEncoderConfiguration | 设置视频编码属性。 |
getState | 获取本地视频流状态。 |
IRemoteVideoTrack
你可以通过onUserVideoTrackSubscribed回调获取远端视频轨道。
方法 | 描述 |
---|---|
getState | 获取远端视频轨道的状态。 |
getTrackInfo | 获取远端视频轨道的信息。 |
registerVideoEncodedImageReceiver | 注册IVideoEncodedImageReceiver 对象。 |
unregisterVideoEncodedImageReceiver | 销毁IVideoEncodedImageReceiver 对象。 |
addRenderer | 将视频接收模块加入视频轨道,用于接收视频帧。 |
IMediaNodeFactory
使用IMediaNodeFactory类为音频和视频轨道创建音频或视频处理节点,例如音视频发送模块、接收模块等。
方法 | 描述 |
---|---|
createAudioPcmDataSender | 创建一个 PCM 数据发送模块。 |
createAudioEncodedFrameSender | 创建一个已编码音频数据发送模块。 |
createVideoFrameSender | 创建一个 YUV 视频帧发送模块。 |
createVideoEncodedImageSender | 创建一个已编码视频发送模块。 |
IRtmpConnection
你可以通过IRtmpConnection类管理 SDK 与 CDN 之间的连接。
方法 | 描述 |
---|---|
registerObserver | 注册 CDN 连接 observer。 |
connect | 连接 CDN。 |
disconnect | 与 CDN 断开连接。 |
getConnectionInfo | 获取连接信息。 |
getRtmpLocalUser | 获取本地用户对象的指针。 |
unregisterObserver | 销毁 CDN 连接 observer。 |
事件 | 描述 |
---|---|
onConnected | SDK 与 CDN 的连接状态变更为STATE_CONNECTED(3) 时触发。 |
onDisconnected | SDK 与 CDN 的连接状态变更为STATE_DISCONNECTED(1) 时触发。 |
onReconnecting | SDK 与 CDN 的连接状态变更为STATE_RECONNECTING(4) 时触发。 |
onReconnected | SDK 与 CDN 的连接状态变更为STATE_RECONNECTED(6) 时触发。 |
onConnectionFailure | SDK 与 CDN 的连接状态变更为STATE_FAILED(5) 时触发。 |
onTransferStatistics | CDN 推流统计数据回调。 |
IRtmpLocalUser
每个 CDN 连接都有自己对应的用户。你可以通过getRtmpLocalUser方法获取本地用户对象。
方法 | 描述 |
---|---|
setAudioStreamConfiguration | 设置主播端直接向 CDN 推流时的音频编码属性。 |
setVideoStreamConfiguration | 设置主播端直接向 CDN 推流时的视频编码属性。 |
adjustRecordingSignalVolume | 调节主播端直接向 CDN 推流时的音频采集信号音量。 |
getRecordingSignalVolume | 获取主播端直接向 CDN 推流时的音频采集信号音量。 |
setAudioEnabled | 在 CDN 推流中开启或关闭本地音频。 |
adjustVideoBitrate | 调节主播端直接向 CDN 推流时的视频编码码率。 |
setVideoEnabled | 在 CDN 推流中开启或关闭本地视频。 |
publishAudio | 主播端开始直接向 CDN 推送本地音频流。 |
unpublishAudio | 主播端停止直接向 CDN 推送本地音频流。 |
publishVideo | 主播端开始直接向 CDN 推送本地视频流。 |
unpublishVideo | 主播端停止直接向 CDN 推送本地视频流。 |
registerRtmpUserObserver | 注册 CDN 推流用户观测器。 |
unregisteRtmpUserObserver | 注销 CDN 推流用户观测器。 |
registerAudioFrameObserver | 注册音频观测器。 |
unregisterAudioFrameObserver | 注销音频观测器。 |
registerVideoFrameObserver | 注册视频观测器。 |
unregisterVideoFrameObserver | 注销视频观测器。 |
事件 | 描述 |
---|---|
onAudioTrackPublishSuccess | 推送音频帧成功回调。 |
onAudioTrackPublicationFailure | 推送音频帧失败回调。 |
onVideoTrackPublishSuccess | 推送视频帧成功回调。 |
onVideoTrackPublicationFailure | 推送视频帧失败回调。 |
音频发送模块
方法 | 描述 |
---|---|
sendAudioPcmData | 将 PCM 格式的音频数据发送到本地音频轨道。 |
sendEncodedAudioFrame | 将已编码的音频帧发送到本地音频轨道。 |
视频发送模块
方法 | 描述 |
---|---|
sendVideoFrame | 将 YUV 格式的视频帧发送到视频轨道。 |
sendEncodedVideoImage | 将已编码的视频帧发送到视频轨道。 |
IConfigCenter
SDK 的其他配置。
方法 | 描述 |
---|---|
SetLocalAccessPoint | 配置与声网私有媒体服务器接入模块的连接。 |