分布式转码集群思路

Posted littlehb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式转码集群思路相关的知识,希望对你有一定的参考价值。

现在的转码程序是在通过增加WINFORM程序提高转码能力,存在下面两个问题:
(1)FFMPEG转码非常费CPU,单个转码任务就会占用90%,一台主机上部署多个转码程序意义不大。
(2)现在的扩展,是按最小单元为一个视频的方式进行扩展,比如一个视频是1个小时的,最低转码时间是半个小时,不会因为增加转码机而提速。

思路:

采用一个主控机+N个转码机的方式,主控机负责接收任务并将MP4分割,分发给各个转码机,在所有转码机完成转码后,负责将最终的视频进行合并成H264的MP4,同时切片为m3u8格式。真正实现将文件分割进行提速,这样,半小时的转码任务,按5台机器同时工作计算,6分钟左右即可完成,而且随着转码机的数量投入而变短,可以最大限度的利用硬件设备提高转码速度。

一、分割视频:
MP4Box -split-size 50000 test.mp4     #50MB一个文件
MP4Box -split 50 test.mp4        #50秒一个文件

二、分布式调度
不依赖于任务现成的框架,采用REDIS分队列的思路。
(1)比如有5个处理机,就在主控程序上直接划分开5个REDIS队列,分别是dulie_1---->dulie5
(2)然后按均匀的方式将分隔开的小MP4文件任务平均分布到各个队列中。并将此任务的分发情况记录到SET中,最终如果SET的结果回写数量与最初发出去的数量一致,标识为完成。
(3)各转码机通过程序获取到任务后,开始进行转码。完成后回写REDIS键值表示此任务完成。
(4)主控机每1秒轮询SET将完成好转码工作进行视频合并,并切片为M3U8。

三、合并视频
mp4box -cat test1.mp4 -cat test2.mp4 -new test.mp4


命令行参考:
https://mkvtoolnix.download/doc/mkvmerge.html

参考资料:
https://blog.csdn.net/qq_44884706/article/details/89227746
https://blog.csdn.net/zileqide/article/details/89648433

以上是关于分布式转码集群思路的主要内容,如果未能解决你的问题,请参考以下文章

docker集群部署:第3部分:服务

大型网站Mysql分布式集群架构技术详解教程

十年·杭研技术秀 | 分布式转码服务高可用浅析

到底什么是集群&分布式

mssql数据库,数据库同步,分布式数据库,数据库集群,如何实现

大数据笔记:HDFS集群搭建-伪分布式模式