分布式集群转码系统的设计与实现

视音频转码系统大量应用在广播电视的应用系统中,尤其在 采、编、播、存等各个环节,关系到广播电视的生产和播出,其重要性不言而喻。随着开源技术的普及以及开发工具、开发语言的良好集成性和框架化,学习一套成熟框架来开发满足自身需求的转码系统变得较为简单。本文重点介绍自研的转码系统以作分享,希望给同行以启发,共同探讨解决工作中遇到的问题。

来源:《现代电视技术》
作者:江西广播电视台 阚言亮

视音频转码系统是广播电视台必不可少的基础应用服务平台,贯穿着视音频的录制、编辑、存储、播 出等全流程,在实际工作中发挥着重要作用。但是在 实际的项目建设中,转码系统一般是项目集成中的一 部分,由集成商统一提供,导致在后期面临扩展成本 高的问题。近几年,各个广播电视机构基于云计算平 台建设融媒体中心项目,自研转码系统则变得更加可 行和必要。当前,计算机软件专业教育的高速发展为 社会提供了充足的软件开发人才,同时软件开发工具的集成度越来越高且容易上手,极大提高了工作效率。 分布式集群转码系统采用了SpringBoot 框架,该框架极大地简化了开发难度,比如在多线程、定时任务、 消息处理、数据库等方面的开发,简单且高效。 本项目采用 FFmpeg 作为转码服务的核心引擎,该引擎具有视频采集、视音频转换、视频截取、水印加载、 转化为视频流等功能。当前市场上的大部分视音频产 品都是基于FFmpeg 进行开发,比如ffmpeg2theora、 VLC、MPlayer、HandBrake、Blender、Google Chrome 以及DirectShow/VFW 的ffdshow(external project)和 QuickTime 的Perian (external project)。FFmpeg 具有命令行和源码两种开发模式,只要深入研究,灵活应用, 开发一套符合自身实际需求的转码系统非常容易。

系统总体架构设计

分布式集群转码系统采用消息集群+ 分布式转 码方式,即由消息集群接收转码任务后再分别推送到 其他转码服务器,即使任一台转码服务器出现宕机情 况,也不影响整体转码系统的运行。

采用ZooKeeper+ActiveMQ 分布式消息集群方 式。ZooKeeper 是一个开放源码的分布式应用程序协 调服务,主要为分布式应用提供一致性服务的软件, 提供的功能包括配置维护、域名服务、分布式同步、 组服务等。ZooKeeper 能够封装好复杂易出错的关键 服务,将简单易用的接口和性能高效、功能稳定的系 统提供给用户。基于ZooKeeper 部署ActiveMQ 消息 中间件,不仅提高消息系统的稳定性,并能够简化分布式系统的开发。

本项目由多台( 至少3 台) 服务器部署了 “ZooKeeper+ActiveMQ”软件集群服务,组成了分 布式消息服务器集群,用于接收用户端发送的转码请 求,ActiveMQ 接收到转码请求之后通知转码服务器 读取转码消息,启动转码任务。分布式集群转码系统 至少需要部署3 台服务器,为了合理利用服务器资源, 可在实际部署中将消息服务器和转码系统部署在同一 台服务器中。消息队列集群可以保证在任意一台消息 服务器出现故障时也可以正常工作,保证转码系统的 可靠性。转码服务器数量不限,各个转码服务器相互 独立、互不干扰,可以任意扩展,只负责接收消息队 列集群服务器推送的转码任务进行转码。由于转码服 务器只负责接收任务并进行转码,所以任何一台转码服务器出现故障都不会影响其他转码服务器的工作, 图1 为分布式集群转码系统的系统结构图。

image.png

消息队列集群实现

1. ZooKeeper 集群

(1)Leader 选举机制

◆ Serverid:服务器ID,比如有3 台服务器,编 号分别为1、2、3,编号越大在选择算法中的权重越大;

◆ Zxid:数据ID,服务器中存放的最大数据ID 值 越大说明数据越新,在选举算法中数据越新权重越大;

◆在Leader 选举过程中,如果某台ZooKeeper 获得了超过半数的选票,则此ZooKeeper 就可以成为 Leader。

(2)ZooKeeper 集群搭建

第一步:安装JDK。

第二步:将ZooKeeper 压缩包上传到服务器,并 解压到/opt 目录下。

第三步: 创建data 目录, 并且将conf 下zoo_ sample.cfg 文件改名为zoo.cfg。

第四步: 配置zoo.cfg 文件里的dataDir 为 dataDir=/opt/ZooKeeper-3.8.0/data(依据实际目录路 径而定)。

