与 RTC SDK 互通音视频数据
如果你的业务场景中既需要高质量的音视频传输,又需要易集成、低内存占用以及低功耗的特性,例如智能摄像头、智能门铃场景,声网推荐你同时使用 RTC SDK(v4.x)和 RTSA SDK。
下表展示 RTSA SDK 与 RTC SDK(v4.x)互通时支持的数据格式:
| SDK 类型 | RTSA SDK |
|---|---|
| RTC Native/三方框架 SDK(v4.x) |
|
| RTC Web SDK(v4.x) |
|
| RTC 小程序 SDK |
|
发送端和接收端只有设置的数据格式一致且符合上表,才可以实现互通。与 RTC SDK 互通时,RTSA SDK 的内置音频编解码器仅支持发送和接收单声道数据。声网建议你使用 16 KHz 采样率采集数据,以获得更好的播放效果。如果你采集的是双声道音频,需要先转化为单声道再进行编码。对于不同的音频编码格式,RTSA SDK 支持的采样率详见 API 参考。
本文介绍如何在 SDK 中设置音视频数据格式。
设置 RTSA SDK
音频
RTSA SDK 仅支持单声道音频数据,数据发送间隔为 20 ms。
-
如需发送和接收 AAC 音频数据,操作如下: 调用
agora_rtc_send_audio_data方法发送音频数据时,设置audio_frame_info_t.data_type为AUDIO_DATA_TYPE_AACLC或AUDIO_DATA_TYPE_HEAAC数据类型,及对应的数据大小。AAC 音频数据的大小需用户自行解析。 -
如需发送和接收 Opus、G722、G711 音频数据,操作如下:
- 调用
agora_rtc_join_channel方法加入 RTC 频道时,设置rtc_channel_options_t.audio_codec_opt.audio_codec_type为AUDIO_CODEC_TYPE_OPUS、AUDIO_CODEC_TYPE_G722、AUDIO_CODEC_TYPE_G711A或AUDIO_CODEC_TYPE_G711U编码格式,及对应的采样率。 - 调用
agora_rtc_send_audio_data方法发送音频数据时,设置audio_frame_info_t.data_type为AUDIO_DATA_TYPE_PCM数据类型,及对应的数据大小。
- 调用
下表展示了 Opus、G722、G711 音频数据推荐的采样率及对应的数据大小。
| 音频格式 | 采样率(Hz) | 音频数据大小(Byte) |
|---|---|---|
| G711 | 8000 | 320 |
| G722 | 16000 | 640 |
| OPUS | 16000 | 640 |
| OPUS | 48000 | 1920 |
视频
在 RTSA SDK 中,默认发送和接收 H.264 视频数据。
如需发送和接收 JPEG 视频数据,调用 agora_rtc_send_video_data 方法发送视频数据时,设置 video_frame_info_t.data_type 为 VIDEO_DATA_TYPE_GENERIC_JPEG。
设置 RTC Native/第三方框架 SDK(v4.x)
音频
在 RTC Native/第三方框架 SDK(v4.x)中,默认发送和接收 Opus 或 AAC 音频数据。
如需发送和接收 G722 或 G711 音频数据,调用如下方法:
RTC Android SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
mRtcEngine.setAudioProfile(6) 或者 mRtcEngine.setParameters("{\"che.audio.custom_payload_type\":9}")
mRtcEngine.setParameters("{\"che.audio.custom_payload_type\":8}")
mRtcEngine.setParameters("{\"che.audio.custom_payload_type\":0}")
RTC iOS/macOS SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
agoraKit.setAudioProfile(6) 或者 agoraKit.setParameters("{\"che.audio.custom_payload_type\":9}")
agoraKit.setParameters("{\"che.audio.custom_payload_type\":8}")
agoraKit.setParameters("{\"che.audio.custom_payload_type\":0}")
RTC Windows SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
m_rtcEngine->setAudioProfile(6) 或者 agora::base::AParameter apm(m_rtcEngine); apm->setParameters("{\"che.audio.custom_payload_type\":9}")
agora::base::AParameter apm(m_rtcEngine); apm->m_rtcEngine->setParameters("{\"che.audio.custom_payload_type\":8}")
agora::base::AParameter apm(m_rtcEngine); apm->m_rtcEngine->setParameters("{\"che.audio.custom_payload_type\":0}")
RTC Electron SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
RtcEngine.SetAudioProfile(6) 或者 RtcEngine.SetParameters("{\"che.audio.custom_payload_type\":9}")
this.rtcEngine?.setParameters("{\"rtc.audio.custom_payload_type\":8}")
this.rtcEngine?.setParameters("{\"rtc.audio.custom_payload_type\":0}")
RTC Unity SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
RtcEngine.SetAudioProfile(6) 或者 RtcEngine.SetParameters("{\"che.audio.custom_payload_type\":9}")
RtcEngine.SetParameters("{\"rtc.audio.custom_payload_type\":8}")
RtcEngine.SetParameters("{\"rtc.audio.custom_payload_type\":0}")
RTC Flutter SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
await _engine.setAudioProfile(profile: AudioProfileType.audioProfileIot) 或者 await _engine.setParameters("{\"che.audio.custom_payload_type\":9}")
await _engine.setParameters("{\"che.audio.custom_payload_type\":8}")
await _engine.setParameters("{\"che.audio.custom_payload_type\":0}")
RTC React Native SDK:
- G722
- G711 (PCMA)
- G711 (PCMU)
await _engine.current?.setAudioProfile(6) 或者 await _engine.current?.setParameters("{\"che.audio.custom_payload_type\":9}")
await _engine.current?.setParameters("{\"che.audio.custom_payload_type\":8}")
await _engine.current?.setParameters("{\"che.audio.custom_payload_type\":0}")
视频
在 RTC Native/第三方框架 SDK(v4.x)中,默认发送和接收 H.264 视频数据。
如需发送和接收 JPEG 视频数据,调用如下方法:
- RTC Android SDK:
mRtcEngine.setParameters("{\"engine.video.codec_type\": \"20\"}") - RTC iOS/macOS SDK:
agoraKit.setParameters("{\"engine.video.codec_type\": \"20\"}") - RTC Windows SDK:
agora::base::AParameter apm(m_rtcEngine);apm->setParameters("{\"engine.video.codec_type\": \"20\"}") - RTC Electron SDK:
this.engine.setParameters("{\"engine.video.codec_type\": \"20\"}"); - RTC Unity SDK:
RtcEngine.SetParameters("{\"engine.video.codec_type\": \"20\"}"); - RTC Flutter SDK:
await _engine.setParameters("{\"engine.video.codec_type\": \"20\"}"); - RTC React Native SDK:
this.engine.setParameters("{\"engine.video.codec_type\": \"20\"}");
设置 RTC Web SDK(v4.x)
音频
在 RTC Web SDK(v4.x)中,默认发送和接收 Opus 音频数据。
仅 4.9.0 或更高版本的 RTC Web SDK 支持设置音频编码格式。
如需发送和接收 G722、G711 音频数据,调用如下方法:
- G711 (PCMA):
AgoraRTC.createClient({mode: "live", codec: "h264", audioCodec: "pcma"}) - G711 (PCMU):
AgoraRTC.createClient({mode: "live", codec: "h264", audioCodec: "pcmu"}) - G722:
AgoraRTC.createClient({mode: "live", codec: "h264", audioCodec: "g722"})
视频
在 RTC Web SDK(v4.x)中,默认发送和接收 VP8 视频数据。你需要在调用 createClient 创建客户端对象时,设置视频数据格式为 "h264"。
设置 RTC 小程序 SDK
在 RTC 小程序 SDK 中,默认发送和接收 Opus 音频数据、H.264 视频数据。如需接收 JPEG 视频数据或发送和接收 G711 音频数据,联系 sales@shengwang.cn 开通。
RTC 小程序 SDK 不支持发送 JPEG 视频数据。
开通服务的邮件模板如下:
- 标题:小程序 IoT 服务开通
- 正文:
- 公司名:你在使用声网服务时登记的公司名。
- AppID:需要开通服务的项目的 App ID。
- 服务需求:需要开通的服务,例如 G711 音频数据互通。
- 联系电话
- 联系邮箱