RTMPT

转自http://www.openred5.com/bbs/viewthread.php?tid=196

英文原地址:http://www.joachim-bauch.de/tutorials/red5/SPEC-RTMPT.html/view

等一段时间后我也去整理一个出来,因为现在还没有用到rtmpt,只用到rtmp和rtmpe,所以没有时间去研究。

译:RTMPT协议说明书

SPEC-RTMPT_zh_CN.txt

RTMPT协议说明书
===================================

:author:    Joachim Bauch
:contact:   mail@joachim-bauch.de
:date:      2006-03-23
:copyright: `Creative Commons License (by-sa)`__

__ http://creativecommons.org/licenses/by-sa/2.5/

翻译:屹砾(www.OpenRed5.com#glseda)
联系:glseda@qq.com
日期:2007-06-17

译者的话:
Red5的资料有点乱,没有什么头绪。但是把这些资料翻译成中文多少会有一些帮助,即使有时翻译的内容也不是那会容易看懂。如果大家有时间,也希望能够选择一些资料翻译出来,然后发布到OpenRed5中文社区http://www.OpenRed5.com,让我们大家共同进步。

概述
--------
此文档描述RTMPT通道协议在Red5开源FLASH服务器上的实现。请注意:此文档不是Macromedia官方规范说明书,但是可以帮助人们开始使用RTMPT开发软件。

RTMPT基本上是一个RTMP协议的HTTP包装。它发送POST请求从客户端到服务端。因为HTTP连接是非持久性的,RTMPT需要客户端获得周期性的更新,顺序的得到从服务端或其它客户端产生的事件通告。

在一个RTMPT会话周期,下面描述四个可能会发送到服务端的请求类型。

URLs
----
URL以以下形式打开:
   
    http://server/<comand>/[<client>/]<index>

`<command>`
  指示RTMPT请求类型。
`<client>`
  指定执行请求的客户端编号(只发送已确定的会话)
`<index>`
  是一个连续的数字,好象是用于侦测丢失的包。

请求/响应(Request / Response)
------------------
所有的HTTP请求共享一些公用属性:

  - 使用HTTP 1.1 POST。
  - 内容类型为`application/x-fcs`。
  - 连接会保持活动,这样客户端和服务端会减少网络开销。

HTTP响应也共享一些属性:

  - 内容类型为`application/x-fcs`.
  - 所有已确定会话的响应数据的首字节控制客户端检测间隔时间,更高的值表示较少的检测请求。
(译注:polling,检测,可能翻译得不够准确)

检测间隔时间(Polling interval)
----------------
在数据返回后,服务器会以0x01开始,在10次空的回复之后自动增长这个值。最大的延时是0x21,在两次请求之间的延时大约在0.5秒左右。

Red5通常按下列步骤增长延时:
0x01, 0x03, 0x05, 0x09, 0x11, 0x21.

初始化连接(命令"open")
--------------------------------
这是首次请求,会顺序的发送到服务器,注册一个客户端并开始一个新的会话。服务器回复一个惟一的ID(通常是一个数字)给客户端,以便于之后的请求。

注意:回复不会包含检测间隔时间值。成功的连接会重设连续索引以用于URL。

客户端更新(命令"send")
-------------------------------
从客户端发送到服务器的数据会加一个HTTP头作为RTMP的前缀(译注:即RTMPT)。

如果有效的话,服务器响应以HTTP响应,包含一个字节的控制检测间隔时间和RTMP数据,。

检测请求(命令"idle")
---------------------------------
如果客户端没有包含更多的数据发送到服务器,他可以检测更新,会收到流数据或事件,例如共享对象。


断开会话连接(命令"close")
-----------------------------------------
如果客户端希望终止连接,他可以发送close命令到服务器,服务器会回复0x00。
原文地址:https://www.cnblogs.com/k1988/p/2165698.html