第五步:在data 目录下创建一个myid 文件,内 容分别为1、2、3,myid 文件记录每台服务器的ID。 第六步:在每个zoo.cfg 配置集群服务器IP 列表。

server.1=192.168.221.146:2888:3888

server.2=192.168.221.147:2888:3888

server.3=192.168.221.148:2888:3888

列表的格式为:server. 服务器ID= 服务器IP 地址: 服务器之间通信端口:服务器之间投票选举端口。

2. ActiveMQ 集群配置

(1) 修改3 台服务器的activemq.xml 文件的 brokeName 为mq-cluster

(2)配置持久化

以上为集群中某台服务器的配置,zkPath 为新创 建的目录,hostname 为部署ActivMQ 的服务器IP 地 址,每台服务器设置为本地的IP 地址。

ActiveMQ 的客户端只能访问Master 的Broker, 其他处于Slave 状态的Broker 不能访问,所以客户端连接的Broker 应该使用failover 协议(失败转移)。 当一个ActiveMQ 节点挂掉或者一个ZooKeeper 节点挂掉,ActiveMQ 服务依然正常运转,如果仅剩 一个ActiveMQ 节点, 由于不能选举Master, 所以 ActiveMQ 不能正常运行。同样,如果ZooKeeper 仅 剩一个节点活动,不管ActiveMQ 各节点是否存活, ActiveMQ 也不能正常提供服务,因为ActiveMQ 集 群的高可用,依赖于ZooKeeper 集群的高可用。

转码系统的实现

1. 分布式转码系统介绍

转码服务器采用多线程方式,每台转码服务器同 时开启两路多线程转码服务。消息服务器接收到转码任务后通知转码服务器读取转码任务,放进转码队列 启动转码线程。图2 是当前部署的3 台转码服务器, 6 路转码任务正在执行转码状态监控图。

image.png

2. 转码性能测试

本项目的自研转码系统和当前正在使用的转码系 统在同台服务器上进行了测试和比较,以下为测试比较的结果:

◆ 硬件配置: 处理器 Intel(R) Core(TM) i7-4790 CPU@4.00GH;

◆内存:8.00 GB。

测试案例一: 以媒资系统50Mbps MPEG IPB 1920×1080 格式高清视频转码为2Mbps H.264 1920×1080 格式低码视频,自研转码系统效率为1.98 倍速,目前在用的转码系统效率为2.68 倍数。 测试案例二:以媒资系统10Mbps H.264 1920×1080 格式高清视频转码为2Mbps H.264 1920×1080 格式低码视频,自研的转码系统效率为1.97 倍速,目前在用的转码系统效率为1.49 倍数。

以上两个测试案例是当-preset 参数设置为 medium 情况下的测试结果。提高转码效率的方法除了提升服务器硬件配置之外,还需要不断地优化转 码算法,或者是修改转码的参数-preset 为ultrafast、 superfast、veryfast、faster、 fast 提高转码效率,这样的 结果是转码后的视频质量会有损失,所以要不断测试, 达到效率和质量上的平衡。

项目应用前景

目前市场上已有成熟的视音频转码产品,但是研发自有的转码系统仍然具有重要意义。当前广播电视台正在进行集团化改革和市场化运营,研发稳定可靠 的自有转码系统,对集团市场化开拓具有重要的市场 价值。

1. 满足本单位自身应用需求

本单位的媒资系统对转码系统的应 用量大,每当遇到上载和下载的高峰期, 往往出现长时间排队现象,严重影响了 工作效率。分布式集群转码系统可以单 独应用,采用统一接口集成到系统中,在自有的私有云PASS 平台随意增加转码节点,能够有效降低转码系统的扩充成本。

2. 开发新媒体产品

视频管理系统(VMS)是融媒体中心的核心平 台之一,在融媒体中心的建设中具有重要作用。基于分布式集群转码系统开发VMS 系统,首先可以按照 本单位融媒体中心的实际需求进行量身定做并迭代升 级;其次在承建其他融媒体中心的过程中,不仅可以降低成本,更能够增加净利润,提高融媒体中心产品的竞争力。

3. 独立产品市场化输出

转码系统在广播电视相关项目的建设中必不可少,既可以开发成独立的硬件产品,也可以开发成独立的软件服务,在项目集成中采用自有产品,通过嵌入式输出方式,实现利润变现。

总结

依靠现有的开源技术独立开发一套满足自身需求 的转码系统是可行的,但在实际研发过程中,还要不断完善转码系统的功能,提高实际的可用性。同时, 不断总结经验,优化算法,提高转码质量和效率。

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论