rtmp信令交互过程分析一-概述

使用wireshark抓包分析rtmp推流和拉流过程的信令,大致如下:

通用部分

箭头>>>表示C->S,箭头<<<表示S->C

  • >>> Handshake C0+C1
  • <<< Handshake S0+S1+S2
  • >>> Handshake C2
  • >>> AMF0 Command connect(‘live’)
  • <<< Window Acknowledgement Size 5000000
  • <<< Set Peer Bandwidth 5000000,Dynamic
  • <<< Set Chunk Size 4000
  • <<< AMF0 Command _result(‘NetConnection.Connect.Success’)
  • >>> Window Acknowledgement Size 5000000

推流(publish)

  • >>> AMF0 Command releaseStream(‘stream01?user=aj001&token=tk123456’)
  • >>> AMF0 Command FCPublish(‘stream01?user=aj001&token=tk123456’)
  • >>> AMF0 Command createStream()
  • <<< AMF0 Command _result()
  • >>> AMF0 Command publish(‘stream01?user=aj001&token=tk123456’)
  • >>> Set Chunk Size 4000
  • <<< AMF0 Command onStatus(‘NetStream.Publish.Start’)
  • >>> AMF0 Data onMetaData()
  • >>> Video Data
  • >>> Audio Data

拉流(play)

  • >>> AMF0 Command createStream()
  • <<< AMF0 Command _result()
  • >>> AMF0 Command getStreamLength()
  • >>> AMF0 Command play(‘stream01’)
  • >>> User Control Message Set Buffer Length 1,3000ms
  • <<< User Control Message Stream Begin 1
  • <<< AMF0 Command onStatus(‘NetStream.Play.Start’)
  • <<< AMF0 Data |RtmpSampleAccess()
  • <<< AMF0 Data onMetaData()
  • <<< Video Data
  • <<< Audio Data