RTMP代理的协议规范(RtmpProxy)

RtmpProxy

关于RTMP代理的协议规范。RTMP是字节协议,第一个包是c0,1个字节,一般是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长度,即Size<=1537

例如,标准RTMP客户端的消息:

03            // 客户端的C0包,后面是C1C2,以及其他的消息。

或者,代理客户端发送的消息:

F3            // 表示是RTMP代理
00 04         // 表示Extra有4字节
C0 A8 01 67   // 表示客户端IP,C0.A8.01.67,即192.168.1.103
03            // 客户端原始的C0数据。从这个数据(包括它本身)开始,就是客户端发送的消息了,譬如C1C2。

RTMP协议,譬如握手的C0、C1、C2、S0、S1、S2,以及数据部分,都没有变更。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经典地址收集

http://kuler.adobe.com/ 配色网站转载于:https://www.cnblogs.com/Wolves/archive/2010/11/08/1871914.html

Java Math类toDegrees()方法与示例

数学类toDegrees()方法 (Math class toDegrees() method) toDegrees() method is available in java.lang package. toDegrees()方法在java.lang包中可用。 toDegrees() method is used to convert an angle from radians to degrees. toDegrees()方法用于将角度从弧度转换为度…

谈谈Hybird3D中的光栅化优化

看到空明流转分享了他的SALVIA 0.5.2优化谈&#xff0c;我也来说说Hybird3D中和光栅化相关的一些优化技术。 Hybird3D的设计目标是打造一款准实时的软件高质量渲染器&#xff0c;采用了光栅化和光线跟踪混合算法&#xff0c;光栅化用于渲染eye ray&#xff0c;光线跟踪则用于阴…

RTP协议基本分析(RTSP、WebRTC使用)

目录1、介绍2、RTP3、格式4、RTP打包H2644.1、H264打包方式之Single NAL Unit4.2、H264打包方式之FU-A4.2.1、FU indication4.2.2、FU header4.2.3、第一个IDR帧的NALU第一个切片4.2.4、第一个IDR帧的NALU第二个切片4.2.5、第一个IDR帧的NALU最后一个切片5、RTP打包AAC5.1、AU-…

对照片进行边缘化处理,并将边缘化处理后的结果保存

对照片进行边缘化处理&#xff0c;并将边缘化处理后的结果保存 import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径&#xff0c;注意照片路径最后一个为正斜杠其他都为反斜杠&…

小皇帝,篮球,热火

失败&#xff0c;又一次&#xff0c;完全预料之中. 热火的防守早已是千疮百孔&#xff0c;热火的攻击也是乱无头绪. 现在的热火&#xff0c;需要詹姆斯无球的跑动&#xff0c;需要韦德的助攻。 转载于:https://www.cnblogs.com/JeffChen/archive/2010/11/12/2600335.html

fastjson转换时有大括号或者冒号或者有中括号_[Python Basic] 字符串处理以及类型转换 1...

String Manipulation & Typecasting (1)1. 文本复制以及连接1.1 Multiply sign使用 multiply sigh/乘号* 来复制文本片段。乘号复制文本举例&#xff1a; print("Hi" * 3) # output: HiHiHi print("*" * 10)# output:**********1.2 连接1.2.1 使用 plu…

Java IdentityHashMap size()方法与示例

IdentityHashMap类的size()方法 (IdentityHashMap Class size() method) size() method is available in java.util package. size()方法在java.util包中可用。 size() method is used to return the size (i.e. How many key-value pair exists) of this IdentityHashMap. siz…

读《深入分析Java Web技术内幕》

这里这本书的预读章节&#xff0c;看完预读部分&#xff0c;解答了一些疑惑&#xff0c;也相信这是一本夯实Java Web架构体系的好书。 HTTP协议解析 开发一般使用firefox的firebug调试&#xff0c;这的确是一个利器&#xff0c;HTTP的请求头响应头一目了然。 浏览器缓存机制 当…

windows mobile多国语言实现[转]

介绍一种多国语言的实现办法&#xff0c;这也是微软推荐的方式&#xff0c;打开windows mobile下的windows目录可以看到有很多以MUI为后缀名的文件&#xff0c;例如shellres.dll.0804.mui、shell.dll.0804.mui。。。。。。我们可以用eXeScope.exe或者resources hacker这样的文件…

RTSP协议基本分析

目录一、介绍二、RTSP与HTTP三、RTSP推流基本过程1、OPTION 查询服务器端可用方法1.1、Client 请求1.2、Server 回复2、ANNOUNCE 发送媒体描述信息2.1、Client 请求2.2、Server 回复3、SETUP建立RTSP会话3.1、Client 请求&#xff08;视频流&#xff09;3.2、Server 回复&#…

找取照片上的25个特征点,并保存结果

找取照片上的25个特征点&#xff0c;并保存结果 import numpy as np import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径&#xff0c;注意照片路径最后一个为正斜杠其他都为反斜杠…

nutsdb与mysql_分享下 nutsdb 单机 1 亿、10 亿数据实测

大家好&#xff0c; 想给大家分享下我最近为 nutsdb 做的数据测试。测试项目起因事情起因是这个 issue &#xff0c;简单说就是内存高了&#xff0c;不够用了。可能很多人不知道 NutsDB。简单介绍下&#xff0c;NutsDB 是我几个月以前开源的一个 Go 语言编写的内嵌型 KV 数据库…

java 方法 示例_带有示例的Java EnumSetSupplementOf()方法

java 方法 示例EnumSet类complementOf()方法 (EnumSet Class complementOf() method) complementOf() method is available in java.util package. clipartOf()方法在java.util包中可用。 complementOf() method is used to contain all the elements of this EnumSet that are…

在需要时开启Perl新特性

从5.10开始&#xff0c;新特性必须开启才能使用。Perl默认不启用新特性保持向后兼容。 如果想启用新特性&#xff0c;可以使用新的-E开关。打开所有的新特性。 % perl5.10.1 -E say.pl #开启5.10.1 版本的所有新特性 在源代码中使用 use 指令之后指定perl版本号就可以了。 use …

P2P技术详解(一):NAT详解——详细原理、P2P简介

目录1. IPv4协议和NAT的由来2. NAT的工作模型和特点2.1、NAT的概念模型2.2、一对一的NAT2.3、一对多的NAT2.4、按照NAT端口映射方式分类2.4.1全锥形NAT2.4.2限制锥形NAT2.4.3端口限制锥形NAT2.4.4对称型NAT3. NAT的限制与解决方案3.1、IP端到端服务模型3.2、NAT的弊端3.3、NAT穿…

决定孩子命运的八大关键问题

你可以不是天才&#xff0c;但你可以是天才的父母&#xff01;树立做父母正确的家庭教育观念&#xff0c;为孩子建造一个良好的人生平台&#xff0c;让孩子有很好的人格修养&#xff0c;懂得做人&#xff0c;懂得成功的真正含义。简单方便&#xff0c;容易操作&#xff0c;适合…

java calendar_Java Calendar internalGet()方法与示例

java calendar日历类internalGet()方法 (Calendar Class internalGet() method) internalGet() method is available in java.util package. internalGet()方法在java.util包中可用。 internalGet() method is used to get the value of the given field(fi) of this Calendar …

显示照片的二维直方图

显示照片的二维直方图 import cv2 from matplotlib import pyplot as plt img cv2.imread(E:\Python-workspace\OpenCV\OpenCV/water1.png,1)#第一个参数为选择照片的路径&#xff0c;注意照片路径最后一个为正斜杠其他都为反斜杠&#xff1b;第二个参数&#xff0c;其中1表示…

周五怎么表示 mysql_完美起航-MySQL找每个月最后一个星期五--函数定义与使用

数据库作业有一道题是这样子的&#xff1a;有一张名叫emp的表记录员工信息&#xff0c;其中有如下字段 HIREDATE 表示员工被雇用的日期&#xff1a;然后问题是这样的&#xff1a;q7.Show details of employee hiredates and the date of their first payday.(Paydays occur on…