原型


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

参数

参数 解释
opaque 这个参数是通过preconfig("MessageCbParam")设置的值,rtssdk原封不动回传给event_callbac
type 消息ID
data 消息内容,格式是:when=<time_in_ms>,where=<place>,who=<id>,desc=<extra text>
data_size data长度,in bytes

返回值

0

Remarks

消息ID

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

当消息ID是105 (统计数据消息)时,desc的内容是如下格式:

\"key1:val1,key2:val2,...\"

data临时变量。出了回调函数,该变量会销毁

Example

消息回调函数通过preconfig设置给RtsSDK。下面这个例子摘自rtsdec.c:


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));