Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RTSPクライアントを自作してみた話

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 RTSPクライアントを自作してみた話

Avatar for simotin13

simotin13

May 30, 2026

More Decks by simotin13

Other Decks in Programming

Transcript

  1. Overview~RTSPとは何か~ Real Time Streaming Protocol。 ネットワークカメラ、ライブ配信などで使われるプロトコル Real Time Streaming Protocol

    市販のRTSP対応ネットワークカメラ (Tp-Linkとか) RTSP対応ソフト (VLC media playerとか) RTSPでストリーミングを受信して録画がしたい。
  2. RTPでのストリーミングデータの受信 ▪RTPのデータフォーマット RTPヘッダ:12byteとデータ部で構成される ▪RTPヘッダの内容 RTP Header(12 byte) Payload(n byte) 内容

    サイズ フィールド バージョン(2固定) 2bit Version パディング有無 通常は0 1bit Padding header extension 有無 1bit Extensition audio mixer 用 通常は0 4bit CSRC Count コーディック依存 H.264ではframe終了を表す 1bit Marker ペイロードタイプ 7bit Payload Type シーケンス番号 16bit Seq Frameのタイムスタンプ 32bit Timestamp ストリームID(送信元ID) 32bit SSRC
  3. NAL(Network Abstruct Layer)の解析 RTPのpayload_typeやSSRCをもとに映像データかどうかが判断できる H.264の場合、RTPのデータ部にNAL(Network Abstruct Layer)というデータ構 造でデータが格納されている。 NAL Header(1

    byte) Payload(n byte) 内容 サイズ フィールド forbidden_zero_bit(0固定) 1bit F フレーム間予測での参照値 2bit nal_ref_idc フレームタイプ 5bit Type
  4. NAL(Network Abstruct Layer)の解析 NALのデータによっては、複数のRTPパケットに分割されて送信されたり、1回のRTPのデー タの中に複数のNALユニットが含まれている場合がある。 映像を正しく表示・録画するためには、SPS・PPS の受信して保持しておく必要がある。 SPS(Sequence Parameter Set):映像の設定値(width,height,

    H.264のprofile) PPS(Picture Parameter Set): H.264のデコード用情報 内容 NALタイプ(番号) 複数のRTPパケットに分割して1つのNAL(基本的には画像フレームの データ)を送信する。 フレームデータは基本的にこのNALタイプで飛んでくることが多い。 FU-A(28) 1つのRTPパケットに複数のNALユニットが含まれている。 SPSやPPSはフレームデータと比べてデータ長が小さいので1つのRTP パケットにまとめることができる。 STAP-A(24) 1つのRTPパケットに複数の画像フレームデータをまとめる。 実際には1フレームは大きいので使われてないっぽい。 STAP-B(25)