文档章节

RTMP流媒体播放过程

雷霄骅
 雷霄骅
发布于 2014/08/16 13:55
字数 814
阅读 172
收藏 1

本文描述了从打开一个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)        在此之后服务器发送客户端要播放的音频和视频数据。

播放流


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

本文转载自:http://blog.csdn.net/leixiaohua1020/article/details/11704355

雷霄骅

雷霄骅

粉丝 213
博文 419
码字总数 2129
作品 4
朝阳
程序员
私信 提问
加载中

评论(0)

[总结]RTMP流媒体技术零基础学习方法

本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化...

leixiaohua1020
2013/11/18
0
0
EasyDSS流媒体服务器灵活地帮助用户实现摄像机RTSP转RTMP直播功能

版权声明:本文为EasyDarwin开源社区原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiejiashu/article/details/81008647 简要描述 今天突然接到国内某上市公司同事打来的技术咨询...

xiejiashu
2018/07/11
0
0
Android视频直播的实现(推流完整实现001)

http://blog.csdn.net/huaxun66/article/details/53427771 http://blog.csdn.net/huaxun66/article/details/53427771 最近一段时间,视频直播可谓大火。在视频直播领域,有不同的商家提供各种...

stn_lcd
2017/02/20
0
0
iOS 直播类APP开发流程解析

1 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示 1、数据采集: 摄像机及拾音器收集视频及音频数据,此时得到的为原始数据 涉及技术或协议: ...

HeroHY
2017/02/10
126
0
ios视频直播(二)- RTMP协议学习总结

一。什么是rtmp协议 RTMP协议就是Real Time Messaging Protocol,实时消息传输协议, 是Adobe公司为Flash播放器和服务器之间音、视频及数据传输开发的实时消息传送协议。协议中,视频必须是H26...

鹿微微鹿
2016/06/25
154
3

没有更多内容

加载失败,请刷新页面

加载更多

微信-公众号自定义微信菜单二次

1.开发 <基本配置< 服务器配置 服务器地址(URL) :接收回调事件本系统接口(微信业务回调入口(用户关注,取消关注、发消息等) 令牌(Token) :wx.callback.token,本系统定义的,开发时会用到...

Shingfi
1分钟前
22
0
「网易官方」极客战记(codecombat)攻略-地牢-严酷考验 B

简介: 这一关在while-true循环内只需要4条命令。 默认代码 # 使用你刚学到的技能击败那些食人魔。 # 记住:打败食人魔矮人需要两次攻击。 概览 有了循环和变量这些利器,解决所有这些食人魔...

极客战记
2分钟前
17
0
本地DOCKER删除镜像时报错解决办法

1.报错: C:\Users\hongcq>docker rmi 6bef6f0a19bcError response from daemon: conflict: unable to delete 6bef6f0a19bc (must be forced) - image is being used by stopped container......

楚番
14分钟前
23
0
分享Linux系统快速入门法

相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴...

linuxprobe2020
19分钟前
35
0
压测中测量异步写入接口的延迟

在服务端性能优化的时候,有一种方案叫 “异步写入”。就是把本来要写入数据库的功能放到异步来做,跟异步查询转同步的区别在于,异步查询是要等结果的,而异步写入则可以不等返回结果,甚至...

八音弦
24分钟前
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部