安装
本文档介绍 MLT 项目的安装与组织方式。
目录
目录层级结构定义如下:
- demo - 用于展示能力的一部分示例精选。
- docs - 手册页(man page)所在的位置
- presets - 各个服务模块的属性预设
- profiles - MLT 配置文件(profile)
- src - 项目全部源码都在此处
- framework - MLT 媒体框架
- melt - 一个媒体播放测试应用程序 (*)
- mlt++ - 框架的 C++ 封装
- modules - 所有服务模块都在此处定义
- avformat - 依赖 FFmpeg/Libav 的服务模块
- core - 独立的 MLT 服务模块
- decklink - Blackmagick Design SDI/HDMI 服务模块
- frei0r - frei0r 视频插件的适配器
- gdk - 依赖 GDK 的服务模块
- jackrack - LADSPA 音频插件与 JACK 服务器的适配器
- kdenlive - 由 Kdenlive 项目贡献的服务模块
- movit - 依赖 Movit 的服务模块 (*)
- ndi - 依赖 NewTek NDI 的服务模块
- normalize - 音频归一化功能 (*)
- oldfilm - 让干净视频变“脏”的滤镜
- opencv - 依赖 OpenCV 的服务模块
- plus - 杂项服务模块(待移入 core)
- plusgpl - 以 GPL 许可证发布的杂项服务模块 (*)
- qt - 依赖 Qt 的服务模块 (*)
- resample - 依赖 libresample 的服务模块 (*)
- rtaudio - 基于 RtAudio 项目代码的音频消费器
- rubberband - 依赖 Rubberband 音频变调的服务模块 (*)
- sdl - 依赖 SDL 的服务模块
- sdl2 - 依赖 SDL 的服务模块
- sox - 依赖 SoX 的音频滤镜
- vid.stab - 视频稳定滤镜 (*)
- vorbis - 依赖 vorbis 的服务模块
- xine - 源自 Xine 的代码 (*)
- xml - XML(反)序列化服务模块
- swig - 使用 SWIG 的高级语言绑定
- tests - 保留给回归测试与单元测试
- win32 - Windows 专用辅助函数
上述目录之下还可以嵌套更多子目录,并应当在其父目录中加以说明。
(*) 含有 GPL 依赖或代码。
依赖
MLT 核心(core)依赖:
- 符合 C11 标准的 C 编译器
- POSIX 线程(pthread)
- 标准 POSIX 库(libc)
所提供的 MLT 应用程序与库全部依赖于核心(core)。
各模块的依赖如下:
| 模块 | 说明 |
| avformat | FFmpeg (opens in a new tab) 4.0 或更高版本 |
| gdk | GTK2 (opens in a new tab) 及其相关依赖 |
| jackrack | JACK (opens in a new tab)、libxml2 (opens in a new tab) 以及 ladspa.h |
| movit | Movit (opens in a new tab) |
| qt | Qt (opens in a new tab) 5.6 或更高版本 |
| resample | libsamplerate (opens in a new tab) 0.15 或更高版本 |
| sdl2 | SDL (opens in a new tab) 2.0 或更高版本 |
| sox | SoX (opens in a new tab) 13 或更高版本 |
| vorbis | libvorbis (opens in a new tab) 1.0.1 或更高版本 |
| xml | libxml12 (opens in a new tab) 2.5 或更高版本 |
配置
配置从顶层目录通过一个 CMakeLists.txt 文件触发。
上面列出的每个含有源码的子目录都有自己的 CMakeLists.txt
文件,它们会由顶层文件自动调用。
更多使用信息可查看 CMakeLists.txt 以及
cmake 文档 (opens in a new tab)。
编译
Makefile 在配置阶段生成,这些 Makefile 基于按目录提供的 模板,该模板必须由开发者给出。
测试
要在不安装的情况下执行 MLT 工具,或在一台已经安装了某个 MLT 版本的系统上
测试新版本,可在 Bash shell 中运行:
source setenv
注意:这仅对当前 shell 生效,并且假定使用的是 sh 或 bash。
安装
安装通过在构建目录中运行 cmake --install 触发。
框架(framework)会产出一个共享对象(shared object),安装到 $prefix/lib/;同时产出公共头文件,安装到 $prefix/include/mlt/framework 和 $prefix/include/mlt++.
各模块会为每个模块产出一个共享对象,安装到 $prefix/lib/mlt。此外,每个模块可能还有支持文件安装到 $prefix/share/mlt/modules。
为了便于模块和应用程序的开发,会生成 pkg-config 元数据 文件并安装到 $prefix/lib/pkgconfig。
开发
本项目中的所有编译过程都把 {top-level-dir}/src 放入包含(include) 路径。所有头文件的包含方式如下:
#include <framework/file.h>所有外部模块都把 {prefix}/include/mlt 放入包含路径。所有 头文件也应当以同样方式包含:
#include <framework/file.h>这样一来源码就可以在外部模块与内部模块之间迁移。 不过配置和 Makefile 模板的相关要求仍需另行关注。