RTMP流媒体播放过程(转)

摘要:
网络流代表了发送多媒体数据的通道。他们的关系如图所示:1简要介绍播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。d)播放命令成功的话,服务器发送命令消息中的“响应状态”NetStream.Play.Start&NetStream.Play.reset,告知客户端“播放”命令执行成功。

http://blog.csdn.net/leixiaohua1020/article/details/11704355

本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程。

注意:RTMP中的逻辑结构

RTMP协议规定,播放一个流媒体有两个前提步骤:第一步,建立一个网络连接(NetConnection);第二步,建立一个网络流 (NetStream)。其中,网络连接代表服务器端应用程序和客户端之间基础的连通关系。网络流代表了发送多媒体数据的通道。服务器和客户端之间只能建 立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示:

RTMP流媒体播放过程(转)第1张

1 简要介绍

播放一个RTMP协议的流媒体需要经过以下几个步骤:握手,建立连接,建立流,播放。RTMP连接都是以握手作为开始的。建立连接阶段用于建立客户端与服务器之间的“网络连接”;建立流阶段用于建立客户端与服务器之间的“网络流”;播放阶段用于传输视音频数据。

2 握手(HandShake)

一个RTMP连接以握手开始,双方分别发送大小固定的三个数据块

a)握手开始于客户端发送C0、C1块。服务器收到C0或C1后发送S0和S1。

b)当客户端收齐S0和S1后,开始发送C2。当服务器收齐C0和C1后,开始发送S2。

c)当客户端和服务器分别收到S2和C2后,握手完成。

RTMP流媒体播放过程(转)第2张

握手

3建立网络连接(NetConnection)

a)客户端发送命令消息中的“连接”(connect)到服务器,请求与一个服务应用实例建立连接。

b)服务器接收到连接命令消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息到客户端,同时连接到连接命令中提到的应用程序。

c)服务器发送设置带宽()协议消息到客户端。

d)客户端处理设置带宽协议消息后,发送确认窗口大小(Window Acknowledgement Size)协议消息到服务器端。

e)服务器发送用户控制消息中的“流开始”(Stream Begin)消息到客户端。

f)服务器发送命令消息中的“结果”(_result),通知客户端连接的状态。

RTMP流媒体播放过程(转)第3张

建立连接

4建立网络流(NetStream)

a) 客户端发送命令消息中的“创建流”(createStream)命令到服务器端。

b) 服务器端接收到“创建流”命令后,发送命令消息中的“结果”(_result),通知客户端流的状态。

RTMP流媒体播放过程(转)第4张

建立流

5 播放(Play)

a)客户端发送命令消息中的“播放”(play)命令到服务器。

b)接收到播放命令后,服务器发送设置块大小(ChunkSize)协议消息。

c)服务器发送用户控制消息中的“streambegin”,告知客户端流ID。

d)播放命令成功的话,服务器发送命令消息中的“响应状态” NetStream.Play.Start & NetStream.Play.reset,告知客户端“播放”命令执行成功。

e)在此之后服务器发送客户端要播放的音频和视频数据。

RTMP流媒体播放过程(转)第5张

播放流

RTMP协议规范(中文翻译):http://download.csdn.net/detail/leixiaohua1020/6563059

版权声明:本文为博主原创文章,未经博主允许不得转载。

免责声明:文章转载自《RTMP流媒体播放过程(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ArcMap制图遇到的小问题转:苹果手机同步阿里云邮箱日历下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac-VM迁移注意事项

1.迁移之后首先查看mac的网关是多少: 先cd /Library/Preferences/VMware Fusion/vmnet8 然后 cat nat.conf ip 172.16.190.2就是我的网关,你的和我的应该不一致 2.配置虚拟机中的网络 点击系统-首选项-网络连接。 配置你的网卡,我的是eth1. 地址就是你的这台虚拟机ip,网关和dn...

RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍

1. AMFAMF(是Action Message Format的缩写)是在flash和flex中与远程服务端交换数据的一种格式.它是二进制格式,Flash应用与服务端或数据库通过RPC交换数据时,通常都采用这种格式。AMF 1 诞生于Flash Player6,发展到现在已经变成了了AMF32. RTMPRTMP是Real-Time Messaging...

各种流媒体服务器性能测试

  今天正好有80Gbps的万兆网络环境,写了一个压力测试工具,对比了一下各种流媒体服务器,在超级并发下的性能如何,原来听说intel的万兆网卡有问题,只能跑到不到的理论带宽,这点我测试过了,用intel最新的驱动,centos6,最次能跑到80%的理论带宽,最高能跑到95%以上,完全没有问题,需要注意的是nginx 采用异步架构,因为rtmp协议实际上损...

POJ 3281 Dining (网络流之最大流)

题意:农夫为他的 N (1 ≤ N ≤ 100) 牛准备了 F (1 ≤ F ≤ 100)种食物和 D (1 ≤ D ≤ 100) 种饮料。每头牛都有各自喜欢的食物和饮料, 而每种食物或饮料只能分配给一头牛。最多能有多少头牛可以同时得到喜欢的食物和饮料? 析:是一个经典网络流的题,建立一个超级源点,连向每种食物,建立一个超级汇点,连向每种饮料,然后把每头牛...

关于网络流最小割的一些小知识

1.输出任意一种最小割的方案: 在运行完网络流算法之后,在残量网络上,s和t之间不连通了进行一边dfs/bfs,求出从s出发能到达的点集S,和不能到达的点集T我们割掉了一组边,把原图划分成了S和T两个点集所有从S跨越到T的满流边构成了一个最小割方案 2.判断一条边是否满流: 运行一次最大流算法,得到一个残量网络取残量网络上的一条满流边(u, v),判断这条...

海康定制RTMP推流摄像头如何接入EasyDSS视频直播点播平台?

我们最近在海康定制了一批摄像头,包含枪机和半球机,支持RTSP、RTMP、GB/T28181多种协议,现在已经上线了,有兴趣的朋友可以去我们的淘宝店具体了解。 这两款摄像头上线以来,有很多曾经使用过我们的流媒体服务器的用户都来咨询,并且对摄像头的推流过程比较感兴趣,所以本文我们就来讲一下这两款推流摄像头是怎么接入流媒体平台的,本文以EasyDSS视频直播点...