Hi,大家好,我是你们的小米,今天要跟大家聊聊社区直播带货的直播流程,这个流程看似简单,但其实背后有着许多复杂的技术支撑,今天我们就来拆解一下其中的关键点,让大家对直播背后的技术有个更清晰的了解!
直播端使用 RTMPS 协议发送直播流数据到 POP 内的就近代理服务器直播的第一步,就是主播在直播设备上把视频和音频流推送出去。为了保证数据传输的安全性,我们会用到RTMPS协议。
什么是 RTMPS?
RTMPS 是 Real-Time Messaging Protocol Secure 的缩写,它是在RTMP(实时消息传输协议)基础上加入了SSL/TLS加密层,使得数据在传输过程中更加安全。因为直播过程中,用户的个人信息、支付信息等都涉及到隐私和敏感数据,用加密协议能够避免信息被拦截或者篡改。
发送到哪里呢?
RTMPS 协议的直播流会被发送到POP(Point of Presence)内的就近代理服务器。POP 就是互联网骨干网络中的一个节点,代理服务器的主要职责是尽可能靠近用户和主播,减少数据传输中的延迟,从而保证观众看到的直播更加实时。
简而言之:主播用 RTMPS 把加密的直播流发到离他最近的代理服务器,代理服务器会尽量减少延迟,提升直播的体验。
代理服务器转发直播流数据到数据中心的网关服务器(443转80)代理服务器拿到直播流后,会把这些数据转发到位于数据中心的网关服务器。这里有个小细节需要注意,那就是端口的转换。
端口号的秘密
RTMPS 传输数据时默认使用443 端口,这是因为 443 是 SSL/TLS 加密数据的默认端口。但我们的数据中心网关服务器为了兼容一些场景,会将 443 端口的数据转换成80 端口。80 端口是 HTTP 服务的默认端口,通常用于未加密的数据传输。
这一转换有助于让我们的服务器在不同的场景中都能正常工作,比如在某些特定网络环境下,80 端口可能更加顺畅。
总结一下:代理服务器将加密的直播流数据从 443 端口转发给网关服务器,网关服务器再将数据转换为 80 端口来进行后续处理。
网关服务器使用直播 ID 的一致性哈希算法发送直播数据到指定的编码服务器接下来,网关服务器收到数据后,使用一种叫一致性哈希算法的方法来决定这些直播数据该被发送到哪台编码服务器。
什么是一致性哈希算法?
一致性哈希算法是一个分布式系统中常用的负载均衡算法。通过把直播的直播 ID(即每个直播的唯一标识)映射到一个哈希环上,可以保证直播数据总是被发送到同一个编码服务器。这样,即使服务器数量发生变化,也能确保数据被均匀分布,并且不会因为服务器数量的增加或减少导致大规模的重新分配。
简单来说,一致性哈希算法能够帮助我们找到最合适的服务器来处理每场直播,保证稳定性和性能。
直播流到达编码服务器后,编码服务器会承担一系列的工作,可以说这一步是整个直播过程中非常重要的环节。我们来看一下编码服务器都做了哪些工作吧!
验证直播数据格式是否正确首先,编码服务器要做的第一件事就是验证直播数据的格式,比如说视频和音频的编码格式是否符合规定,直播数据的帧率、分辨率、比特率等参数是否在合理范围内。
如果数据不符合标准,编码服务器会立刻返回错误信息,通知直播端进行调整。这一步骤非常重要,因为如果数据格式有问题,观众在观看直播时可能会出现画面卡顿、音视频不同步等问题。
关联直播 ID 及编码服务器第一映射为了确保即使在网络中断或扩容等情况下,主播和观众依然能无缝地继续直播,编码服务器需要建立一个映射关系。也就是说,它会把每个直播 ID和特定的编码服务器进行绑定。
即使在某些情况下,主播的设备与服务器断开了连接,重新连接时,依然会被指向同一个编码服务器。这就是为什么你会发现断流重连时,画面流畅,观众甚至几乎感觉不到中断。
使用直播数据编码成不同解析度的输出数据接下来就是编码服务器的核心工作之一了:转码。
直播的数据往往需要适应不同观众的观看环境,比如有人使用高速网络,有人使用低速网络,还有人用手机、平板或大屏幕电视观看。因此,编码服务器需要将直播数据转换成不同的解析度和比特率,比如:720p、1080p、4K等。
这样,无论观众用什么设备,网络条件如何,编码服务器都能根据需求推送最合适的版本,保证观众的观看体验。
使用 DASH 协议输出数据并持久化存储最后一步,编码服务器会使用DASH(Dynamic Adaptive Streaming over HTTP)协议将编码后的数据输出。DASH 是一种基于 HTTP 的自适应流媒体传输技术,它会根据观众的网络状况动态调整视频质量,确保即使在网络波动时,直播也能保持流畅。
同时,编码服务器会把这些直播数据持久化存储,这样就能实现直播的回放功能。观众在直播结束后,依然可以查看之前的直播内容,形成更多的互动机会和增值内容。
END好了,以上就是我们今天聊到的社区直播带货的直播流程。从直播端推流到 POP 代理服务器,再到网关服务器的端口转换与负载分配,最后经过编码服务器的转码和输出,这一系列的步骤保障了直播的高效和稳定。
直播带货不仅仅是主播和观众的互动,在这背后,其实有一整套复杂的技术架构在支撑着。这些技术确保了直播的流畅度、画质以及数据的安全性,让大家在看直播时体验更好,也让带货的效果更加显著。
希望今天的分享能帮助大家更好地理解直播背后的技术流程,如果你对其中的某些部分还有问题,欢迎在评论区留言哦,我是小米,我们下次再见!
我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!