使用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