通过阅读本文,你可以了解Native RTS SDK所涉及的接口详情。

目录

API 描述
get_rts_funcs 唯一对外可见的API,获取其他API的指针。
preconfig 全局参数配置函数。
open 打开流。
close 关闭流。
ioctl 访问Native RTS SDK参数。
read 从Native RTS SDK读取一帧数据。
write 从Native RTS SDK发送一帧数据。

详情

  • get_rts_funcs:唯一对外可见的API,获取其他API的指针。
    const struct rts_glue_funcs *get_rts_funcs(
        int version
    );                       

    参数说明

    参数 类型 描述
    version int API兼容版本(必须是2)。

    返回说明

    返回rts_glue_funcs指针表示调用成功,返回NULL表示调用失败(一般情况为version参数不匹配)。

  • preconfig:全局参数配置函数。在openclose期间之外执行。
    int (* preconfig)(
        const char *key,
        const char *val
    );

    参数说明

    参数 类型 描述
    key const char * 参数名称,大小写敏感,详情请参见下表。
    val const char * 参数值。
    参数 描述
    AutoReconnect 是否允许Native RTS SDK发现网络断开后自动重联,默认值为允许。
    BufferingDuration Jitter buffer缓存时间,默认值为500ms。
    LogCallback 设置外部的日志回调函数,需要同时设置LogCbParam才能生效。
    LogCbParam 设置外部的日志的回调函数的参数,需要同时设置LogCallback才能生效。
    LogToConsole 设置内置的日志输出到控制台,默认值为不输出。
    LogToFile 设置内置的日志输出到文件,默认值为不输出。
    LogToServer 设置内置的日志输出到服务器,默认值为不输出。
    MessageCallback 设置消息回调函数,需要同时设置MessageCbParam才能生效。
    MessageCbParam 设置消息回调函数的参数,需要同时设置MessageCallback才能生效。
    AacdCreateCallback 设置创建外部AAC解码器回调。
    AacdDecodeCallback 设置外部AAC解码器解码回调。
    AacdCloseCallback 设置关闭外部AAC解码器回调。
    HelpSupportIDPrefix 设置Help Support ID的前缀。
    LogLevel
    说明 此参数仅支持RTS SDK 2.1.0及以上版本。
    设置日志回调的级别,对应的参数值:
    • 0:ERR。
    • 1:WARN。
    • 2:INFO。
    • 3:DEBUG。
    • 100:NONE。
    SigTimeoutMs
    说明 此参数仅支持RTS SDK 2.2.0及以上版本。
    设置信令超时时间,默认值为10000ms,建议设置不小于6000ms。

    返回说明

    返回0表示调用成功,其他表示调用失败。

  • open:打开流。
    void *(* open){
        const char *url,
        const char *mode
    );

    参数说明

    参数 类型 描述
    url const char * 流的URL,支持artc://格式的URL。
    mode const char * 模式。取值:
    • r:播放流。
    • w:推送流。

    返回说明

    返回句柄表示调用成功,返回NULL表示调用失败。

  • close:关闭流。
    void (* close)(
        void *handle
    ); 

    参数说明

    参数 类型 描述
    handle void * open返回的句柄。
  • ioctl:访问Native RTS SDK参数。
    long long (* ioctl)(
        void *handle,
        const char *cmd,
        void *arg
    );

    参数说明

    参数 类型 描述
    handle void * open返回的句柄。
    cmd const char * 发送的命令名称,详情请参见下表。
    arg void * 发送的命令参数。如果命令不带参数,填NULL。
    命令名称 命令参数 描述
    get_stream_info rts_worker_demux_info变量地址 从Native RTS SDK获得流信息,存储到arg指向的rts_worker_demux_info变量中(rts_worker_demux_info变量不能为NULL)。
    reload NULL 提示Native RTS SDK重新连接。
    skip_avformat_find_stream_info
    说明 此命令仅支持RTS SDK 2.2.0及以上版本。
    NULL 基于FFmpeg的播放器起播阶段是否可以跳过avformat_find_stream_info()

    返回0表示不能跳过,返回1表示可以跳过。

    注意 如果您关注视频秒开,建议调用此命令。

    返回说明

    返回0表示调用成功,其他表示调用失败。

  • read:从Native RTS SDK读取一帧数据。
    int (* read)(
        struct  **frame,
        void *handle
    );  

    参数说明

    参数 类型 描述
    frame struct ** 返回的音视频帧的存储位置。
    handle void * open返回的句柄。

    返回说明

    • 返回1表示读入frame一帧。
    • 返回0表示稍后再试。
    • 返回-1表示EOF。
    • 返回除1、0、-1以外的负数表示其他致命错误。
    说明

    如果返回值为1,返回的frame需要调用者释放。释放的示例代码如下所示:

    struct rts_frame *f = NULL;
    int r = __rts_funcs->read(&f, handle);
    ...
    if(f != NULL)
        f->free_ptr(f);
  • write:从Native RTS SDK发送一帧数据。
    int (* write)(
        struct  **frame,
        void *handle
    ); 

    参数说明

    参数 类型 描述
    frame struct ** 要发送的音视频帧。
    handle void * open返回的句柄。

    返回说明

    • 返回1表示调用成功。
    • 返回0表示稍后再试。
    • 返回-1表示EOF。
    • 返回除1、0、-1以外的负数表示其他致命错误。
    说明 如果返回值为1,返回的frame所有权转移至Native RTS SDK并由其释放。