多线程分布式云转码系统方案,hadoop+ffmpeg+nodejs构建真正云转码

云转码分布式ffmpeg

2022-04-05T15:01:11.413Z

现在大多数声称云转码的系统,其实并没有多少云的功能,其实就是服务端的一个转码软件,真正的云转码应该具备的,那当然是分布式文件系统,无限扩容,智能多线程转码,智能分配转码任务,单机多线程转码技术,无限集群,大集群下可无限小集群,上千台服务器级别的分布式多线程转码系统才能真正称之为云转码。

于是,在我长期的研究中,终于发现了一种比较完美的解决方案,那就是:hadoop分布式框架搭建集群和分布式文件系统,利用ffmpeg在分布式文件系统中进行图片水印、跑马灯、多分辨率转码等操作,再利用nodejs智能控制和分配任务,最后再利用mongodb储存分布式系统中的返回的数据。

图示

基本的技术详解

hadoop分布式文件系统,可以使用命令行的方式控制整个分布式文件系统上的文件,就跟本地使用常见的命令行一样,这样就可以非常方便的使用命令行,将本地文件上传到分布式文件系统服务器上,或者是从分布式文件系统上拉取文件到本地来。
第一步、上传:视频文件通过nodejs搭建的API系统上传至总控服务器,总控服务器通过分片将其分片成小片段,将小片段通过命令行上传至不同的分布式服务器中。
第二步、转码:分布式系统接受到总控智能分配的分片视频之后,反馈数据到总控服务器,总控服务器发送转码指令到分布式系统中,分布式系统接收到转码指令将分片转码,如果是六台服务器,即是六块分片同时在不同的节点中进行转码。
第三步、返回视频:总控等待所有节点转码完成的数据之后,请求其数据回到本地,将视频进行拼合。
第四步、云储存:将拼合完成的视频通过云储存,同时储存到几台大型储存服务器中,并且提供播放服务。

其他技术:单机多线程转码技术,这个技术好处在于节点不够多的时候,如果处理大视频,还可以在节点中将其分片多多个视频片段,然后在单机中多线程处理多个视频片段,极大利用整个cpu性能,最后再合成,并且返回给总控机器。

整个系统拥有的优点:分布式系统,可以扩展至上千台服务器,分布式文件系统,通过简单操作就可以实时操控整个文件系统,nodejs总控系统,nodejs完美的性能,可以支撑上千万的并发请求,智能调控分布任务等,ffmpeg最佳的参数,在分片的情况也能做到去水印、添加水印、添加跑马灯等高级操作。