MLT是什么

MLT的英文全称为MLT Multimedia Framework。

官网地址github

The engine of a non-linear video editor that can be used in all sorts of apps, not just desktop video editors.

翻译:它是一个够用于多种类型app非线性视频编辑器引擎,且不局限于桌面领域(同样适用于Android、iOS等平台,功能十分强大)。

非线性剪辑

首先要理解什么是非线性视频剪辑,简而言之,就是意味着能存取视频片段中的任意一帧。它的概念类似于最初使用在电影剪接中 “剪”和“接”的手段。

非线性剪辑的优势:

非线性编辑是相对传统上以时间顺序进行线性编辑而言,非线性剪辑提供了更灵活的视频编辑方式和简单项目管理等诸多的优点,特别是理论上素材质量不会损失的优点受到欢迎。另外,非线性编辑借助计算机来进行数字化制作,几乎所有的工作都在计算机里完成,不再需要那么多的外部设备,对素材的调用也是瞬间实现,不用反反复复在磁带上寻找,突破单一的时间顺序编辑限制,可以按各种顺序排列,具有快捷简便、随机的特性。[from wikipedia]。

类似Pr(Premiere),Final Cut Pro等 均为非线性编辑软件。

至此,那么我们再“翻译”一下MLT的功能:

MLT功能

这个框架可以用来对音视频做剪辑、合并、增加一些滤镜特效等;

并且它提供一个html页面覆盖在视频上操作的功能也非常实用。

MLT的基本设计模型

MLT由C编写,它遵循基本的面向对象设计范式,主要采用的是生产者(producer)和消费者(consumer)模型。

  +--------+   +--------+
	|Producer|-->|Consumer|
	+--------+   +--------+

注意❗

ps:实际上,MLT 底层功能是通过多个第三方库, 如: ffmpeg、freiOr 和 ladspa 等。类似「滤镜」就使用了 ffmpeg 的功能。

MLT的优势

  • 小巧,干净的API,具有最小的依赖性
  • 模块化设计,便于添加新组件
  • 与其他多媒体库和应用程序轻松集成
  • 支持基于时间的媒体的创作和操作,包括播放列表,多个轨道,过滤器和过渡
  • 创作项目的序列化和反序列化
  • 基于Doxygen风格的API文档
  • C++,C#,Java,Lua,Perl,PHP,Python,Ruby和TCL的高级语言绑定
  • 多核和GPU处理
  • 跨平台:支持Linux,BSD,Mac OS X MacPorts,Windows MinGW
  • LGPLv2.1 许可的 License

MLT使用

melt命令行

MLT提供了的命令行工具执行视频操作

如:

按时间剪辑视频

melt test.mp4 in="00:01:10:00" out="00:01:30:00" -consumer avformat:o.mp3 acodec=libmp3lame

添加滤镜:

melt test.mp4 -filter greyscale -consumer avformat:o.avi acodec=libmp3lame vcodec=libx264

依赖MLT框架的视频软件:Kdenlive