docs
安装

安装

本文档介绍 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)。

各模块的依赖如下:

模块说明
avformatFFmpeg (opens in a new tab) 4.0 或更高版本
gdkGTK2 (opens in a new tab) 及其相关依赖
jackrackJACK (opens in a new tab)、libxml2 (opens in a new tab) 以及 ladspa.h
movitMovit (opens in a new tab)
qtQt (opens in a new tab) 5.6 或更高版本
resamplelibsamplerate (opens in a new tab) 0.15 或更高版本
sdl2SDL (opens in a new tab) 2.0 或更高版本
soxSoX (opens in a new tab) 13 或更高版本
vorbislibvorbis (opens in a new tab) 1.0.1 或更高版本
xmllibxml12 (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 模板的相关要求仍需另行关注。