概述
连接成功之后由客户端选择publish还是play,这里讲的是publish。
1、C->S : releaseStream、FCPublish、createStream
- releaseStream:释放stream,这一步的作用是通知服务端释放对应的stream,以便接下来重新创建stream。
- FCPublish
- createStream
2、S->C : _result
服务端对客户端releaseStream、FCPublish、createStream请求的反馈
3、C->S : publish
客户端向服务端请求publish
4、C->S : Set Chunk Size
客户端向服务端指定Chunk的大小
5、S->C : onStatus
服务端对客户端publish请求的反馈
举例
以下为使用wireshark抓包的部分内容:
C->S
AMF0 Command releaseStream(‘stream01?user=aj001&token=tk123456’)
RTMP Header
00.. .... = Format: 0
..00 0011 = Chunk Stream ID: 3
Timestamp: 0
Body size: 63
Type ID: AMF0 Command (0x14)
Stream ID: 0
RTMP Body
String 'releaseStream'
Number 0
AMF0 type: Number (0x00)
Number: 0
Null
AMF0 type: Null (0x05)
String 'stream01?user=aj001&token=tk123456'
AMF0 Command FCPublish(‘stream01?user=aj001&token=tk123456’)
RTMP Header
00.. .... = Format: 0
..00 0011 = Chunk Stream ID: 3
Timestamp: 0
Body size: 59
Type ID: AMF0 Command (0x14)
Stream ID: 0
RTMP Body
String 'FCPublish'
Number 0
Null
String 'stream01?user=aj001&token=tk123456'
AMF0 Command createStream()
RTMP Header
00.. .... = Format: 0
..00 0011 = Chunk Stream ID: 3
Timestamp: 0
Body size: 25
Type ID: AMF0 Command (0x14)
Stream ID: 0
RTMP Body
String 'createStream'
Number 2
Null
S->C
AMF0 Command _result()
RTMP Header
00.. .... = Format: 0
..00 0011 = Chunk Stream ID: 3
Timestamp: 0
Body size: 29
Type ID: AMF0 Command (0x14)
Stream ID: 0
RTMP Body
String '_result'
Number 2
Null
Number 1
C->S
AMF0 Command publish(‘stream01?user=aj001&token=tk123456’)
RTMP Header
00.. .... = Format: 0
..00 0011 = Chunk Stream ID: 3
Timestamp: 0
Body size: 64
Type ID: AMF0 Command (0x14)
Stream ID: 1
RTMP Body
String 'publish'
Number 0
Null
String 'stream01?user=aj001&token=tk123456'
String 'live'
C->S
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
S->C
AMF0 Command onStatus(‘NetStream.Publish.Start’)
RTMP Header
00.. .... = Format: 0
..00 0101 = Chunk Stream ID: 5
Timestamp: 0
Body size: 105
Type ID: AMF0 Command (0x14)
Stream ID: 1
RTMP Body
String 'onStatus'
Number 0
Null
Object (3 items)
AMF0 type: Object (0x03)
Property 'level' String 'status'
Property 'code' String 'NetStream.Publish.Start'
Property 'description' String 'Start publishing'
End Of Object Marker