云转码总控设计之转码机器的API模块化设计

 xiezixing @ 2019-01-24 17:21:10

思来想去,如果想要可重复的使用转码机器上API服务,只能将FFMPEG做成模块化的功能。什么叫做模块化,就是我在需要某项服务的时候,可以随时插拔使用,引用需要的模块进行合并组合来满足一个完整的需求。

模块化的图示:
ffmpeg模块化.png

但是实际上这里不可能全部细分到一个个功能上,比如水印模块和跑马灯有时候就需要直接合并到一个模块上,因为如果需要同时添加图片水印和跑马灯广告就只能使用-filter_complex,利用复杂滤镜的功能来同时添加各种水印和跑马灯广告,甚至可以同时添加无数的水印和无数的跑马灯广告。

所以这里我们先用先用最基本的功能举例,先不用管更复杂的功能组合。

细分模块参数:
转码模块
所需参数应该是分辨率,编码器,码率,视频路径,输出路径等。

切片模块
所需参数为转码完成之后的视频路径,和切片时长,输出路径等。

截图模块
所需参数为转码后或者转码前视频路径,所需截图数,和输出路径和图片前缀。

水印模块
所需参数为图片路径,转码前视频路径,水印在视频所在位置,输出路径等。

gif模块
所需参数为转码前或者转码后视频路径,截取开始位置,截取时长,gif尺寸,输出路径等。

跑马灯模块
所需参数为跑马灯广告文本,速度,间隔,字体文件路径,输入视频路径等。

合并模块
输入视频序列化之后的视频路径数组,合成视频输出路径等。

剪切模块
输入视频路径,剪切开始位置,剪切时长,输出路径等。

先暂时设计在这,具体的实现会根据现实情况而定。但是做成模块化之后的好处显而易见,就是直接可以组合使用。

最新回复:

五老峰 @ 6 个月前:

有想法,学习中

 五老峰 @ 2019-01-25 00:26:04

有想法,学习中

回复