zoukankan      html  css  js  c++  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

  • 相关阅读:
    HDU1029 Ignatius and the Princess IV
    UVA11039 Building designing【排序】
    UVA11039 Building designing【排序】
    POJ3278 HDU2717 Catch That Cow
    POJ3278 HDU2717 Catch That Cow
    POJ1338 Ugly Numbers(解法二)
    POJ1338 Ugly Numbers(解法二)
    UVA532 Dungeon Master
    UVA532 Dungeon Master
    POJ1915 Knight Moves
  • 原文地址:https://www.cnblogs.com/littlehb/p/12272035.html
Copyright © 2011-2022 走看看