目录
我们的生活中通常需要编码,那为什么我们需要自适应码率或 ABR?因为我们的观众是庞大的来自全球的,有各种设备,为了给所有这些设备和网络连接提供最佳的体验,我们需要能够提供不同的副本,不同的分辨率和比特率的编码,然后让设备将选择最合适的。
如今,对于直播来说,最常用的架构是使用单一主机来创建分发所需的 ABR 阶梯。这是一个简单而良好的方法,但它存在一些问题:可扩展性、灵活性、可靠性。
当我们要求转码机提供更多它能处理的内容时,机器开始转码的速度就会变慢,这对直播来说是个定时炸弹。播放器会开始停滞不前,而且(取决于实现方式)该机器会出现 OOM 或丢弃数据。简而言之:糟糕的用户体验。
当流开始时,我们可以评估什么是每个通道的最佳编码参数,但在这一点上,重新评估这些编码参数可能是相当困难的。想象一下这样的情况:当流开始时,我们的资源有限,我们决定应用快速编码预设(所以质量低)以节省一些 CPU 容量,但几分钟后我们就有了大量的空闲资源,在这种情况下,更新这些编码参数是相当困难的。
我们有一台机器管理所有的流媒体转码,如果这台机器坏了,我们就会失去流媒体。重复转码阶段可以减轻这种风险,但有一些同步的挑战。
在这种方法中,转码是以小的时间块进行的。第一步是将连续的输入流切成小块(可播放),然后我们可以将这些小块发送给无状态转码器,最后这些转码器可以为每个单独的小块产生渲染。
分布式实时转码的优势有以下几点:
分布式实时转码的问题在于:
第三个橙色块的功能就是终止安全协议,我们使用特定的协议。所有这些操作在计算上都很简单,按照前面的编码配置将原始更改转码为不同的质量。
demo演示视频:
附上演讲视频: