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

  • 相关阅读:
    二分查找
    215. Kth Largest Element in an Array
    myeclipse导入web项目报错解决
    oracle替换字段中的空格
    sql变更表名
    cmd文件操作--- attrib命令
    oracle导入dmp文件
    java.lang.IllegalArgumentException: Page directive: invalid value for import 异常解决
    JDK_jvisualvm访问远程weblogic服务
    页面传值中文编码
  • 原文地址:https://www.cnblogs.com/littlehb/p/12272035.html
Copyright © 2011-2022 走看看