このトピックでは、Native RTS SDKのデータ構造について説明します。

概要

データ構造 説明
rts_worker_demux_info メディア情報を指定します。
rts_frame オーディオおよびビデオフレームをカプセル化する。
rts_glue_funcs 関数ポインタを指定します。
pusher_delay ストリーム取り込み遅延を指定します。
player_delay ストリームのプル遅延を指定します。

サンプルコード

  • rts_worker_demux_info: メディア情報を指定します。
    構造体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;
    
        符号なしchar spspps[10*1024];
        int spspps_len;
    };    
    パラメーター 説明
    audio_flag 後続のオーディオ情報が有効かどうかを指定します。 設定可能な値は以下のとおりです。
    • 1: 有効。
    • 0: 無効です。
    audio_channels オーディオチャンネルの数。 このパラメーターは、audio_flagパラメーターが1に設定されている場合にのみ有効です。
    audio_sample_rate 音声サンプリングレート。 このパラメーターは、audio_flagパラメーターが1に設定されている場合にのみ有効です。
    video_flag 後続のビデオ情報が有効かどうかを指定します。 設定可能な値は以下のとおりです。
    • 1: 有効。
    • 0: 無効です。
    video_codec ビデオフレームのタイプ。 このパラメーターは、video_flagパラメーターが1に設定されている場合にのみ有効です。 この場合、ビデオコーデックはH.264である。
    video_width ビデオ解像度の幅。 このパラメーターは、video_flagパラメーターが1に設定されている場合にのみ有効です。
    video_height ビデオ解像度の高さ。 このパラメーターは、video_flagパラメーターが1に設定されている場合にのみ有効です。
    video_profile ビデオのエンコードに使用されるプロファイル。 このパラメータは、video_flagとvideo_codecの両方のパラメータが1に設定されている場合にのみ有効です。
    video_level ビデオのエンコードに使用されるレベル。 このパラメータは、video_flagとvideo_codecの両方のパラメータが1に設定されている場合にのみ有効です。
    spspps シーケンスパラメータセット (SPS) およびピクチャパラメータセット (PPS) 情報を格納する。 このパラメータを使用して、デコーダを事前に初期化することができる。 それは空のままにすることができます。 このパラメータは、video_flagとvideo_codecの両方のパラメータが1に設定されている場合にのみ有効です。
    spspps_len SPSおよびPPS情報の長さ。 単位: バイト。 このパラメータは、video_flagとvideo_codecの両方のパラメータが1に設定されている場合にのみ有効です。
  • rts_frame: オーディオフレームとビデオフレームをカプセル化します。
    構造体rts_frame
    {
        void * buf; // フレームデータが格納される場所
        int size; // バイト単位のフレームデータのサイズ
        int is_audio; // オーディオフレームの場合は1、ビデオフレームの場合は0
        unsigned long pts; // プレゼンテーションタイムスタンプ (ms)
        unsigned long dts; // デコードタイムスタンプ (ms)
        intフラグ; // ビデオフレームの場合 (is_audio == 0)
                                // ビット0: キーフレーム
                                // ビット1: 破損
                                // ビット2: sps
                                // bit 3: sps change
        int duration; // msで
        // この関数を使用してrts_frameオブジェクトを解放する
        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 The buffer of the frame.
    size バッファーサイズ。 単位: バイト。
    is_audio Specifies whether the frame is an audio frame. 設定可能な値は以下のとおりです。
    • 1: オーディオフレーム。
    • 0: ビデオフレーム。
    pts プレゼンテーションのタイムスタンプ。 単位:ミリ秒。
    dts デコードタイムスタンプ。 単位:ミリ秒。
    flag このパラメーターは、is_audioパラメーターが0に設定されている場合にのみ有効です。 設定可能な値は以下のとおりです。
    • 1: ダメージフラグ。
    • 0: キーフレームフラグ。
    期間 フレームの持続時間。 単位:ミリ秒。
    free_ptr 現在のrts_frameオブジェクトを解放するために呼び出される関数ポインター。 例: frm->free_ptr(frm);
    uid データが属するストリームを指定する予約済みパラメーター。
    delay ストリーム取り込み遅延を記録するために使用されるデータ構造。 詳細は、「pusher_delay」をご参照ください。
  • rts_glue_funcs: 関数ポインタを指定します。
    構造体rts_glue_funcs
    {
        int api_version;
        int (* preconfig)(const char * key, const char * val);
        void (* open)(const char * url、const charモード);
        void (* close)(voidハンドル);
        ロングロング (* 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関数を呼び出す前に、preconfig関数を呼び出す必要があります。 詳細については、「Functions」をご参照ください。
    オープン ストリームを開きます。 詳細については、「Functions」をご参照ください。
    close ストリームを閉じます。 詳細については、「Functions」をご参照ください。
    ioctl パラメーターを設定およびクエリします。 詳細については、「Functions」をご参照ください。
    読む データフレームを読み取ります。 詳細については、「Functions」をご参照ください。
    書き込み データフレームを送信します。 詳細については、「Functions」をご参照ください。
  • pusher_delay: ストリーム取り込み遅延を指定します。
    構造体pusher_delay
    {
        long long cap_time_ms; // ビデオフレームをキャプチャするときの現在のutc時間
        long long enc_time_ms; // ビデオフレームがエンコーダに送信される現在のutc時間
    };                
    Real-Time Streaming (RTS) のReal-Time Messaging Protocol (RTMP) を介したストリーム取り込みの場合、補足的な拡張情報 (SEI) を挿入してエンドツーエンドの遅延をカウントできます。 gdelayパラメータの値は、現在の遅延ではなく、すべての遅延の合計です。 単位:ミリ秒。
    {
        "gdelay":100
    }
    パラメーター 説明
    cap_time_ms 画像が収集されるシステム時間。 単位:ミリ秒。 値は、1970年1月1日00:00:00 UTCから経過したミリ秒数を表すUNIXタイムスタンプである必要があります。
    enc_time_ms 収集された画像がエンコーダに供給されるシステム時間。 単位:ミリ秒。 値は、1970年1月1日00:00:00 UTCから経過したミリ秒数を表すUNIXタイムスタンプである必要があります。
  • player_delay: ストリームプル遅延を指定します。
    struct player_delay
    {
        long long decoder_time_ms; // ビデオフレームがデコーダに送信される現在のutc時間
        long long render_time_ms; // ビデオフレームがレンダリングに送信される現在のutc時間
        unsigned long pts; // ビデオフレームのpts
    };                
    パラメーター 説明
    decoder_time_ms イメージが収集された時刻。 単位:ミリ秒。 時刻は協定世界時 (UTC) である必要があります。
    render_time_ms 収集された画像がエンコーダに供給される時間。 単位:ミリ秒。 時間は UTC にする必要があります。
    pts プレゼンテーションのタイムスタンプ。 単位:ミリ秒。