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/archive/2009/11/24/2165698.html

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

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

相关文章

前端学习(3339):ant design中加上icon图标

当需要在 Button 内嵌入 Icon 时&#xff0c;可以设置 icon 属性&#xff0c;或者直接在 Button 内使用 Icon 组件。 如果想控制 Icon 具体的位置&#xff0c;只能直接使用 Icon 组件&#xff0c;而非 icon 属性。 ReactDOM.render(<div><Button type"primary&qu…

Hello Qt(在Linux下编写运行Qt程序)

From: http://www.yafeilinux.com/?p763 <一>Hello Qt小试牛刀&#xff01; 说明&#xff1a;我们需要在Linux下已经安装了Qt。 1.下面是整个程序的详细介绍&#xff1a; #include <QApplication> //第一行是定义一个应用程序类<QApplication>的头文件&…

git pull提示当前branch没有跟踪信息

在执行git pull的时候&#xff0c;提示当前branch没有跟踪信息&#xff1a; git pull There is no tracking information for the current branch. Please specify which branch you want to merge with.对于这种情况有两种解决办法&#xff0c;就比如说要操作master吧&#x…

触发器三(行级DML触发器)(学习笔记)

行级DML触发器 每当一条记录出现更新操作时进行触发操作定义时要定义FOR EACH ROW 使用":old.字段"和":new.字段"标识符 No.触发语句 :old字段:new字段1INSERT 未定义&#xff0c;字段内容为NULLINSERT操作结束后&#xff0c;为增加数据值2UPDATE更新数据…

解开 Windows 下的临界区中的代码死锁(转)

摘要 临界区是一种防止多个线程同时执行一个特定代码节的机制&#xff0c;这一主题并没有引起太多关注&#xff0c;因而人们未能对其深刻理解。在需要跟踪代码中的多线程处理的性能时&#xff0c;对 Windows 中临界区的深刻理解非常有用。 本文深入研究临界区的原理&#xff0c…

用Python和Pygame写游戏-从入门到精通(1)

From: http://eyehere.net/2011/python-pygame-novice-professional-1/ 博客刚开&#xff0c;打算做一个Pygame的系列&#xff0c;翻译自Will McGugan的《Beginning Game Development with Python and Pygame –From Novice to Professional》&#xff0c;有兴趣的朋友可以搜一…

解决el-select后台一次返回大数据量渲染慢导致页面卡顿的问题

场景一 解决了一次性渲染大量数据问题 业务场景是后台一次返回10万多条数据需要在下拉框中展示,直接渲染会导致页面卡顿且需要很长时间等待,用户体验极差,所以我把这个改造了一下,直接上代码, 里面注释写的很清楚了就不解释了. <template><div class"content&q…

c++ primer 笔记 (二)

第二章笔记 &#xff08;貌似记得有点多&#xff09; 把负值赋给unsigned对象时完全合法的&#xff0c;其结果是该负数对该类型的取值个数求模后的值 -1 &#xff08;对265求模&#xff09; 255float型只能保证6位有效数字&#xff0c;而double型至少可以保证10位有效数…

c#按ESC退出 或者接受其他键盘消息

From: http://blog.csdn.net/chenshizero/article/details/2173443 先将窗口的KeyPreview设置为true,然后再在窗口的KeyPressUp事件中写代码就可以了 private void Form1_KeyUp(object sender, KeyEventArgs e){if(e.KeyValue 27)//if (e.KeyData Keys.Escape)Application.Ex…

在诺基亚S60v3上运行.NET程序

诺基亚手机采用的几乎都是Symbian OS操作系统。而.NET Framework则是Windows平台的专利&#xff0c;因此.NET程序只能运行在使用Windows Mobile系统的手机上。那么Symbian OS是否就没法运行.NET程序了呢&#xff1f; 答案是否定的。RedFiveLabs一直致力于在Symbian OS上实现.NE…

React开发(162):React关于 this.props.children 总结

this.props.children 的值有三种可能&#xff1a; 如果当前组件没有子节点&#xff0c;它就是 undefined ; 如果有一个子节点&#xff0c;数据类型是 Object&#xff1b; 如果有多个子节点&#xff0c;数据类型就是 Array。

GIT提交的时候出现 ! [rejected] master -> master (non-fast-forward)错误

搜了好久&#xff0c;才找到一个能用的&#xff0c;上面的大概意思是本地库和远程库没有同步导致无法提交合并&#xff0c;那么找到原因了就好办了&#xff0c;只要将本地库和远程库同步就可以了。 git pull origin master --allow-unrelated-histories 或 git pull origin re…

响应式布局---菜单

一个简单的响应式菜单,仅使用media query实现. 上图的作用就是将普通的菜单在缩小浏览器屏幕到一定宽度,或者是在移动设备上的显示效果.现在分步进行实现: 第一步:先构建一个普通的菜单,具体显示如图: 结构如下: <nav class"nav"><ul><li class"…

C# 窗口全屏 隐藏任务栏 (代码)

From: http://blog.csdn.net/mask_of_zorro/article/details/2351091 为了解决C# Windows应用程序全屏显示&#xff0c;在网上找了很多解决方法。当然其中也有成功的方法&#xff0c;但看起来复杂且对我等菜鸟级的人来说更难于理解。其中发现以下几行代码实现真正的全屏显示&a…

Linux管理磁盘配额

&#xff21;、磁盘配额作用限制普通用户使用磁盘空间&#xff0c;不至于因为个别人的浪费而影响到其它人的正常使用&#xff1b;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />&#xff22;、需要内核的支持&#xff1b;&…

Element el-row el-col 布局组件详解

本文目录 背景分栏布局分栏间隔分栏偏移对齐方式响应式布局小结 1. 背景 element的布局方式与bootstrap原理是一样的&#xff0c;将网页划分成若干行&#xff0c;然后每行等分为若干列&#xff0c;基于这样的方式进行布局&#xff0c;形象的成为栅栏布局。 区别是element可…

sql数据库监控语句

--查找被阻塞进程 Select * from master..sysprocesses where dbid9 and blocked > 0--查找阻塞头进程 select * from master..sysprocesses p where dbid9 and blocked<0 and exists (select 1 from master..sysprocesses where blocked p.spid)--查找等待时间长的进程…

C# WinForm 中Label自动换行 解决方法

From: http://hi.baidu.com/tewuapple/blog/item/74070a2451cbcc7c36a80f76.html 在TableLayoutPannel中放着一些Label 如果把Label的AutoSize属性设成True的话&#xff0c;文字超过label长度时就会自动增加&#xff0c;直到后面的字出窗体以外 设置成False时&#xff0c;一旦…