版权声明:本文为博主原创文章,转载请注明原地址。 https://blog.csdn.net/Jacob_job/article/details/81866212
概述
连接成功之后由客户端选择publish还是play,这里讲的是play。
1、C->S : createStream
2、S->C : _result
服务端对客户端createStream请求的反馈
3、C->S : getStreamLength、play、Set Buffer Length
- getStreamLength:获取stream的时间长度
- play:请求播放
- Set Buffer Length:
4、S->C : Stream Begin 1
5、S->C : onStatus
服务端对客户端play请求的反馈
6、S->C : |RtmpSampleAccess
举例
以下为使用wireshark抓包的部分内容:
C->S
AMF0 Command createStream()
Response to this call in frame: 940
RTMP Header
01.. .... = Format: 1
..00 0011 = Chunk Stream ID: 3
Timestamp delta: 0
Timestamp: 0 (calculated)
Body size: 25
Type ID: AMF0 Command (0x14)
RTMP Body
String 'createStream'
Number 2
AMF0 type: Number (0x00)
Number: 2
Null
AMF0 type: Null (0x05)
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 getStreamLength()
RTMP Header
00.. .... = Format: 0
..00 1000 = Chunk Stream ID: 8
Timestamp: 0
Body size: 39
Type ID: AMF0 Command (0x14)
Stream ID: 0
RTMP Body
String 'getStreamLength'
Number 3
Null
String 'stream01'
AMF0 Command play(‘stream01’)
RTMP Header
00.. .... = Format: 0
..00 1000 = Chunk Stream ID: 8
Timestamp: 0
Body size: 37
Type ID: AMF0 Command (0x14)
Stream ID: 1
RTMP Body
String 'play'
Number 4
Null
String 'stream01'
Number -2000
User Control Message Set Buffer Length 1,3000ms
RTMP Header
01.. .... = Format: 1
..00 0010 = Chunk Stream ID: 2
Timestamp delta: 1
Timestamp: 1 (calculated)
Body size: 10
Type ID: User Control Message (0x04)
RTMP Body
Event type: Set Buffer Length (3)
S->C
User Control Message Stream Begin 1
RTMP Header
00.. .... = Format: 0
..00 0010 = Chunk Stream ID: 2
Timestamp: 0
Body size: 6
Type ID: User Control Message (0x04)
Stream ID: 0
RTMP Body
Event type: Stream Begin (0)
AMF0 Command onStatus(‘NetStream.Play.Start’)
RTMP Header
00.. .... = Format: 0
..00 0101 = Chunk Stream ID: 5
Timestamp: 0
Body size: 96
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.Play.Start'
Property 'description' String 'Start live'
End Of Object Marker
AMF0 Data |RtmpSampleAccess()
RTMP Header
00.. .... = Format: 0
..00 0101 = Chunk Stream ID: 5
Timestamp: 0
Body size: 24
Type ID: AMF0 Data (0x12)
Stream ID: 1
RTMP Body
String '|RtmpSampleAccess'
Boolean true
Boolean true