通过阅读本文,你可以了解Native RTS SDK所涉及的数据类型。

目录

数据类型 描述
rts_worker_demux_info 媒体信息。
rts_frame 封装音频帧和视频帧的信息类型。
rts_glue_funcs 函数指针。
pusher_delay 推流延时信息。
player_delay 拉流延时信息。

详情

  • rts_worker_demux_info:媒体信息。
    struct rts_worker_demux_info
    {
        int audio_flag;
        int audio_channels;
        int audio_sample_rate;
    
        int video_flag;
        int video_codec;
        int video_width;
        int video_height;
        int video_profile;
        int video_level;
    
        unsigned char spspps[10 * 1024];
        int spspps_len;
    };    
    数据成员 描述
    audio_flag 指示跟随其后的audio信息是否valid的标志。取值:
    • 1:valid。
    • 0:invalid。
    audio_channels 音频channel数。当audio_flag等于1的时候才有意义。
    audio_sample_rate 音频采样率。当audio_flag等于1的时候才有意义。
    video_flag 指示跟随其后的video信息是否valid的标志。取值:
    • 1:valid。
    • 0:invalid。
    video_codec 视频帧类型。当video_flag等于1(h264)的时候才有意义。
    video_width 视频分辨率宽度。当video_flag等于1的时候才有意义。
    video_height 视频分辨率高度。当video_flag等于1的时候才有意义。
    video_profile 视频编码使用的profile。当video_flag等于1,且video_codec等于1的时候才有意义。
    video_level 视频编码使用的level。当video_flag等于1,且video_codec等于1的时候才有意义。
    spspps 存放sps和pps数据,可用于提前初始化解码器,可以为空。当video_flag等于1,且video_codec等于1的时候才有意义。
    spspps_len spspps的长度(单位:字节)。当video_flag等于1,且video_codec等于1的时候才有意义。
  • rts_frame:封装音频帧和视频帧的信息类型。
    struct rts_frame
    {
        void *buf;              // where frame data is stored
        int size;               // size of frame data in bytes
        int is_audio;           // 1 for audio frame, 0 for video frame
        unsigned long long pts; // presentation time stamp, in ms
        unsigned long long dts; // decoding time stamp, in ms
        int flag;               // for video frame (is_audio == 0)
                                // bit 0: key frame
                                // bit 1: corruption
                                // bit 2: sps
                                // bit 3: sps change
        int duration;           // in ms
        // use this function to free rts_frame object
        void (*free_ptr)(struct rts_frame *);
        unsigned int uid; // reserved.
        struct pusher_delay delay;
        // msid-value = msid-id [ SP msid-appdata ]
        char msid[NET_MSID_MAX_LENGTH + 1];
    };                
    数据成员 描述
    buf frame数据buffer。
    size buf的字节数。
    is_audio 是否是音频帧。取值:
    • 1:音频帧。
    • 0:视频帧。
    pts 演示时间戳。单位:毫秒。
    dts 解码时间戳。单位:毫秒。
    flag 当is_audio等于0时有效。取值:
    • 1:损坏标志。
    • 0:关键帧标志。
    duration 帧持续时间。单位:毫秒。
    free_ptr 函数指针,用来释放当前的rts_frame对象,例如frm->free_ptr(frm);
    uid 预留参数,标记数据属于哪个流。
    delay 用于记录统计推流延时信息的数据类型。详情请参见pusher_delay
  • rts_glue_funcs:函数指针。
    struct rts_glue_funcs
    {
        int api_version;
        int (* preconfig)(const char *key, const char *val);
        void (* open)(const char *url, const char mode);
        void (* close)(void handle);
        long long (* ioctl)(void *handle, const char *cmd, void arg);
        int (* read)(struct rtsframe **frame, void handle);
        int (* write)(struct rtsframe **frame, void *handle);
    };
    数据成员 描述
    api_version API版本号(必须是2)。
    preconfig 全局参数配置函数。调用顺序:在open前调用,不要在open后调用。详情请参见preconfig
    open 打开一个流。详情请参见open
    close 关闭一个流。详情请参见close
    ioctl 参数配置、查询。详情请参见ioctl
    read 读取一帧数据。详情请参见read
    write 发送一帧数据。详情请参见write
  • pusher_delay:推流延时信息。
    struct pusher_delay
    {
        long long cap_time_ms;  //current utc time when capture the video frame
        long long enc_time_ms;  //current utc time when the videoframe send to encoder
    };                
    说明
    对于RTS的RTMP推流,可以通过插入SEI信息,统计全链路延时信息。gdelay为全部延时的总和,并非当前时间,单位:毫秒。
    {
        "gdelay":100
    }
    数据成员 描述
    cap_time_ms 采集该图像的系统时间,使用UNIX时间表示,单位:毫秒。
    enc_time_ms 采集图像送入编码器的系统时间,使用UNIX时间表示,单位:毫秒。
  • player_delay:拉流延时信息。
    struct player_delay
    {
        long long decoder_time_ms;  //current utc time when the video frame send to decoder
        long long render_time_ms;   //current utc time when the video frame send to render
        unsigned long long pts;     //the video frame's pts
    };                
    数据成员 描述
    decoder_time_ms 采集该图像的UTC时间,单位:毫秒。
    render_time_ms 送入编码器的UTC时间,单位:毫秒。
    pts 演示时间戳,单位:毫秒。