RTMP协议

这节我们讲一下rtmp协议。

什么是rtmp,是在tcp之上的协议,也就是应用层的协议。它有什么用呢?用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。

下面介绍一下客户端和服务器端通过rtmp是如何传输的吧。

首先是tcp三次握手,

然后是rtmp的握手,

客户端和服务器端建立连接之后便可传输数据。

下图为rtmp握手的过程:首先客户端先给服务器端发送C0+C1,服务器端接收到后向客户端发送S0+S1+S2,客户端接收到后再次向服务器端发送C2。握手完成。

握手完成后建立rtmp连接:

客户端先给服务器端发送connect请求,服务器端接收到后向客户端发送Window Acknowledgement Size(确认窗口大小),Set Peer BindWidth|Set Chunk Size(设置带宽和Chunk大小),result connect(连接结果);客户端接收后再次向服务器端发送Set Chunk Size。完成rtmp连接。

完成连接后创建rtmp流。首先客户端先给服务器端发送releaseStream,告诉服务器端如果有RTMP流先释放掉,接着发送FCPublishStream:FC是 Flash Communication,这个是抓包到Adobe公司发布的FMS服务器的消息上有。这个消息本身作用不大,为了与官方的服务器消息兼容,都带有这个消息。然后就是创建流CreateStream。服务器端接收到后发送Status状态。流创建成功!

客户端向服务器端发送publish命令,服务器端接收到后做出response。紧接着客户端向服务器端发送metaData数据,这个metaData包含的是音视频的一些基本数据,对于视频的来说就是帧率,宽高,分辨率等,对于音频来说是就一些采样率,采样格式,通道数等等信息。还会发送Audio/Video Data 实际音视频数据。

剩下的拉流就很好理解,客户端先发送play请求以及set Buffer Size。服务器端接收到后向客户端发送Stream Begin, onStatus以及Audio/Video Data数据。至此整个基于rtmp协议的推流和拉流的过程就介绍完啦!

https://xxetb.xetslk.com/s/13him9

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值