RTMP协议分析

所需积分/C币:10 2011-10-31 18:25:50 492KB PDF
收藏 收藏
举报

描述了RTMP规范文档描述的发布视频流的步骤。
22“C1”结构体 〗123斗5678g01234567812345678901 十-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+-+-+-+-+-+- (4kvte吕 -+-+-+-+-+-十-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-十-+-+-+-+-+-+-十一十 [4 btes 十一十-十一+一+一十一+一十一十一+一+-+-+一十一十一+一十一+一+一十一一+一+一+-+-+-十-+-+-+一十一十 随机字节〔1528 bytes 图4:C1和S1的结构体 时间”通常为“0”, 零”一定为“0”。 总长度为1536字节 23“C2”结构体 123456 1234567890123456789口 -+-十-+-+-+-+-+-+-+-+-+-+-十-+-+-+-+-+- 十+-+-+-+-十 十-十- 时(4te -+-+-+-+-+-+-+-+一+-+- 十-+-+-十 时 4ite三) 十-+-+-+-+- -+-+-+-+-+-+-+- 随机值〔1528 -+-+-+-+-+-十-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 图5:C2和s2的结构体 时间”为S1的“时间” “时间2”为前一个包C1的发送时间戳 3流程第二步:连接 200g Client Handshaking don Command Message (connect) < WindoW Acknowle dement size e七卫e已 Bandwidth Lindi knowle deferment User Control Message(StreamBegin C 吕a可 result- connect response) tt 图6:连接控制消息的流程图 1.客户端发送“命令消息 connect command”到服务器,请求连接到服务器应用程序实例 2.收到“ connect command”后,服务器发送“协议消息 Win dow Ack nowle dge Size”到客 户端;同时服务器也连接到 Command Message中提到的应用程序实例 服务器发送“协议消息 Set peer bandwidth”到客广端 4.客户端收到“协议消息 Set peer bandwidth”后,就发送“办议消息 Window Acknowledgement Size”到服务器 5.服务器发送力一种“协议消息”—“用户控制消息 Streambegin”到客户端。 31确认消息( Window Acknowledgement Size) 当服务器或客户端需要向对方发送确认消息时,发送 Window Ac know ledgement size给对方, 来告知对方使用多大的 Window size。例如,服务端每次冋客户端发送消息之后都会等待客 户端的确认消息,如果过程成功则服务器会加大 Window size 2 山124 日L12:4当白}yi -+-+-+ 十-+一+-+-+-+一+-+-+-+-+-+-+-+-+-+-+-+-+ Acknowledgement Window size (i byte +-+-+-+-+ 32命令消息( Command message) 命令消息”负载了AMF编码的命令。这些消息有不同的类型,20表示AMFO编码,17表 小AMβ3编码。发送这些消息可以实现如:连接、创建流、发布、攆放、暂停等操作。 33消息头格式 Invoke Message 53 道百 时可 12字节头消息 00 b- 肖息体太小 14 肖息体 消息类型,为- minke MeSsagE 江,为0.0 34消息体格式 NetConnection connect() Message 030ccc18⊙12314000c8Q E2了636f6e6e656374 correct 3ff0⊙⊙ce ornection iD(value 1.e) 6361770 626e086f666c614465 fidem cd 6t @⊙8666c617368566572 2ec44582392C LNⅩ9,⊙, 2c33312c3 67377665576C Sn'flr li B2036687474703a2f2千http://192.1 1393223136323122378.1,7/ sof tware/gash/ testS!0f1 96273666747761765211 cemb.Swf. 67 6e61736 745774 ∠f6f666c61564E56d6f2e 737766 匚e05742635726c cuRl 日2⊙1572746c763a2 tmp://LocaLhost/of -aD 2f66f63816c686f7742 Ef666c6144656d6f 46676164 Q1 Q9 BOCL∈ an false 00 Ob 61 75 64 69 6f 43 6f 62"aLdiocodecs" 656373 6e40833800e0600e|( a double 未完 @b766964656f436f64 656373 0e405f0eg9 a double (value _24.0 Go Od 76 69 64 65 6f 46 75 6e"videoFunction 6374696-6e 00 3f f0 0000 00 90 00 00(a double)(value =O) ③了76167555572f nage rI 200276874747032fttp://x86 2f c3 78 38 6 2d 75 62 75 6e 74 mount u/software/gnash/tests/ 752f7366674776172652f 6766173682「7465737473 2f ②3②9 end of obiect 35连接成功返回消息 Successfu NetConnectionconnecto Message 2⊙③75f72657376C74 result orne tion⊥( va lue1.e】 (stat abject) e666d7566372 92000e464532f332c"Fs:3,@,,1157 00 Oc 63 61 70 61 62 69 6c 69"capabilities f46965了 09403f6060900000( a double)( value31.@ c10 0 gg (erd of object sta↑rhje↑》 56c6576656 2000673746177573" staus 84636f6465 CCOE 92014e6574436f6e"Ne nection, Connect si 656374896fEe2e436f6e 6e65874253756363653 @b6465736372697@了74 d∈ script1o7 696f 92 00 15 43 6f 6e 6e 65 63"Ccnnection succeeded 7469fe2737563636565 未完 465642e 00 0: 6f 62 Ga 6J 63 74 45 6e"gbjectEncocing 3 6t 64 69 be 6/ e56⊙0ee50 a double)( value.@〕 end of objec=) 36设置对等带宽消息 在连接成功之后,服务器发送 Con nection. Succeeded消息之后,服务器又发送这条消息来测 试客户端与服务器之间的带宽。 以下消息设置带宽为默认的“未定义”。 030@c8131 92 00 03 6f Ge 42 57 44 Bf Ge G5"onLWCone 000⊙000c。B a couble (value 0.0) 4流程第三步:创建流 41消息体格式 NetStream create Stream( Message TMP8宁节通运 时间戳 值为29,待 消息体大小 息类型,为 E2332656174655374字符串值;“m” 26615d 4如。8。 字流邛,值为30 节 C5 床知 42创建成功返回消息 Resuit Message TMP日字节头通道 9⊙0 到 ⊙⊙91d 头息体大小 肖息类丑,为工 evoke Hessa 2⊙5f72657756C74 字符串值:“ result” 4∞③ 流工,值3.0 3千6⊙eo@eb8e 连接I,值为10 5流程第四步:发布 51命令:发布 Publish Message 08 RTMP通道8,12字节头 0000be 时间戳 000029 消息体大小 14 消息类型,为 evoke Message 01000000 流1D,为 0200077075626697368 命令标识,字符串值:“ publish” 000000000000000000 CallID 05 Null 02000b6c69766573747265616d32发布流的名称,字符串值“ livestream2” 0200046c697665 发布流的类型,字符串值“ive” 52用户控制消息( User Control Message) 服务端和客户端通过这种消息来通知对方“用户控制事件”,消息的柊式依赖于 User ControlMessage选择的编码格式。 Event Type 2-bytes I Event Dat a 消息前两个字节标记“事件类型” 后面的数据为“事件数据”,其大小多种多样 用户控制事件有如下几大类: ● Stream begin Stream eoF: Stream d ● Set Buffer length ● Stream is recorded Ping requests Ping response: 53控制:流开始 Stream Begin message 0000 事件类型,0表示类型为“ Stream Begin” 00000000 事件数据,在 StreamBegin下为流ID,默认为0 54数据消息( Data Message) 服务器和客户端通过这种消息来发送“元数据”或“用户信息”到对方。元数据包含廾始时 间,时长,上题等与音视频有关的信息。 这些消息使用18标识为AMF0编码,使用15标识为AMF3编码。 55上传:元数据 56上传:音频数据 5.7设置:分块大小 58返回:命令成功 Invoke OnStatus Message 04 RTMP通道4,8字节头 000000 时间戳 00008b 消息体人小 14 消息类型,为 Invoke Message 01000000 流ID,为1 0200086f6e537461747573 命令标识,字符串值:“ on Status” Call ld START OBJECT 00056c6576656c 00类字符串,值:“ ' level” 020006737461747573 02类字符串,值:“ status” 0004636f6465 00类字符串,值:“code”

...展开详情
试读 11P RTMP协议分析
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
roga2958 看了一下,楼主还是挺用心的,不过内容不多不够详细
2013-09-10
回复
binquare 到处都找不到,没想到这里有。
2012-10-13
回复
msske 谢谢。正是我需要的。内容正点。
2012-09-18
回复
上传资源赚积分or赚钱
最新推荐
RTMP协议分析 10积分/C币 立即下载
1/11
RTMP协议分析第1页
RTMP协议分析第2页
RTMP协议分析第3页

试读结束, 可继续读1页

10积分/C币 立即下载 >