理论+实操全面实战直播流技术

释放双眼,带上耳机,听听看~!

理论+实操全面实战直播流技术

课程介绍

互联网直播的热度持续升温,也催生着技术的不断更迭,这对IT工程师们来说是一项挑战,需要不断的学习新技术才能够保证自己不掉队。课程深入的剖析了直播流的原理与架构,从理论逐渐的深入到直播技术的实践中,然同学们快速掌握直播的热点技术,在职场中能够轻松的胜任工作。

RTMP 是什么
RTMP 全称即是 Real-Time Messaging Protocol。顾名思义就是用来作为实时通信的一种协议。该协议是 Adobe 搞出来的。主要是用来传递音视频流的。它通过一种自定义的协议,来完成对指定直播流的播放和相关的操作。和现行的直播流相比,RTMP 主要的特点就是高效,这里,我就不多费口舌了。我们先来了解一下 RTMP 是如何进行握手的。

RTMP 握手
RTMP 是基于 TCP 三次握手之后的,所以,RTMP 不是和 TCP 一个 level 的。它本身是基于 TCP 的可靠性连接。RTMP 握手的方式如图:

 

(C 代表 Client,S 代表 Server)

它主要是通过两端的字段内容协商,来完成可信度认证的。基本过程如下:

client: 客户端需要发 3 个包。C0,C1,C2
server: 服务端也需要发同样 3 个包。 S0,S1,S2。
整个过程如上图所述,但实际上有些细节需要注意。

握手开始:

【1】 客户端发送 C0,C1 包

此时,客户端处于等待状态。客户端有两个限制:

客户端在未接受到 S1 之前不能发送 C2 包
客户端在未接收到 S2 之前不能发送任何实际数据包
【2】 服务端在接受到 C0,发送 S0,S1 包。也可以等到接受到 C1 之后再一起发送,C1 包的等待不是必须的。

此时,服务端处于等待状态。服务端有两个限制:

服务端在未接受到 C1 之前不能发送 S2.
服务端在未接收到 C2 之前不能发送任何实际数据包
【3】客户端接受到 S1/S0 包后,发送 C2 包。

【4】服务端接受到 C2 包后,返回 S2 包,并且此时握手已经完成。

不过,在实际应用中,并不是严格按照上面的来。因为 RTMP 并不是强安全性的协议,所以,S2/C2 包只需要 C1/S1 中的内容,就可以完成内容的拼接。

 

这么多限制,说白了,其实就是一种通用模式:

C0+C1
S0+S1+S2
C2
接下来,我们来具体看看 C/S 012 包分别代表什么。

C0 && S0
C0 和 S0 其实区别不大,我这里主要讲解一下 C0,就差不多了。首先,C0 的长度为 1B。它的主要工作是确定 RTMP 的版本号。

C0:客户端发送其所支持的 RTMP 版本号:3~31。一般都是写 3。
S1:服务端返回其所支持的版本号。如果没有客户端的版本号,默认返回 3。
C1 && S1
C1/S1 长度为 1536B。主要目的是确保握手的唯一性。格式为:

 

time: 发送时间戳,这个其实不是很重要,不过需要记住,不要超出 4B 的范围即可。
zero: 保留值 0.
random: 该字段长尾 1528B。主要内容就是随机值,不管你用什么产生都可以。它主要是为了保证此次握手的唯一性,和确定握手的对象。
C2 && S2
C2/S2 的长度也是 1536B。相当于就是 S1/C1 的响应值。上图也简单说明了就是,对应 C1/S1 的 Copy 值,不过第二个字段有区别。基本格式为:

 

time: 时间戳,同上,也不是很重要
time2: C1/S1 发送的时间戳。
random: S1/C1 发送的随机数。长度为 1528B。
这里需要提及的是,RTMP 默认都是使用 Big-Endian 进行写入和读取,除非强调对某个字段使用 Little-Endian 字节序。

上面握手协议的顺序也是根据其中相关的字段来进行制定的。这样,看起来很容易啊哈,但是,我们并不仅仅停留在了解,而是要真正的了解,接下来,我们来实现一下,如果通过 Buffer 来进行 3 次握手。这里,我们作为 Client 端来进行请求的发起,假设 Server 端是按照标准进行发送即可。

 

下载权限
查看
  • 免费下载
    评论并刷新后下载
    登录后下载
  • {{attr.name}}:
您当前的等级为
登录后免费下载登录 小黑屋反思中,不准下载! 评论后刷新页面下载评论 支付以后下载 请先登录 您今天的下载次数(次)用完了,请明天再来 支付积分以后下载立即支付 支付以后下载立即支付 您当前的用户组不允许下载升级会员
您已获得下载权限 您可以每天下载资源次,今日剩余

给TA打赏
共{{data.count}}人
人已打赏
软件编程

基于Python爬虫打造数据可视化模型

2022-3-2 22:17:07

软件编程

7天学会数学建模及MATLAB编程

2022-3-7 11:13:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索