RTMP协议分析

-
描述了RTMP规范文档描述的发布视频流的步骤。
22“C1”结构体 〗123斗5678g01234567812345678901 十-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -+-+-+-+-+-+- (4kvte吕 -+-+-+-+-+-十-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-十-+-+-+-+-+-+-十一十 [4 btes 十一十-十一+一+一十一+一十一十一+一+-+-+一十一十一+一十一+一+一十一一+一+一+-+-+-十-+-+-+一十一十 随机字节〔1528 bytes 图4:C1和S1的结构体 时间”通常为“0”, 零”一定为“0”。 总长度为1536字节 23“C2”结构体 123456 1234567890123456789口 -+-十-+-+-+-+-+-+-+-+-+-+-十-+-+-+-+-+- 十+-+-+-+-十 十-十- 时(4te -+-+-+-+-+-+-+-+一+-+- 十-+-+-十 时 4ite三) 十-+-+-+-+- -+-+-+-+-+-+-+- 随机值〔1528 -+-+-+-+-+-十-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 图5:C2和s2的结构体 时间”为S1的“时间” “时间2”为前一个包C1的发送时间戳 3流程第二步:连接 200g Client Handshaking don Command Message (connect) < WindoW Acknowle dement size e七卫e已 Bandwidth Lindi knowle deferment User Control Message(StreamBegin C 吕a可 result- connect response) tt 图6:连接控制消息的流程图 1.客户端发送“命令消息 connect command”到服务器,请求连接到服务器应用程序实例 2.收到“ connect command”后,服务器发送“协议消息 Win dow Ack nowle dge Size”到客 户端;同时服务器也连接到 Command Message中提到的应用程序实例 服务器发送“协议消息 Set peer bandwidth”到客广端 4.客户端收到“协议消息 Set peer bandwidth”后,就发送“办议消息 Window Acknowledgement Size”到服务器 5.服务器发送力一种“协议消息”—“用户控制消息 Streambegin”到客户端。 31确认消息( Window Acknowledgement Size) 当服务器或客户端需要向对方发送确认消息时,发送 Window Ac know ledgement size给对方, 来告知对方使用多大的 Window size。例如,服务端每次冋客户端发送消息之后都会等待客 户端的确认消息,如果过程成功则服务器会加大 Window size 2 山124 日L12:4当白}yi -+-+-+ 十-+一+-+-+-+一+-+-+-+-+-+-+-+-+-+-+-+-+ Acknowledgement Window size (i byte +-+-+-+-+ 32命令消息( Command message) 命令消息”负载了AMF编码的命令。这些消息有不同的类型,20表示AMFO编码,17表 小AMβ3编码。发送这些消息可以实现如:连接、创建流、发布、攆放、暂停等操作。 33消息头格式 Invoke Message 53 道百 时可 12字节头消息 00 b- 肖息体太小 14 肖息体 消息类型,为- minke MeSsagE 江,为0.0 34消息体格式 NetConnection connect() Message 030ccc18⊙12314000c8Q E2了636f6e6e656374 correct 3ff0⊙⊙ce ornection iD(value 1.e) 6361770 626e086f666c614465 fidem cd 6t @⊙8666c617368566572 2ec44582392C LNⅩ9,⊙, 2c33312c3 67377665576C Sn'flr li B2036687474703a2f2千http://192.1 1393223136323122378.1,7/ sof tware/gash/ testS!0f1 96273666747761765211 cemb.Swf. 67 6e61736 745774 ∠f6f666c61564E56d6f2e 737766 匚e05742635726c cuRl 日2⊙1572746c763a2 tmp://LocaLhost/of -aD 2f66f63816c686f7742 Ef666c6144656d6f 46676164 Q1 Q9 BOCL∈ an false 00 Ob 61 75 64 69 6f 43 6f 62"aLdiocodecs" 656373 6e40833800e0600e|( a double 未完 @b766964656f436f64 656373 0e405f0eg9 a double (value _24.0 Go Od 76 69 64 65 6f 46 75 6e"videoFunction 6374696-6e 00 3f f0 0000 00 90 00 00(a double)(value =O) ③了76167555572f nage rI 200276874747032fttp://x86 2f c3 78 38 6 2d 75 62 75 6e 74 mount u/software/gnash/tests/ 752f7366674776172652f 6766173682「7465737473 2f ②3②9 end of obiect 35连接成功返回消息 Successfu NetConnectionconnecto Message 2⊙③75f72657376C74 result orne tion⊥( va lue1.e】 (stat abject) e666d7566372 92000e464532f332c"Fs:3,@,,1157 00 Oc 63 61 70 61 62 69 6c 69"capabilities f46965了 09403f6060900000( a double)( value31.@ c10 0 gg (erd of object sta↑rhje↑》 56c6576656 2000673746177573" staus 84636f6465 CCOE 92014e6574436f6e"Ne nection, Connect si 656374896fEe2e436f6e 6e65874253756363653 @b6465736372697@了74 d∈ script1o7 696f 92 00 15 43 6f 6e 6e 65 63"Ccnnection succeeded 7469fe2737563636565 未完 465642e 00 0: 6f 62 Ga 6J 63 74 45 6e"gbjectEncocing 3 6t 64 69 be 6/ e56⊙0ee50 a double)( value.@〕 end of objec=) 36设置对等带宽消息 在连接成功之后,服务器发送 Con nection. Succeeded消息之后,服务器又发送这条消息来测 试客户端与服务器之间的带宽。 以下消息设置带宽为默认的“未定义”。 030@c8131 92 00 03 6f Ge 42 57 44 Bf Ge G5"onLWCone 000⊙000c。B a couble (value 0.0) 4流程第三步:创建流 41消息体格式 NetStream create Stream( Message TMP8宁节通运 时间戳 值为29,待 消息体大小 息类型,为 E2332656174655374字符串值;“m” 26615d 4如。8。 字流邛,值为30 节 C5 床知 42创建成功返回消息 Resuit Message TMP日字节头通道 9⊙0 到 ⊙⊙91d 头息体大小 肖息类丑,为工 evoke Hessa 2⊙5f72657756C74 字符串值:“ result” 4∞③ 流工,值3.0 3千6⊙eo@eb8e 连接I,值为10 5流程第四步:发布 51命令:发布 Publish Message 08 RTMP通道8,12字节头 0000be 时间戳 000029 消息体大小 14 消息类型,为 evoke Message 01000000 流1D,为 0200077075626697368 命令标识,字符串值:“ publish” 000000000000000000 CallID 05 Null 02000b6c69766573747265616d32发布流的名称,字符串值“ livestream2” 0200046c697665 发布流的类型,字符串值“ive” 52用户控制消息( User Control Message) 服务端和客户端通过这种消息来通知对方“用户控制事件”,消息的柊式依赖于 User ControlMessage选择的编码格式。 Event Type 2-bytes I Event Dat a 消息前两个字节标记“事件类型” 后面的数据为“事件数据”,其大小多种多样 用户控制事件有如下几大类: ● Stream begin Stream eoF: Stream d ● Set Buffer length ● Stream is recorded Ping requests Ping response: 53控制:流开始 Stream Begin message 0000 事件类型,0表示类型为“ Stream Begin” 00000000 事件数据,在 StreamBegin下为流ID,默认为0 54数据消息( Data Message) 服务器和客户端通过这种消息来发送“元数据”或“用户信息”到对方。元数据包含廾始时 间,时长,上题等与音视频有关的信息。 这些消息使用18标识为AMF0编码,使用15标识为AMF3编码。 55上传:元数据 56上传:音频数据 5.7设置:分块大小 58返回:命令成功 Invoke OnStatus Message 04 RTMP通道4,8字节头 000000 时间戳 00008b 消息体人小 14 消息类型,为 Invoke Message 01000000 流ID,为1 0200086f6e537461747573 命令标识,字符串值:“ on Status” Call ld START OBJECT 00056c6576656c 00类字符串,值:“ ' level” 020006737461747573 02类字符串,值:“ status” 0004636f6465 00类字符串,值:“code”

862KB
rtmp协议抓包分析
2015-01-17rtmp协议抓包分析
691KB
rtmp 协议规范 中文版
2013-11-16rtmp的协议规范,中文版的,学习RTMP协议的好资源。
966KB
基于RTMP协议的Flash流媒体网页播放器
2015-03-25基于RTMP协议的Flash流媒体网页播放器,可以直播,很好很强大。
30.73MB
Android RTMP推流实现
2016-12-02详见http://blog.csdn.net/huaxun66/article/details/53427771
10.63MB
最简单的基于FFmpeg的推流器(以推送RTMP为例)
2014-10-06本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。 是使用FFmpeg进行流媒体推送最简单的教程。
2.3MB
RTMP播放器
2012-05-18一个Flash的流媒体播放器,只要有rtmp服务器就能用
3.40MB
最简单的基于libRTMP的示例
2014-12-23本工程包含了LibRTMP的使用示例,包含如下子工程: simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。 simplest_librtmp_sen
5.16MB
rtmpdump vs2005版本
2013-11-16RTMPdump(包括libRTMP)的VS2005可以编译通过的源代码。
885KB
rtmp抓包工具
2011-09-21rtmpdump-2.3-windows.zip rtmp抓包工具, 支持协议:rtmp/rtmpe/rtmps
11.36MB
网页视频播放器(HTML5实现跨平台)
2014-02-10本示例演示效果参见:http://www.52player.com/Demos/CuSunPlayerIPAD/ 跟这个实例是一模一样的,大家下载前可以看此实例,如果符合你要求,就可以考虑下载。提示:
556KB
Rtmp Flash播放器
2013-07-30从Flash Media Server 4.5中剥离出来的Rtmp Flash测试播放器 主要用来测试子开发的Rtmp流媒体业务 如果具备Flash AS开发实力,就可以基于此示例开发适用项目的Rtm
7.37MB
rtmp/rtsp/hls直播服务软件
2014-10-10一款免费的流媒体直播软件,主要用于流媒体直播,视频直播,视频点播,视频录制等应用,与FMS、WOWZA、RED5一道,作为用户流媒体直播应用的可选方案。 1、支持Windows/Linux等多种操作系
2.84MB
RTMP播放器(支持点播与直播)
2013-08-14支持RTMP功能(支持点播,也支持直播),测试提示说明: 1. 你要先装好RTMP环境,比如FMS,wowza等,这是前提条件,没有这个前提,就不用测试了哦; 2. demo1.html和demo2.
1.12MB
RTMP直播例子--基于FLASH/FLEX(含源代码) 下载
2017-06-22本人用FLEX写的直播播放器,基于RTMP协议。代码要放入tomcat等容器里运行,打开play.html即可看到例子效果,含有源代码,希望能帮助到需要的人。
13.73MB
最简单的基于FFmpeg的推流器(以推送RTMP为例) 1.1
2015-02-13本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。是使用FFmpeg进行流媒体推送最简单的教程。 1.1版本增加了多平台下编译的支持:Windows,MacOS,以及Linux。
2.13MB
最简单的Flash流媒体例子
2015-02-25本工程包含如下基于Flash技术的流媒体的例子: simplest_as3_rtmp_player:最简单的RTMP播放器(基于ActionScript) simplest_as3_rtmp_stre
12.7MB
GB28181转RTSP、RTMP和HLS
2018-08-22国标GB28181转RTSP、RTMP和HLS管理平台,支持局域网和公网。
5.78MB
RTMP-flash播放器(支持点播与直播)
2014-07-07播放器来源地址: http://download.csdn.net/download/ffffffff8/5944649 FMS环境配置参考: http://blog.csdn.net/china_s
954KB
优秀的FLV,RTMP在线播放器flowplayer源码最新版
2009-05-20优秀的FLV,RTMP在线播放器flowplayer源码
2.55MB
rtp协议往rtmp协议转换
2014-06-16这是一篇论文,描述了如何从rtp协议往rtmp协议转换的实现细节和意义。
643KB
videojs播放rtmp流,测试代码
2017-09-18videojs播放rtmp流,测试代码,需要部署到服务器上(包括但不限于tomcat,iis),路径为test/tes2.html。videojs播放rtmp流,测试代码,需要部署到服务器上(包括但不
42.96MB
android RTMP 视频流播放器
2014-10-29android RTMP流视频播放器,基于Vitamio框架开发,3个文件夹,vitamio作为引用项目,simple 是简单例子。具体实现可自行修改
2.83MB
rtmp抓包分析
2015-09-28rtmp交互流程抓包分析 用wireshark工具分析
53.87MB
ios rtsp rtmp流媒体播放器
2015-07-20ios rtsp rtmp流媒体播放器,代码的架构跟kxmovie差不多,但我真实实验过好多kxmovie代码播放rtmp并不能很好的实时播放,后来看了这个播放还是很好,希望对你们有用,本人就是做io
1006KB
RTMP协议(中文)详解以及规范
2017-12-05流媒体协议:RTMP协议(中文)详解 流媒体协议:RTMP协议(中文)详解 流媒体协议:RTMP协议(中文)详解
202KB
juv-rtmp-client
2012-05-11《破解某国外收费的RTMP Client并成功在Android和Java上调用》 一文的源代码
16.53MB
android手机摄像头推送至RTMP服务器
2014-08-15-将android手机模拟为监控摄像头,推送视频流至RTMP服务器。 -不使用flash,APP工作时,本机也无需安装flash。 -兼容大部分手机,一般2.3.3以上,ARM V7架构即可。 -默认
84KB
支持rtmp协议的流媒体播放器代码
2013-11-18支持rtmp协议的流媒体播放器代码 内附流媒体网址rtmp: 用于测试
280KB
RTMP+HLS跨平台直播视频代码
2015-12-01RTMP+HLS跨平台直播视频代码 2015-12-1号写。 PC端使用RTMP协议直播视频,手机端采用HLS(m3u8)协议直播视频 安卓苹果任何浏览器都能访问直播 都能直播视频 。
1.28MB
nginx rtmp转发服务器
2019-03-22nginx_rtmp 流媒体转发服务器,低延时,根据源码编译,稳定可靠 可测试使用
-
博客
react 加载less
react 加载less
-
博客
以太坊超过比特币,男子每天挖三枚以太坊
以太坊超过比特币,男子每天挖三枚以太坊
-
学院
0行代码写服务部署版
0行代码写服务部署版
-
学院
备战2021年软考信息系统项目管理师考试学习套餐
备战2021年软考信息系统项目管理师考试学习套餐
-
博客
Android 在线反编译
Android 在线反编译
-
下载
WHUT-java多线程实验-第三周-文件上传和下载.zip
WHUT-java多线程实验-第三周-文件上传和下载.zip
-
博客
竞赛经验|2019年电赛B题四旋翼无人机组巡线机器人
竞赛经验|2019年电赛B题四旋翼无人机组巡线机器人
-
学院
(新)备战2021软考网络工程师顺利通关培训套餐
(新)备战2021软考网络工程师顺利通关培训套餐
-
博客
day10JavaScript基础知识:表单事件及方法、BOM、client、offset、scroll、懒加载
day10JavaScript基础知识:表单事件及方法、BOM、client、offset、scroll、懒加载
-
学院
Go语言官方文档学习笔记(第五季)
Go语言官方文档学习笔记(第五季)
-
学院
(新)备战2021软考软件设计师学习教程培训套餐
(新)备战2021软考软件设计师学习教程培训套餐
-
学院
three.js入门速成
three.js入门速成
-
博客
ubuntu20.04lts更换阿里云的源
ubuntu20.04lts更换阿里云的源
-
下载
12379个电子制作diy项目在线资源
12379个电子制作diy项目在线资源
-
博客
Pip配置国内镜像源加速-Windows Ubuntu等全平台通用(2021.1.16)
Pip配置国内镜像源加速-Windows Ubuntu等全平台通用(2021.1.16)
-
学院
uni-app实战专题
uni-app实战专题
-
下载
WHUT-逻辑与计算机设计第二个实验任务书(第三次课).doc
WHUT-逻辑与计算机设计第二个实验任务书(第三次课).doc
-
学院
备战2021软考网络规划设计师历年真题套餐
备战2021软考网络规划设计师历年真题套餐
-
博客
冰河远程监控
冰河远程监控
-
博客
关于JS的基本变量问题
关于JS的基本变量问题
-
博客
LaTeX使用——详细
LaTeX使用——详细
-
下载
质量管理系统(QMS).ppt
质量管理系统(QMS).ppt
-
学院
【数据分析-随到随学】Hadoop数据分析
【数据分析-随到随学】Hadoop数据分析
-
博客
8-并发编程-定时任务&定时线程池
8-并发编程-定时任务&定时线程池
-
博客
7-并发编程-Future&ForkJoin框架原理分析
7-并发编程-Future&ForkJoin框架原理分析
-
下载
TinyTeX-1.tar.gz
TinyTeX-1.tar.gz
-
学院
Java星选一卡通
Java星选一卡通
-
学院
微服务系列第七十一季-Introducing Spring Boot
微服务系列第七十一季-Introducing Spring Boot
-
下载
web前端简历模板.pdf
web前端简历模板.pdf
-
下载
PN297_LBW.py
PN297_LBW.py