このトピックでは、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 プレゼンテーションのタイムスタンプ。 単位:ミリ秒。