本文为您介绍了RTS SDK编程数据的消息回调函数的数据类型和示例。

函数原型

int (* event_callback)(
    void *opaque,
    int type,
    void *data,
    long long data_size
);          

参数介绍

参数 解释
opaque 通过preconfig("MessageCbParam")设置的值,RTS SDK将原值回传给event_callbac
type 消息ID。
data 消息内容,格式为when=<time_in_ms>,where=<place>,who=<id>,desc=<extra text>。该参数为临时变量,出了回调函数会销毁。
data_size 消息内容长度,单位:字节。

消息ID说明

消息ID 说明
100 Help support ID消息。发生在open函数中的connect之前。
102 Help support ID消息,发生在connect操作中。
103 Help support ID消息,发生在推流操作中。
104 Help support ID消息,发生在拉流操作中。
105 每4秒统计一次数据消息。
说明 当消息ID是105(统计数据消息)时,desc的内容格式为 \"key1:val1,key2:val2,...\"
20000 ~ 30000 错误码。
20001 DNS出错,无法解析域名。
20002 域名访问权限验证失败。
20009 成功连接到流媒体服务器。
20010 连接流媒体服务器失败。
20012 订阅流超时。
20013 订阅流不存在。
20014 订阅流没有音频。
20015 订阅流没有视频。
20020 其他未知订阅错误。
20050 丢包率高,拥塞严重。
20051 丢包率降到正常水平,拥塞恢复。
20052 流中断,没有任何音频或者视频包。
20053 流中断恢复。
20054 流结束。
20055 连接丢失。
20056 检测到流重新推送。
20057 无法播放,需要降级到RTMP。

示例说明

消息回调函数通过preconfig设置给RTS SDK,请参考移动端RTS SDK中的rtsdec.c文件,详情请参见SDK下载

static int on_message(void *s,
                      int type,
                      void *data,
                      long long data_size)
{
    (void) s;

    //TODO: process message, do not take too long
    switch(type) {
    case 105:
        printf("Profiling message %s.\n", (const char *)data);
        break;
    default:
        break;
    }
    return 0;
}

__rts_funcs->preconfig("MessageCallback", addr_to_string(on_message, buf));
__rts_funcs->preconfig("MessageCbParam", addr_to_string(s, buf));