- 浏览: 497195 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (185)
- job (15)
- linux/windows/unix/bash/shell (31)
- JAVA/J2EE/spring/hibernate/struts (30)
- VC/C++ (48)
- mysql/postgresql (6)
- php/jsp/asp/pear (1)
- FMS/flex/openlaszlo/red5/openmeetings (34)
- apache/tomcat/ftp/svn (6)
- xen/vm/Hadoop/cloudcompute (6)
- visual studio/eclipse/zendstudi/ant (8)
- others (1)
- windows异常处理 __try __except (1)
- (1)
- matlab (4)
- android (0)
最新评论
-
hongzhounlfd:
很透彻,很详细
依赖注入和控制反转 -
jefferyqjy:
谢谢~言简意赅~很明了!
依赖注入和控制反转 -
elderbrother:
太好了,谢谢
依赖注入和控制反转 -
east_zyd_zhao:
终于搞明白了
依赖注入和控制反转 -
Dremeng:
完美,一看就懂理解透彻
依赖注入和控制反转
RTMP协议封包分析 参考red5
2009年03月20日 星期五 18:57
原创
RTMP协议封包 参考Red5 RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时间戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录 了时间戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推 。包体最大长度默认为128字节,通过chunkSize可改变包体最大长 度,通常当一段AFM数据超过128字节后,超过128的部分就放到了其他的RTMP封包中,包头为一个字节. 完整的12字节RTMP包头每个字节的含义:
一、Head_Type 第一个字节Head_Type的前两个Bit决定了包头的长度.它可以用掩码0xC0进行"与"计算: Head_Type的前两个Bit和长度对应关系:
Head_Type的后面6个Bit和StreamID决定了ChannelID。 StreamID和ChannelID对应关系:StreamID=(ChannelID-4)/5+1 参考red5
二、TiMMER TiMMER占3个字节纪录的是时间戳,音视频流的时间戳是统一排的。可分为绝对时间戳和相对时间戳。
五、StreamID StreamID是音视频流的ID,如果AMFType!=0x08 或!=0x09那么 StreamID为0。 ChannelID 和StreamID之间的计算公式:StreamID=(ChannelID-4)/5+1 参考red5 例如当ChannelID为2、3、4时StreamID都为1 当ChannelID为9的时候StreamID为2 六、封包分析 例如有一个RTMP封包的数据03 00 00 00 00 01 02 14 00 00 00 00 02 00 07 63 6F 6E 6E 65 63 74 00 3F F0 00 00 00 00 00 00 08 ,,, 数据依次解析的含义 03表示12字节头,channelid=3 000000表示Timmer=0 000102表示AMFSize=18 14表示AMFType=Invoke 方法调用 00 00 00 00 表示StreamID = 0 //到此,12字节RTMP头结束下面的是AMF数据分析,具体的AMF0数据格式请参考 http://www.cnweblog.com/fly2700/archive/2008/04/09/281432.html 02表示String 0007表示String长度7 63 6F 6E 6E 65 63 74 是String的Ascall值"connect" 00表示Double 3F F0 00 00 00 00 00 00 表示double的0.0 08表示Map数据开始 |
发表评论
-
Red5安装和配置
2011-02-24 10:23 4048Red5安装和配置参考网页:http://www.cahblo ... -
基于Moodle平台的网站调查报告
2011-02-24 10:18 2576基于Moodle平台的网站调查报告 网站举例: ² 西南 ... -
moodle插件模块功能汇总
2011-02-24 10:03 5013Moodle官方提供654种插件或者模块moodle.org ... -
moodle 一体包安装手册(window)
2011-02-24 09:55 1285见附件 -
moodle中上传文件大小控制
2011-02-24 09:51 1842第一步:修改在php4下POST文件大小的限制1.编修php. ... -
linux下面安装moodle
2011-02-24 09:50 20851. 安装moodle运行 ... -
OpenMeetings安装文档
2011-02-15 11:09 2602OpenMeetings 是一个多语言可定制的视频会议和协作系 ... -
Compilation and Execution (openlaszlo)
2010-11-22 11:02 10507. Compilation and Exe ... -
Combining Tags and Script in LZX Programs (openlaszlo)
2010-11-22 11:01 13216. Combining Tags and ... -
Data Access, Manipulation, and Binding (openlaszlo)
2010-11-22 10:33 11975. Data Access, Manipu ... -
Constraints(openlaszlo)
2010-11-22 10:18 1126constraint 表示可变的变量赋值形式 In LZX, ... -
Events and Methods (openlaszlo)
2010-11-22 09:35 13743. Events,Methods ,han ... -
Dimdim&Moodle安装配置文档节选
2010-11-09 17:40 2551Dimdim&Moodle安装配置文档节选 ... -
Red5如何响应rmpt的请求,中间涉及哪些关键类?
2010-11-01 15:35 1544Red5如何响应rmpt的请求,中间涉及哪些关键类? 响应请 ... -
red5的eclipse插件和用法
2010-10-30 20:56 1141参见http://www.red5.org/wiki/Red5 ... -
red5集群分析
2010-10-28 19:42 50301. 边(Edge ): 1. 边的主要作用是管理连接,并可以 ... -
red5源代码分析
2010-10-26 08:59 3869Red5如何响应rmpt的请求 ... -
创建第一个red5程序
2010-10-25 15:33 21501.下载最新版本的RED5 http://osflash.or ... -
openlaszlo中多媒体组件介绍
2010-10-14 15:50 1130在openlaszlo中我们可以处理图像,音视频等媒体文件。详 ... -
openlaszlo组件的简单介绍
2010-10-14 15:50 1293openlaszlo组件的简单介绍 收藏 在写laszlo ...
相关推荐
Red5是一款开源的RTMP服务器,它提供了实现RTMP协议所需的功能。 RTMP协议封包由包头和包体两部分组成。包头的长度可以是12、8、4或1个字节,具体取决于包含的信息量。完整的12字节包头包含了以下关键信息: 1. **...
5. **流控制**:RTMP协议支持流的暂停、恢复和跳跃播放,这通过发送特定的控制消息实现。此外,协议还提供了错误检测和恢复机制,如重传和错误码。 6. **断线和重新连接**:如果网络中断,RTMP协议支持断线重连,...
* 高效传输:RTMP 块流可以将多媒体数据流压缩和封包,提高传输效率。 * 灵活性高:RTMP 块流可以适应不同的应用场景和网络环境。 RTMP 块流是一种功能强大且灵活的协议,非常适合实时多媒体数据流的传输。
- 转换RTSP流为RTMP流:使用FFmpeg命令行工具将摄像机采集的RTSP协议视频流转换为RTMP格式,并推送到Red5服务器。具体命令格式为:ffmpeg -i "RTSP流地址" -f flv -r 25 -s 640x480 -an "RTMP流地址"。其中-i后面跟...
RTMP(Real-Time Messaging Protocol,实时消息传输协议)是一种基于TCP的应用层协议,主要用于在互联网上传输音频、视频和其他类型的数据。它最初由Adobe Systems开发,用于Flash Player和服务器之间的实时流媒体...
### RTMP实时传输消息协议详解 #### 一、引言 RTMP(Real-Time Messaging Protocol)是一种由Adobe Systems开发的专用于音视频流传输的网络协议。它最初是为了支持Adobe Flash Player而设计的,但随着时间的发展,...
5. **缓冲机制**:RTMP协议有内置的缓冲机制,用于平滑网络波动对流媒体播放的影响。当网络状况不佳时,缓冲区可以存储一定量的数据,确保播放的连续性。 6. **错误处理**:协议中定义了错误处理机制,当出现错误时...
5. **调试和测试**:实现RTMP协议下载后,需要进行充分的测试,确保在各种网络环境下都能正常工作,包括连接稳定性、数据完整性、播放流畅性等。 6. **优化和扩展**:对于实际应用,可能需要考虑额外的优化,如缓存...
RTMP(Real-Time Messaging Protocol)协议是Adobe Systems开发的一种用于实时数据传输的协议,主要用于音频、视频流的传输,常用于在线直播、视频会议等场景。`rtmpdump`是基于RTMP协议的一个开源工具,它提供了一...
5. 握手协议:RTMP使用三次握手来建立客户端和服务器之间的连接。握手过程包括C0/C1/S0/S1/C2/S2消息的交换,确保双方有能力处理RTMP消息格式。 6. 协议控制消息:文档详细介绍了RTMP中用于控制协议本身操作的几种...
RTMP(Real-Time Messaging Protocol,实时消息传输协议)是Adobe Systems公司开发的一种应用程序协议,主要用于在互联网上传输音频、视频和数据。它被广泛应用于在线直播、视频会议和游戏流媒体等领域。RTMP协议的...
RTMP封包格式对于理解协议的具体实现至关重要。在RTMP传输过程中,每条消息都会被封装成特定格式的数据包进行传输。以视频封包为例,其内容与FLV封包中的tagdata格式相同。通过对Wireshark等工具抓取的数据包进行...
RTMP协议,全称为Real Time Messaging Protocol,是由Adobe公司开发的一种网络流媒体协议,它允许数据以极低的延迟进行实时传输。RTMP设计之初是为了在Flash/AIR平台和流媒体服务器之间传输音频、视频和数据,它作为...
例如,**Red5 Server**是一款高度可扩展的开源媒体服务器,支持RTMP、WebRTC等多种协议,被广泛应用于实时通信、流媒体传输等领域。Red5 Server的出现大大降低了开发者们构建实时流媒体应用的成本和难度。 #### 六...
"rtmp_specification_1.0_cn.pdf"是RTMP协议1.0版本的中文版官方文档,这是最权威的参考资料。它通常会包含RTMP协议的详细规范,如数据通道、命令消息、音频/视频数据包的结构、以及错误处理和网络适应性策略。阅读...
### RTMP协议中文详解 #### 引言 RTMP(Real Time Messaging Protocol),即实时消息传输协议,是一种专为实时音频、视频和数据传输而设计的协议,主要用于流媒体服务,如在线直播、视频点播等场景。本文将对RTMP...
5. **流媒体服务器配置**:为了接收并分发Android设备推送的RTMP流,服务器端需要运行支持RTMP协议的服务,如Nginx with RTMP module或者Adobe Flash Media Server。开发者需要知道如何配置这些服务器,设置合适的...
首先,你需要一个支持Rtmp的流媒体服务器,如Adobe的FMS(Flash Media Server)、Nginx with rtmp module或Red5等。这些服务器能够接收和分发Rtmp流,确保用户可以顺畅地观看直播。 在客户端开发中,通常使用开源库...
### RTMP协议详解 #### 一、RTMP协议概述 RTMP(Real-Time Messaging Protocol)是一种由Adobe Systems开发的协议,主要用于实现音视频等数据在客户端和服务端之间的实时传输。该协议最初是为Flash Player设计的,...