视频分布式转码
网络流量分析机构Sandvine 2018年10月的《全球互联网现象报告》中显示,在全球整体的互联网下行流量中,视频占到了近58%。现在原始视频的分辨率越来越高,但是在互联网带宽有限的情况下,大部分视频提供商都需要将原始视频转码成多种清晰度的视频,便于用户在不同的网络环境中选择不同清晰度的视频进行观看。因此,视频转码成了必不可少的技术环节。
目前视频转码系统一般的架构形式如下图所示:
转码系统中各个角色的功能如下:
- 转码中心控制节点:负责调度和分发转码任务,原始视频切片和转码后视频合并等工作。
- 转码机: 从中心控制节点接收转码任务,完成转码工作,高CPU消耗。
- 存储系统:存储源视频供转码机机型下载,以及转码后的视频供用户下载。
而为了加快转码速度,多采用分片转码,具体流程如下图所示:
若从零开始搭建这套转码系统需要开发的服务器角色多、交互多、任务管理调度复杂。一般转码机都是高CPU消耗,这就需要提高硬件配置,而在没有转码任务时,系统中的服务器实际是处于空闲状态,这也是一种很大的资源浪费。
使用腾讯云的批量计算产品,只需要调用一个API-SubmitJob 就能自动完成上述复杂的调度和交互流程。并且批量计算只在提交转码任务时才创建腾讯云服务器,在转码任务完成后自动释放云服务器,做到按量按需使用,极大地节约资源。同时批量计算结合了腾讯云的竞价实例,更是能让云服务器使用成本减少90%以上。
本文将介绍一种使用腾讯云批量计算完成分布式转码的方法。
使用腾讯云批量计算转码
批量计算简介
腾讯云批量计算-Batch Compute,动态创建服务器资源以响应提交的作业,可以免除用户配置维护云服务器的工作,按需使用。同时批量计算利用自身的调度功能,能有效地处理作业内部任务之间的先后关系,免去复杂的调度逻辑,让使用者将更多的精力集中于数据的处理和分析上。
批量计算与分布式转码
批量计算中有三个重要的概念:
- 作业:用户提交批处理工作的最小单位,它由单个或多个有前后依赖关系的任务组成。可以通过非常易用的 DAG 语法,来给多个批处理任务设置依赖关系,共同组成一个作业,然后依次执行各个任务,直到所有任务完成。
- 任务:作业的基本组成单位,包含了实际在一台云服务器上执行的应用程序的相关信息。
- 任务实例: 批量计算调度和执行的最小单元,负责执行具体的计算任务。
现在我们在分布式转码