public:it:rtsp

RTSP

  • Transport: 格式 <transport>/<profile>/<lower-transport>,未指明TCP或UDP的 RTP/AVP, 默认是 UDP.
  • 音视频媒体的编码类型以 m= 为准, a=fmtp, a=rtpmap 可参考;
  • DESCRIBE 时添加头 Require: www.onvif.org/ver20/backchannel\r\n, 支持的摄像头会返回带有支持音频格式的 m, rtpmap指示可支持对讲时传输什么类型的音频。一般 g711a 即 PCMA/8000 的类型值为 8, g711u(PCMU/8000) 的类型值为 0
  • RTP 对 H264 的分包相关: RFC6184
  • Table 1. Summary of NAL unit types and the corresponding packet types

    NAL Unit  Packet    Packet Type Name               Section
      Type      Type
      -------------------------------------------------------------
      0        reserved                                     -
      1-23     NAL unit  Single NAL unit packet             5.6
      24       STAP-A    Single-time aggregation packet     5.7.1
      25       STAP-B    Single-time aggregation packet     5.7.1
      26       MTAP16    Multi-time aggregation packet      5.7.2
      27       MTAP24    Multi-time aggregation packet      5.7.2
      28       FU-A      Fragmentation unit                 5.8
      29       FU-B      Fragmentation unit                 5.8
      30-31    reserved                                     -
  • 三种分包模式: three cases of packetization modes:

    • Single NAL unit mode
    • Non-interleaved mode
    • Interleaved mode
  • 三种分包模式允许的包类型:

    Table 3.  Summary of allowed NAL unit types for each packetization
    			mode (yes = allowed, no = disallowed, ig = ignore)
    
      Payload Packet    Single NAL    Non-Interleaved    Interleaved
      Type    Type      Unit Mode           Mode             Mode
      -------------------------------------------------------------
      0      reserved      ig               ig               ig
      1-23   NAL unit     yes              yes               no
      24     STAP-A        no              yes               no
      25     STAP-B        no               no              yes
      26     MTAP16        no               no              yes
      27     MTAP24        no               no              yes
      28     FU-A          no              yes              yes
      29     FU-B          no               no              yes
      30-31  reserved      ig               ig               ig
  • 24(0x18)格式,某些 rtsp server 推流会把关键帧前的 sps pps 作为一个STAP-A包发送, 比如 mediamtx 的流
  • STAP-A 的格式: 头字节 0x18 , 跟两字节长度,然后跟h264 nalu内容,再跟两字节长度,如此循环:
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          RTP Header                           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |STAP-A NAL HDR |         NALU 1 Size           | NALU 1 HDR    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         NALU 1 Data                           |
      :                                                               :
      +               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |               | NALU 2 Size                   | NALU 2 HDR    |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         NALU 2 Data                           |
      :                                                               :
      |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                               :...OPTIONAL RTP padding        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • public/it/rtsp.txt
  • 最后更改: 2024/07/24 15:51
  • oakfire