Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1502116
  • 博文数量: 228
  • 博客积分: 1698
  • 博客等级: 上尉
  • 技术积分: 3241
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-24 21:49
个人简介

Linux

文章分类

全部博文(228)

文章存档

2017年(1)

2016年(43)

2015年(102)

2014年(44)

2013年(5)

2012年(30)

2011年(3)

分类: 网络与安全

2015-12-01 23:38:50

原文地址:RTMP流媒体播放过程 作者:andersonyan

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

注意:RTMP中的逻辑结构

RTMP协议规定,播放一个流媒体有两个前提步骤:

第一步,建立一个网络连接(NetConnection);

第二步,建立一个网络流(NetStream)。

其中,网络连接 代表服务器端应用程序和客户端之间基础的连通关系。

          网络流     代表了发送多媒体数据的通道。

服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。

他们的关系如图所示:


1 简要介绍

播放一个RTMP协议的流媒体需要经过以下几个步骤:

    握手,建立连接,建立流,播放。

RTMP连接都是以握手作为开始的。

建立连接阶段  用于建立客户端与服务器之间的“网络连接”;

建立流阶段     用于建立客户端与服务器之间的“网络流”;

播放阶段        用于传输视音频数据。


2 握手(HandShake)

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

a)        握手开始于客户端发送C0、C1块。

           服务器收到C0或C1后发送S0和S1。

b)        当客户端收齐S0和S1后,开始发送C2。

           当服务器收齐C0和C1后,开始发送S2。

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

握手


3 建立网络连接(NetConnection)

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

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

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

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

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

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

建立连接


4 建立网络流(NetStream)

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

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

建立流


5 播放(Play)

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

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

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

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

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

播放流

原文链接:

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







阅读(1457) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~