做淘宝头像的网站,湖州专业做网站,南京市住房建设网站,佛山网站制作的公司RtmpProxy
关于RTMP代理的协议规范。RTMP是字节协议#xff0c;第一个包是c0#xff0c;1个字节#xff0c;一般是03表示是明文的RTMP。所以如果需要做RTMP代理#xff0c;如果直接转发RTMP客户端的消息#xff0c;是没法传递额外的信息的#xff0c;譬如HTTP代理在Head…RtmpProxy
关于RTMP代理的协议规范。RTMP是字节协议第一个包是c01个字节一般是03表示是明文的RTMP。所以如果需要做RTMP代理如果直接转发RTMP客户端的消息是没法传递额外的信息的譬如HTTP代理在Header中传递的X-Real-IP即客户端的IP就没法给RTMP的后端了。
因此RTMP的Proxy协议必须使用私有协议c0的意义必须改写了譬如另外一个值表示是代理后面跟随了一些协议信息这个协议就是RTMP Proxy协议。
Protocol 使用网络字节序big-endian。在C0前插入代理的包兼容RTMP标准协议。
标准RTMP协议如下
C0, 1B, 03表示明文RTMP。后面是C1C2以及其他消息。RTMP代理协议如下
F3, 1B常量0xF3表示RTMP代理协议。
Size, 2B, 表示代理数据的长度即Size和C0之间的数据。
X-Real-IP, 4B, 表示客户端的真实IP。
C0, 1B原始客户端的C0方便代理直接转发客户端的数据。
备注一般Size应该不超过C0C1长度即Size1537。例如标准RTMP客户端的消息
03 // 客户端的C0包后面是C1C2以及其他的消息。或者代理客户端发送的消息
F3 // 表示是RTMP代理
00 04 // 表示Extra有4字节
C0 A8 01 67 // 表示客户端IPC0.A8.01.67即192.168.1.103
03 // 客户端原始的C0数据。从这个数据包括它本身开始就是客户端发送的消息了譬如C1C2。RTMP协议譬如握手的C0、C1、C2、S0、S1、S2以及数据部分都没有变更。