发版说明
你可以使用 RTSA C SDK 在 Android 或 Linux 平台上实现媒体流加速的功能。本页提供 RTSA C SDK 的发版说明。
1.9.2 版
该版本于 2024 年 1 月 9 日发布。
为满足文件传输、文件下载等业务场景对可靠性的要求,该版本支持通过可靠数据传输(Reliable Data Transmission,以下简称 RDT)通道传输控制消息 (RDT_STREAM_CMD
) 和数据消息 (RDT_STREAM_DATA
)。配套新增的方法及回调如下:
agora_rtc_send_rdt_msg
方法:通过 RDT 通道发送消息agora_rtc_get_rdt_status_info
方法:获取 RDT 通道的信息。on_rdt_state
回调:RDT 通道的连接状态已改变。on_rdt_msg
回调:在 RDT 通道中收到消息。
具体使用方法见通过 RDT 通道发送消息。
该版本在 audio_codec_option_t
结构体中新增 pcm_duration
成员,用于设置音频时长,取值范围为 20 到 100 毫秒。该设置对任意格式的音频数据都有效。
该版本对 RTM 模块进行了如下改进:
-
优化了被踢出 RTM 系统后的行为:
- 如果被踢出的原因是网络超时,则 SDK 会报告错误码
ERR_RTM_NOTICE_INTERRUPT
并尝试自动重连。 - 如果被踢出的原因是有人使用相同用户 ID 登录 RTM 系统,则 SDK 会报告错误码
ERR_RTM_NOTICE_KICKED_OUT
,你需要更换用户 ID 登录并保证用户 ID 的唯一性。
- 如果被踢出的原因是网络超时,则 SDK 会报告错误码
-
提升了
agora_rtc_send_rtm_data
方法的易用性:- 将
msg_id
参数由输出参数改为输入参数,你可以为每条消息设置唯一的消息 ID,且相同消息的 ID 不变,方便你在需要重传消息的时候快速定位到指定的消息。 - 将
msg_len
参数的长度最大值由 32 KB 修改为 31 KB。之前版本的限制是协议头加消息的总长度至多为 32 KB,因为协议头长度不固定且用户无法获取,所以该版本将限制修改为消息长度至多为 31 KB,无需关心协议头长度。 - 新增调用失败的错误码,你可以根据提示快速定位问题并解决:
错误码 描述 RTM_ERR_NOT_LOGINED
-1001
:未登录 RTM 系统RTM_ERR_SEND_TO_SELF
-1002
:在rtm_uid
参数中误填了自己的用户 ID。RTM_ERR_EXCEED_MSG_SIZE
-1003
:RTM 消息长度超出限制。消息长度至多为 31 KB。RTM_ERR_EXCEED_MSG_CNT
-1004
:发送频率超出限制。每秒至多发送 60 条消息。RTM_ERR_EXCEED_TCP_SKB
-1005
:消息通道已满。等待一秒后重新发送。
- 将
-
优化了保活机制,减少了掉线概率。
-
缩短了 RTM 的登录时间。
为提升回声消除效果并降低功耗,该版本在 rtc_audio_process_options_t
结构体中新增 enable_downlink_aec
成员,你可以通过该成员设置是否开启下行回声消除。声网推荐你使用下行回声消除 (enable_downlink_aec
) 替代上行回声消除 (enable_aec
)。
该版本支持采样率为 8000 Hz 的 AAC-LC 音频编码格式,你可以在发送音频帧时设置 audio_data_type_e
为 AUDIO_DATA_TYPE_AACLC_8K
。
该版本解除了 on_mixed_audio
回调对 on_audio_data
回调的依赖,你无需监听on_audio_data
回调也可以正常接收 on_mixed_audio
回调。
该版本修复了如下问题:
- H.265 视频数据的 FEC 功能解析异常。
- 特定场景下的视频卡顿。
- 调用
agora_rtc_renew_token
方法更新 Token 后,SDK 在加入频道时未使用新的 Token。
1.9.1 版
该版本于 2023 年 7 月 11 日发布。
为满足不同用户对视频帧率的需求,该版本将 video_frame_info_t
结构体中的 frame_rate
成员由枚举型修改为整型,你可以设置视频帧率为 [1,60] 间的任意整数。同时,该版本也删除了 video_frame_rate_e
枚举类中的所有枚举值。
在安全要求高的场景中,为保证数据的保密性、完整性和真实性,提高数据加密的计算效率,该版本在 rtc_channel_options_t
结构体中新增 crypto_opt
成员并删除 enable_aut_encryption
成员。你可以在加入频道时通过 crypto_opt
设置是否开启媒体流加密、加密模式、密钥和盐。
开启媒体流加密后,同一频道内的所有用户都必须使用相同的加密模式和密钥,包括服务端用户(例如声网录制服务)。
该版本支持限定用户的访问区域为香港澳门、美国或俄罗斯,你可以在 area_code_e
枚举类中设置如下区域码:
AREA_CODE_HKMC
: 香港和澳门AREA_CODE_US
: 美国AREA_CODE_RU
: 俄罗斯
为方便在低性能设备中存储、传输、处理 AAC-LC 音频数据,该版本在 audio_data_type_e
枚举类中新增 AUDIO_DATA_TYPE_AACLC_16K
枚举,支持按照 16000 Hz 采样率对 AAC-LC 音频数据进行编码。
为更好地分辨 SDK 断连、重连的状态,更准确地报告远端用户加入和离开频道的状态,该版本新增 on_reconnecting
回调并对 on_connection_lost
、 on_user_joined
和 on_user_offline
回调的行为进行如下改进:
回调 | v1.9.1 之前的触发场景 | v1.9.1 的触发场景 |
---|---|---|
on_reconnecting | / |
|
on_connection_lost |
| SDK 与服务器断开连接超过 10 秒。 |
on_user_joined |
| SDK 与服务器已连接且本地用户已加入频道的情况下,远端用户加入频道。 |
on_user_offline | SDK 与服务器已连接且本地用户已加入频道的情况下,远端用户离开频道。 |
|
该版本在实时消息功能中进行了如下改进:
- 将
agora_rtc_send_rtm_data
方法的msg_id
参数由输入参数变为输出参数,SDK 会自动为每条消息分配消息 ID,无需额外设置。 - 在
on_send_rtm_data_result
回调中新增rtm_uid
参数,表示向哪个用户发送了实时消息。 - 提高了弱网条件下的登录成功率。
该版本修复了如下问题:
- 用户无法接收 H.265 格式的视频帧。
- 发送 AAC 音频数据时,音画不同步。
- 弱网条件下,本地用户加入频道时,偶现 SDK 先触发
on_user_joined
回调,再触发on_join_channel_successful
回调。 - 调用
agora_rtc_mute_remote_audio
方法静音远端用户后,SDK 依旧触发了该远端用户的on_audio_data
回调。 - 偶现的崩溃。
1.9.0 版
该版本于 2023 年 1 月 4 日发布。
该版本新增 License 自动验证功能。加入频道时,声网服务器会自动验证你在 agora_rtc_init
中传入的 License。如果 License 验证失败,则 SDK 会触发 on_license_validation_failure
回调,你可以根据收到的错误码处理问题。
同时,该版本废弃 agora_rtc_license_gen_credential
和 agora_rtc_license_verify
方法,on_err
回调不再报告 License 验证失败的错误码。如果你之前通过 agora_rtc_license_gen_credential
和 agora_rtc_license_verify
方法进行 License 验证,并通过 on_err
回调处理 License 验证失败的业务逻辑,声网推荐你改用 on_license_validation_failure
回调。
该版本在 video_frame_info_t
中新增 rotation
参数,你可以通过该参数设置已编码视频帧的旋转角度。
该版本在 rtc_service_option_t
中新增 domain_limit
参数。在使用定向物联网卡的场景下,你可以通过该参数开启域名限制,使 SDK 仅访问指定域名的网络,从而保证使用定向物联网卡的设备与其他设备互通。
如需使用该功能,联系 sales@shengwang.cn。
该版本在 rtc_channel_options_t
中新增 audio_process_opt
参数,你可以设置是否开启回声消除、降噪等音频处理选项。
如需使用该功能,联系 sales@shengwang.cn。
该版本在 log_config_t
中新增 log_tag
和 log_printf
参数,你分别设置日志标志、实现日志打印函数,SDK 会通过该设置打印日志。
该版本改善了弱网环境下的音视频体验。
该版本修复了一些问题。
1.8.0 版
该版本于 2022 年 8 月 1 日发布。
1.8.0 版相比 1.7.3 版,大部分 API 都发生了变更或重新设计。如果你将 SDK 从 1.7.3 版升级到该版本,你需要重新集成 SDK。集成方式详见实现媒体流和信令传输。
自该版本起,SDK 不再支持 String 型用户 ID,相关接口也从 SDK 中删除。
自该版本起,SDK 使用 Connection ID 机制连接 RTC 频道。一个 Connection 有唯一的 ID,每个 Connection 可以关联多个 RTC 频道。你可以通过操作 Connection ID 来影响相关的 RTC 频道。
SDK 将所有 channel_name
参数更新为 connection_id
参数(agora_rtc_join_channel
除外),并新增与 connection_id
相关的接口:
agora_rtc_create_connection
:创建 Connectionagora_rtc_destroy_connection
:销毁 Connectionagora_rtc_get_connection_info
:获取 Connection 信息
Connection 通过 agora_rtc_join_channel
与 RTC 频道和用户 ID 进行绑定。在你调用 agora_rtc_leave_channel
之后,绑定结束。
你可以通过 Connection ID 机制实现多频道推流和单频道推多路流,详见多频道发流和单频道多路发流。
修复了一些 SDK 的问题。
1.7.3 版
该版本于 2022 年 5 月 19 日发布。
SDK 新增对以下加密模式的支持:
aes-128-ecb
aes-128-xts
aes-256-xts
salt 类型新增对 Base64 编码的支持。
修复了一些 SDK 的问题。
- 改进了 SDK 的性能,修复了一些问题。
- 在 SDK 日志中新增 IP 脱敏功能。
1.7.0 版
该版本于 2022 年 3 月 16 日发布。
1.7.0 版相比 1.6.0 版,发生了如下兼容性变更。如果你将 SDK 从 1.6.0 版升级到该版本,请根据下列变更信息更新你的应用。
agora_rtc_init
方法删除sdk_log_dir
参数。日志文件的设置转移到option
参数rtc_service_option_t
结构体的log_cfg
成员。on_audio_data
和on_mixed_audio_data
回调的audio_codec_e codec
参数更改为audio_data_type_e data_type
。on_video_data
回调的video_codec_e codec
参数更改为video_data_type_e data_type
。
audio_codec_option_t
的bool use_audio_codec
成员更新为audio_codec_type_e audio_codec_type
。rtc_log_level_e
结构体中的ERR_OK
枚举成员改名为ERR_OKAY
。agora_err_code_e
结构体中的ERR_UNABLE_TO_DECODE_NON_OPUS_AUDIO_FRAME (201)
枚举成员扩展为ERR_AUDIO_DECODER_NOT_MATCH_AUDIO_FRAME (201)
和ERR_NO_AUDIO_DECODER_TO_HANDLE_AUDIO_FRAME (202)
。video_frame_info_t
结构体的video_codec_e codec
成员更改为video_data_type_e data_type
。audio_frame_info_t
结构体的audio_codec_e codec
成员更改为audio_data_type_e data_type
。audio_codec_e
结构体更名为audio_codec_type_e
。
新增 agora_rtc_set_cloud_proxy
方法,用于设置声网云代理。
rtc_channel_options_t
结构体新增 bool
enable_encrypt
成员,用于开启或关闭音视频通道加密功能。
自该版本起,audio_frame_info_t
结构体的 audio_data_type_e
枚举增加 AUDIO_DATA_TYPE_PCMU
和 AUDIO_DATA_TYPE_PCMA
,用于支持 SDK 传输 G711 格式的音频数据。
自该版本起,audio_codec_option_t
结构体的 audio_codec_e codec
成员更改为 audio_codec_type_e audio_codec_type
。audio_data_type_e
枚举包含 AUDIO_CODEC_TYPE_OPUS
、AUDIO_CODEC_TYPE_G722
和 AUDIO_CODEC_TYPE_PCMU
,用于支持 SDK 自动将 PCM 音频数据转换为 Opus、G722 和 PCMU 编码的音频数据并在接收端解码为 PCM 音频数据。
- 改进了 SDK 的性能,修复了一些问题。
- 在 SDK 日志中新增 IP 脱敏功能。
agora_rtc_set_cloud_proxy
方法cloud_proxy_type_e
枚举rtc_service_option_t
结构体新增log_cfg
成员,类型为log_config_t
结构体rtc_log_level_e
枚举新增RTC_LOG_DEFAULT
成员audio_data_type_e
结构体rtc_channel_options_t
结构体新增bool enable_encrypt
成员。
agora_rtc_send_media_ctrl_msg
中payload
的最大长度更新为 1024 字节。rtc_service_option_t
新增log_cfg
字段,用于设置 SDK 日志。rtc_log_level_e
结构体中的ERR_OK
枚举改名为ERR_OKAY
。video_frame_info_t
结构体的video_codec_e codec
成员更改为video_data_type_e data_type
。audio_frame_info_t
结构体的audio_codec_e codec
更新为audio_data_type_e data_type
。audio_codec_e
结构体更名为audio_codec_type_e
。audio_codec_option_t
的bool use_audio_codec
成员更新为audio_codec_type_e audio_codec_type
。on_audio_data
、on_mixed_audio_data
回调的audio_codec_e codec
参数更改为audio_data_type_e data_type
。on_video_data
回调的video_codec_e codec
参数更改为video_data_type_e data_type
。
video_codec_e
枚举agora_rtc_init
方法删除sdk_log_dir
参数
1.6.0 版
该版本于 2021 年 9 月 24 日发布。
该版本有以下兼容性改动。
agora_rtc_join_channel
新增 uid
参数。
agora_rtc_init
删除 uid
参数。
agora_rtc_init
的 option
参数新增以下成员:
product_id
product_id_length
use_string_uid
删除了 agora_rtc_init_with_name
接口。
增加 on_mixed_audio_data
回调。你可以通过此回调在本地获取混音数据。
该版本支持从 Web SDK 接收 H.264 视频流。自该版本起,RTSA SDK 支持与 Web SDK 的双向互通。
License 激活工具使用 HTTPS 协议,增强了安全性。
-
on_mixed_audio_data
-
agora_rtc_join_channel
新增uid
参数 -
rtc_service_option_t
结构体新增以下参数:product_id
product_id_length
use_string_uid
agora_rtc_init_with_name
agora_rtc_init
删除uid
参数。
1.5.0 版
该版本于 2021 年 5 月 31 日发布。
该版本支持在调用 agora_rtc_init
初始化 SDK 时指定服务器的访问区域。该功能为高级设置,适用于有访问安全限制的场景。目前支持的区域有中国大陆、北美、欧洲、日本、印度、亚洲(中国大陆除外)和全球(默认)。详见限定访问区域。
通过优化登录时间,解决了 RTM 登录过慢的问题。
agora_rtc_init
新增option
参数area_code_e
枚举rtc_service_option_t
结构体ERR_DYNAMIC_TOKEN_BUT_USE_STATIC_KEY
错误码
1.4.2 版
该版本于 2021 年 4 月 11 日发布。
- 该版本对 API 返回的错误码进行了整理。以确保开发者能够得到清晰且准确的报错信息。详见错误码。
- 该版本优化了 debug log,减少了 log 文件写入操作的系统资源占用。
- 自该版本起,你可以略过申请 License 和激活步骤直接免费试用 RTSA SDK。试用期时效为 90 天且存在 10 路并发限制。
该版本修复了以下问题:
- 特定情况下音频卡顿、杂音。
- log 输出功能存在少量内存泄露。
- 断网重连后 SDK 音频编码功能异常。
- 对端推送非 Opus 格式编码的音频可能造成 SDK 崩溃。
1.4.1 版
该版本于 2021 年 3 月 11 日发布。
-
agora_rtc_join_channel
方法新增了options
参数,用于设置订阅媒体类型和 SDK 内置的音频编解码器。信息- 调用
agora_rtc_join_channel
方法加入频道后,SDK 默认不订阅任何音频流和视频流。如果你需要进行订阅操作,必须通过options
参数设置rtc_channel_options_t
结构体的auto_subscribe_audio
成员和auto_subscribe_video
成员。 - SDK 内置的音频编解码器默认关闭,你必须在开启 SDK 内置编解码器之后才能直接传输 PCM 数据。
- 调用
-
为提高 API 易用性,
audio_codec_e
枚举类型中的AUDIO_CODEC_PCM_TO_OPUS
和AUDIO_CODEC_PCM_FROM_OPUS
合并为AUDIO_CODEC_PCM
。在使用agora_rtc_send_audio_data
发送 PCM 数据时,audio_frame_info_t
参数中的codec
需要设为AUDIO_CODEC_PCM
。使用on_audio_data
接收 PCM 数据时,返回的codec
参数为AUDIO_CODEC_PCM
。
你可以通过 rtc_channel_options_t
结构体的 auto_subscribe_audio
成员和 auto_subscribe_video
成员选择订阅媒体类型。选项包括:
- 是否订阅音频流。
- 是否订阅视频流。
你可以通过 rtc_channel_options_t
结构体的 audio_codec_opt
成员设置 SDK 内置的音频编解码器参数,包括:
- 是否开启 SDK 内置音频编解码器 (默认关闭)。
- 编解码器的 PCM 采样频率。
- 编解码器的 PCM 通道数。
你可以通过设置 agora_rtc_send_video_data
的 info_ptr
参数发送 JPEG 编码的视频帧。
- 更正了
rtm_event_type_e
枚举类型中RTM_EVENT_TPYE_EXIT
枚举值的拼写错误。RTM_EVENT_TPYE_EXIT
更正为RTM_EVENT_TYPE_EXIT
。 - 为了改善枚举值命名的可读性,将
ERR_RTM_INVALID_CHANNEL_NAME
重新命名为ERR_RTM_INVALID_RTM_UID
。
agora_rtc_join_channel
方法新增了options
参数video_codec_e
枚举类型新增VIDEO_CODEC_GENERIC_JPEG
rtc_channel_options_t
结构体audio_codec_option_t
枚举类型
audio_codec_e
枚举类型中的AUDIO_CODEC_PCM_TO_OPUS
和AUDIO_CODEC_PCM_FROM_OPUS
合并为AUDIO_CODEC_PCM
rtm_event_type_e
枚举类型中的RTM_EVENT_TPYE_EXIT
更正为RTM_EVENT_TYPE_EXIT
ERR_RTM_INVALID_CHANNEL_NAME
重新命名为ERR_RTM_INVALID_RTM_UID
1.4.0 版
该版本于 2021 年 2 月 24 日发布。
自该版本起,License 激活机制基于安全性考虑进行了更新。详见跑通示例项目。
自该版本起,基于可靠数据通道 (RDT) 的数据传输接口替换为基于云信令 (原 RTM) 的信令接口。RTSA 1.4.0 移除了以下 RDT 数据传输接口:
agora_rtc_send_cmd
agora_rtc_send_through_rdt
on_cmd
on_data_from_rdt
on_rdt_availability_changed
你可以使用云信令 (原 RTM) 的信令接口:
agora_rtc_login_rtm
agora_rtc_logout_rtm
agora_rtc_send_rtm_data
on_rtm_data
on_rtm_event
on_send_rtm_data_result
agora_rtc_set_log_level
方法的 level
参数从 int 型变为枚举型。枚举值通过 rtc_log_level_e
枚举类型定义。
增加了基于云信令 (原 RTM) 的信令接口。你可以通过此接口发送和接收消息,并获取用户状态变化通知。
你可以使用 SDK 直接传输 PCM 数据,而无需自己进行音频编解码。在使用 agora_rtc_send_audio_data
发送 PCM 数据时,audio_frame_info_t
参数中的 codec
需要设为 AUDIO_CODEC_PCM_TO_OPUS
。使用 on_audio_data
接收 PCM 数据时,返回的 codec
参数为 AUDIO_CODEC_PCM_FROM_OPUS
。
你可以通过 agora_rtc_send_video_data
方法的 stream_id
参数选择发送大流或小流。stream_id
设为 0
时,SDK 会发送大流;设为 1
时,SDK 会发送小流。
增加了 on_token_privilege_will_expire
回调,可以在 Token 即将过期时提醒用户获取新的 Token。
修复了 on_user_joined
回调和 on_user_offline
回调只有在发流时才可以触发的问题。从 1.4.0 版开始,on_user_joined
回调和 on_user_offline
回调在加入频道后就可以触发。
agora_rtc_login_rtm
方法agora_rtc_logout_rtm
方法agora_rtc_send_rtm_data
方法on_token_privilege_will_expire
方法agora_rtc_set_params
方法on_rtm_data
回调on_rtm_event
回调on_send_rtm_data_result
回调rtc_log_level_e
枚举类型。agora_err_code_e
枚举类型新增ERR_SEND_VIDEO_OVER_BANDWIDTH_LIMIT
audio_codec_e
枚举类型新增AUDIO_CODEC_PCM_FROM_OPUS
agora_rtc_send_cmd
方法agora_rtc_send_through_rdt
方法on_cmd
回调on_data_from_rdt
回调on_rdt_availability_changed
回调
agora_rtc_set_log_level
方法的 level
参数从 int 型变为枚举型。枚举值通过 rtc_log_level_e
枚举类型定义。
1.3.0 版
该版本于 2020 年 11 月 24 日发布。
该版本新增 audio_frame_info_t
和 video_frame_info_t
结构体,改进了 agora_rtc_send_audio_data
和 agora_rtc_send_video_data
方法中的参数。
- 对于
agora_rtc_send_audio_data
方法,该版本将codec
参数归并至audio_frame_info_t
结构体中。 - 对于
agora_rtc_send_video_data
方法,该版本将codec
和is_key_frame
参数归并到video_frame_info_t
结构体中。
该版本移除了 on_inc_bitrate
和 on_dec_bitrate
回调,并新增 on_target_bitrate_changed
回调进行取代。
网络带宽状况变化时,SDK 会触发 on_target_bitrate_changed
回调提示应用程序实时调整发送码率。
该版本进行以下 API 的更名,以确保 API 命名的准确和规范。
agora_rtc_credential
方法更名为agora_rtc_license_gen_credential
。agora_rtc_cert
更名为agora_rtc_license_verify
。agora_get_version
更名为agora_rtc_get_version
。agora_err_2_str
更名为agora_rtc_err_2_str
。
该版本移除了无用的警告码,并清理了冗杂的错误码,以确保开发者能够得到清晰且准确的报错信息。
该版本增强了 RTSA SDK 间互通的能力,并实现了 RTSA SDK 与声网 SDK 的互通,详见产品概述的功能描述章节。
该版本新增 agora_rtc_set_bwe_param
方法用于配置 BWE (Bandwidth Estimation) 参数。你可根据自己的实际带宽和码率需要调用此方法配置发送码率的最小值、最大值和起始值,详见动态码率推荐。
agora_rtc_set_bwe_param
方法on_target_bitrate_changed
回调audio_frame_info_t
结构体video_frame_info_t
结构体
agora_rtc_credential
更名为agora_rtc_license_gen_credential
agora_rtc_cert
更名为agora_rtc_license_verify
agora_get_version
更名为agora_rtc_get_version
agora_err_2_str
更名为agora_rtc_err_2_str
on_inc_bitrate
on_dec_bitrate
1.2.2 版
该版本于 2019 年 12 月 17 日发布。新增特性和问题修复如下。
v1.2.2 起支持可靠数据传输,适用于数据量少但可靠性高的传输场景。SDK 触发 on_rdt_availability_changed
回调报告可靠数据通道状态为可用后,可调用 agora_rtc_send_cmd
或 agora_rtc_send_through_rdt
方法通过可靠数据通道发送指令或数据。
- App 离开频道、进入后台息屏后,无法再次加入频道。
- 调用 API 暂停接收远端音视频流后,依然能收到。
- 4K 高清场景下偶现的丢帧。
- 部分已知 crash。
1.2.1 版
该版本于 2019 年 8 月 15 日发布。改进如下。
- 增强 String UID 的注册刷新/失效/一致性检测。
- 完善异常数据包过滤。
1.2.0 版
该版本于 2019 年 8 月 9 日发布。新增特性和问题修复如下。
v1.2.0 新增 agora_rtc_init_with_name
方法,支持用户使用 String 型用户 ID作为用户标识进行初始化。
- P2P 链路可通但链路状态拥塞时,消除反复 P2P 连接尝试造成带来的数据传输损伤。