服务端网关 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 | 配置与声网私有媒体服务器接入模块的连接。 |