java 分布式 转码_分布式转码集群思路

现在的转码程序是在通过增加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

https://blog.csdn.net/imdyf/article/details/80621009

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值