rtmp信令交互过程分析三-连接(connect)

概述

握手之后就是连接(connect),由客户端发起,服务端响应,connect指定的app。

1、C->S : connect

  • app:需要connect的app名称
  • flashVer
  • tcUrl
  • fpad
  • capabilities
  • audioCodecs
  • videoCodecs
  • videoFunction

2、S->C : Window Acknowledgement Size

指定Window Acknowledgement Size

3、S->C : Set Peer Bandwidth

码流带宽

3、S->C : Set Chunk Size

指定媒体数据拆分成块时的块大小

4、S->C : _result

connect结果是否成功

5、C->S : Window Acknowledgement Size

对服务端的Window Acknowledgement Size的响应

举例

以下为使用wireshark抓包的部分内容:

C->S

AMF0 Command connect(‘live’)

RTMP Header
    00.. .... = Format: 0
    ..00 0011 = Chunk Stream ID: 3
    Timestamp: 0
    Body size: 220
    Type ID: AMF0 Command (0x14)
    Stream ID: 0
RTMP Body
    String 'connect'
    Number 1
    Object (9 items)
        AMF0 type: Object (0x03)
        Property 'app' String 'live'
        Property 'flashVer' String 'LNX 9,0,124,2'
        Property 'tcUrl' String 'rtmp://192.168.4.158/live'
        Property 'fpad' Boolean false
        Property 'capabilities' Number 15
        Property 'audioCodecs' Number 3191
        Property 'videoCodecs' Number 252
        Property 'videoFunction' Number 1
        Property 'objectEncoding' Number 0
        End Of Object Marker
S->C

Window Acknowledgement Size 5000000

RTMP Header
    00.. .... = Format: 0
    ..00 0010 = Chunk Stream ID: 2
    Timestamp: 0
    Body size: 4
    Type ID: Window Acknowledgement Size (0x05)
    Stream ID: 0
RTMP Body
    Window acknowledgement size: 5000000
S->C

Set Peer Bandwidth 5000000,Dynamic

RTMP Header
    00.. .... = Format: 0
    ..00 0010 = Chunk Stream ID: 2
    Timestamp: 0
    Body size: 5
    Type ID: Set Peer Bandwidth (0x06)
    Stream ID: 0
RTMP Body
    Window acknowledgement size: 5000000
    Limit type: Dynamic (2)

Set Chunk Size 4000

RTMP Header
    00.. .... = Format: 0
    ..00 0010 = Chunk Stream ID: 2
    Timestamp: 0
    Body size: 4
    Type ID: Set Chunk Size (0x01)
    Stream ID: 0
RTMP Body
    Chunk size: 4000

AMF0 Command _result(‘NetConnection.Connect.Success’)

RTMP Header
    00.. .... = Format: 0
    ..00 0011 = Chunk Stream ID: 3
    Timestamp: 0
    Body size: 190
    Type ID: AMF0 Command (0x14)
    Stream ID: 0
RTMP Body
    String '_result'
    Number 1
    Object (2 items)
        AMF0 type: Object (0x03)
        Property 'fmsVer' String 'FMS/3,0,1,123'
        Property 'capabilities' Number 31
        End Of Object Marker
    Object (4 items)
        AMF0 type: Object (0x03)
        Property 'level' String 'status'
        Property 'code' String 'NetConnection.Connect.Success'
        Property 'description' String 'Connection succeeded.'
        Property 'objectEncoding' Number 0
        End Of Object Marker
C->S

Window Acknowledgement Size 5000000

RTMP Header
    00.. .... = Format: 0
    ..00 0010 = Chunk Stream ID: 2
    Timestamp: 0
    Body size: 4
    Type ID: Window Acknowledgement Size (0x05)
    Stream ID: 0
RTMP Body
    Window acknowledgement size: 5000000