日志
rtc_set_log_level
rtc_create 之前调用。
语言
rtc_set_language
rtc_get_last_error 取到服务端错误时 msg_buf 里的内容。SDK 自身错误(180xxx)的原因始终是英文,不受影响。
不调用时跟随系统语言:依次取环境变量
LC_ALL、LC_MESSAGES、LANG 中第一个非空的值。系统语言为 C / POSIX 或都未设置时,服务端按中文返回。
实例生命周期
rtc_create
rtc_destroy
rtc_destroy 会等正在执行的回调全部返回后才返回,返回后不再触发本实例的任何回调,此时可以安全释放你传给回调的 context。
- 允许在本实例的回调里调用
rtc_destroy(包括断线回调)。此时只等其它线程上的回调,当前这个回调返回之前不要释放它的context - 回调里如果有耗时操作(解码、写文件),
rtc_destroy会相应地等更久 rtc_leave_channel和用rtc_set_*_callback替换回调都不会等正在执行的回调,不能作为释放context的时机
加入与离开频道
rtc_join_channel
rtc_set_connection_callback)通知。
返回值
rtc_join_channel_sync
返回值
rtc_get_last_error
RTC_OK 后调用。0.1.0 起,返回 RTC_INVALID_PARAM / RTC_NOT_CONNECTED 时也会记录(180031 / 180001)。
返回值:错误码,
0 表示没有记录。
句柄本身无效时没有实例可记录,返回
0;rtc_write_sample 等只带轨道句柄的接口不记录。
每个实例只保留最近一条。同一实例上多个线程并发调用接口时,后失败的会覆盖先失败的。
rtc_leave_channel
rtc_destroy。
返回值:RTC_OK / RTC_INVALID_PARAM(句柄无效)。
自动订阅
rtc_set_auto_subscribe
回调注册
所有回调都通过context 参数携带业务上下文,SDK 原样回传,不做任何解释。
rtc_set_connection_callback
state:0=连接中,1=已连接,2=已断开,3=重连中。
rtc_set_disconnected_callback
state=2 同时机,且先于它触发),带上断线原因(0.0.9 起)。
rtc_set_user_event_callback
event_type:0=加入,1=离开。
rtc_set_track_event_callback
event_type:0=新增,1=更新,2=移除。手动订阅时用这个回调发现可订阅的轨道。
rtc_set_track_sample_callback
user_info->uid + track_info->track_id 区分来源。
data 是完整的编码帧(视频为一帧,音频为一个编码包),指针仅在回调期间有效: