RTMPT,RTMP的变种,此协建立在HTTP协议之上,是通过HTTP封装后的RTMP协议,默认端口80。
RTMPS,RTMP的另一个变种,此协议是通过SSL(Secure Sockets Layer 安全套接层)加密的RTMP协议,为数据通讯提猜橘供安全支持梁亩。SSL在传输层对网络连接进行加密,默认端口443。
RTMPE,RTMP的变种,RTMPE是一个加密版本的RTMP,和RTMPS不同的是RTMPE不采用SSL加密,RTMPE加密快于SSL,并且不需要认证管理。如果没有指定RTMPE端口,Flash播放器将像RTMP协议一样依次扫描下列端口,1935(RTMPE),443(RTMPE) ,80(RTMPE),80(RTMPTE)。
RTMPTE,RTMPTE 这个协议是一穗渣团个通过加密通道连接的RTMPE,默认端口80。
RTMFP,RTMFP是Adobe公司开发的一套新的通信协议,该协议可以让使用Adobe Flash Player的终端用户之间进行直接通信。
RTMP是Real Time Messaging Protocol(实时消息传输协议),是adobe公司的协议。视频直宏旅唤播有多种协议,使用rtmp协议的就是rtmp直播。
直播流就是视频蔽凯流镇中,即传递的视频数据。
RTMP协议与 FLV 又有什么关系呢?实际 上,FLV文件与 RTMP 之间是“近亲”关系,甚至比“近亲”还要近,亲得就好像是“一个人”似的。
我们先来看一下 FLV 的文件格式,如下图所示:
阅读 FLV 格式规范文档 从图中我们可以看出,FLV 文件格式由 FLV Header 和 FLV Body 两部分组成。其中,FLV Header 由 9 个字节组成,Body由 Pre TagSize 和 Tag 组 成。
为使你对它们有一个更清楚的认知,下面我们就来详细介绍一下 FLV Header 和 FLV Body。
它由 9 个字节组成:3个字节的 “ F ”“ L ”“ V ”字母,用于标记该文件是 FLV 文败局洞件1个字节的 Version , 指明使用的 FLV 文件格式的版本1个字节的 Type 标识,用于表明该FLV文件中 是否包括音频或视频 4个 字节的 FLV Header ⻓度,由于 FLV 文件格式头是固定 9 个字节,这个字段设置得有点多余。
Type 标识(TypeFlag)又可以细分为: 1bit 用于标识FLV文件中 是否有音频数据 1bit标识FLV文件中 是否有视频数据 如果两个 bit 位同时置 1,说明该FLV 文件中既有音频数据又有视频数据,这也是通常情况下 FLV Header 的设置除了两个 bit 的音视频数据标识外, 其他位都是预留位,必须全部置0 。详细的含义可 以参考下面张图表:
这张图表清晰地表达了 FLV Header 中每个域所占的字节以及该域的具体含义。
从“FLV文件格式结构图”我们可以看出,FLV Body 是由多个 Previous TagSize 和 Tag 组成的。其含义如 下图表所示,其中 PreviousTagSize 占 4个字节 ,表示前一个 Tag 的大小。这里需要注意的是, 第一个 Previous TagSize 比较特殊,由于它前面没有 Tag 数据,所以它的 值必须为 0 。
接下来我们再来看一下 FLV 中的 Tag ,从 FLV文件格式结构图中我们可以看到 Tag 由两部分组成,即 Tag Header 和 Tag Data 。
Tag Header 各字段的含义如下图所示:
而Tag Data 中存放的数据,是根据 TagType 中的类型不同而有所区别的。也就是说,假如 TagType 指定的 是音频,那么 Tag Data中存察枯放的就是音频数据如果 TagType 指定的是视频,则Tag Data中存放的就腊圆是视 频数据。
无论 TagData 中存放的是音频数据还是视频数据,它们都是 由 Header 和 Data 组成 。也就是说,如果该 Tag 是一个音频 Tag ,那么它的数据就是由“ AudioHeader + AudioData ”组成如果是一个视频 Tag,则它的数据是由“ VideoHeader + VideoData ”组成。
翻看 RTMP协议 ,查看它的 6.1.1 小节,你会发现它定义的 RTMP Message Header 与 Tag Header 是一模一样的。下图是我从 RTMP 协议中截取的协议头:
因此,我们可以说 FLV文件 就是由“ FLV Header + RTMP数据 ”构成的。这也揭开了 FLV与 RTMP之间的关 系秘密,即 FLV 是在 RTMP 数据之上加了一层“⻢甲”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)