Windows 构建
警告:本文已过时,实际效果因人而异。
搭建构建环境
- 安装 Git (opens in a new tab)
- 选择 “Run Git from the Windows Command Prompt”,将其加入 PATH。
- 选择 “Checkout Windows-style, commit Unix-style line endings.”
- 安装 MinGW (opens in a new tab)
- 添加 C++ 编译器
- 添加 MinGW Developer Toolkit
- 设置 PATH (opens in a new tab) 环境变量
- 另一种方式是不使用 MinGW 包中的 MSYS 和 gcc,而是组合使用 Git BASH 和来自 Qt Creator (opens in a new tab) 的 MinGW 及其某个基于 MinGW 的 SDK。
- 安装 CMake (opens in a new tab)(frei0r 会用到它)
并让它把自己加入 PATH。 - 下载 (opens in a new tab)一个静态构建的 pkg-config (opens in a new tab),放到 C:\MinGW\bin。如果你需要重新构建它,另一种方式是交叉编译,可以使用 MXE (opens in a new tab) 工具包。
安装依赖
这些依赖中很多是可选项,还有一些可以添加但未提供说明。只有前四个——FFmpeg、SDL、dlfcn-win32 和 !libXML——是强烈推荐的,以便对 MLT 做基本使用。其余的完全取决于你的需求。
- FFmpeg
- 安装共享的 dev 构建版 FFmpeg (opens in a new tab)
- 将 7z (opens in a new tab) 压缩包解压到你的 msys 主目录(C:\MinGW\msys\1.0\home$USERNAME)
- rm ~/include/stdint.h ~/include/inttypes.h
- mkdir -p ~/build/share/ffmpeg ~/build/lib
- 下载一个 shared 构建版 FFmpeg (opens in a new tab)
- 将 bin/ 文件夹中的 DLL 解压到你的 ~/build 文件夹。
- 将 “presets” 文件夹的内容解压到 ~/build/share/ffmpeg。
- SDL
- 下载适用于 mingw32 的 SDL-devel (opens in a new tab) 并解压到 $HOME。
- 打开一个 MinGW Shell
- cd SDL-1.2.14
- make native
- 为了可再分发,把 /usr/bin/SDL.dll 复制到你的构建目录。
- dlfcn-win32
- 下载 dlfcn-win32 (opens in a new tab)
- cd ~/src/dlfcn-win32-r19
- ./configure –enable-shared
- make all install
- 为了可再分发,把 /mingw/bin/libdl.dll 复制到你的构建目录。
- libXML
-
下载 libxml2 和 libiconv 的二进制压缩包,并把它们(去掉顶层目录)解压到你的 msys 主目录。
-
在 ~/lib/pkgconfig 中创建你自己的供 pkg-config 使用的 libxml-2.0.pc 文件:
prefix=/ignore
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/includeName: libXML
Version: 2.6.22
Description: libXML library version 2.
Requires:
Libs: -L${libdir} -lxml2 -lz
Cflags: -I${includedir} -
cd ~/lib
-
cp libxml2.lib xml2.lib
-
cp ~/bin/libxml2.dll ~/build
-
cp ~/bin/iconv.dll ~/build
-
cp ~/bin/zlib1.dll ~/build
-
- GTK+
- 下载 GTK+ (opens in a new tab) 的 All-in-one 整合包
- 将压缩包解压到你的 msys 主目录。
- cp ~/bin/*.dll ~/build
- libsamplerate
- 下载 libsamplerate (opens in a new tab) 源码 tar 压缩包
- cd ~/src
- tar xvzf libsamplerate-0.1.7.tar.gz
- cd libsamplerate-0.1.7
- ./configure –prefix=$HOME
- make all install
- cp ~/bin/libsamplerate-0.dll ~/build
- Frei0r
- cd ~/src
- git clone git://code.dyne.org/frei0r.git
- cd frei0r
- mkdir build
- cd build
- cmake -G “MSYS Makefiles” -DCMAKE_INSTALL_PREFIX=$HOME ..
(注意末尾的两个点,指代上级目录。) - make all install
- cp ../include/frei0r.h ~/include
- mv ~/lib/frei0r-1 ~/build/lib
- SoX
- 下载 SoX (opens in a new tab) 源码 tar 压缩包
- cd ~/src
- tar xvzf sox-14.3.1.tar.gz
- cd sox-14.3.1
- ./configure –prefix=$HOME –without-ffmpeg –disable-symlinks –disable-gomp –without-magic –without-png –without-ladspa
- make all install
- cp ~/bin/libsox-1.dll ~/build
- Qt
- 下载 Qt SDK (opens in a new tab) 或框架库
- export QTDIR=/c/Qt/2010.04/qt
- cp $QTDIR/bin/QtCore4.dll ~/bin
- cp $QTDIR/bin/QtGui4.dll ~/bin
- cp $QTDIR/bin/QtSvg4.dll ~/bin
- cp $QTDIR/bin/QtXml4.dll ~/bin
- JACK 和 LADSPA
-
只在安装了 GTK+ 和 LibXML 依赖之后再执行本节。
-
解压压缩包,进入其中的 bin/windows 目录并运行安装程序。
-
安装到 C:\Jack,以简化后续操作。
-
cd ~
-
cp -a /c/jack/lib/* lib
-
cp -a /c/jack/includes/* include
-
为了可再分发,把 libjack.dll 和 libjackserver.dll 从 C:\Windows\System32(64 位系统则为 C:\Windows\SysWOW64)复制到你的构建目录。
-
制作你自己的 pkg-config 文件:~/lib/pkgconfig/jack.pc:
prefix=/ignore
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/includeName: jack
Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server
Version: 1.9.6
Libs: -L${libdir} -ljack -ljackserver
Cflags: -I${includedir} -
curl http://www.ladspa.org/ladspa\_sdk/ladspa.h.txt (opens in a new tab) > ~/include/ladspa.h
-
编辑 ~/include/jack/systemdeps.h,注释掉或删除 “typedef HANDLE pthread_t;”(在最新版本中可能不存在)
-
下载适用于 Windows 的 Audacity LADSPA (opens in a new tab) 插件。
-
把插件解压到 ~/build/lib/ladspa
-
- SwfDec
- 只在安装了 GTK+ 之后再执行本节。
- 下载 liboil (opens in a new tab)
- cd ~/src
- tar xvzf liboil-0.3.17.tar.gz
- cd liboil-0.3.17
- configure –prefix=$HOME
- make all install
- cd ..
- 下载 swfdec (opens in a new tab)
- tar xvzf swfdec-0.9.2.tar.gz
- cd swfdec-0.9.2
- configure –prefix=$HOME –enable-gtk=no –enable-gstreamer=no –with-audio=none
- make all install
- cp ~/bin/*.dll ~/build
构建
- 打开一个 Git Bash shell
- mkdir src; cd src
- git clone git://github.com/mltframework/mlt.git
- 现在可以关闭 Git Bash shell,回到 MinGW Shell
- cd ~/src/mlt
- 输入(或加入 ~/.profile 并启动新 shell):
export CC=gcc
export CXX=g++
export PKG_CONFIG_PATH=$HOME/lib/pkgconfig
export CFLAGS=-I$HOME/include - ./configure –prefix=$HOME/build –enable-gpl –disable-decklink
- make all install
SWIG 与 Python 绑定
- 从 python.org 安装 Python 2.x。
- 从 swig.org 安装 swigwin。
- 按照 http://www.swig.org/Doc1.3/Windows.html#Windows\_python (opens in a new tab) 设置 PYTHON_INCLUDE 和 PYTHON_LIB 环境变量
- 以 src/swig/python/build 为指南手动构建
- 需要添加 “-L$PYTHON_LIB -lpython27”
- _mlt.so => _mlt.pyd
- cp {mlt.py,_mlt.pyd} ~/build
运行
- 打开一个 MinGW Shell 或命令提示符
- cd ~/build
- melt noise:
备注
- 进程的当前目录必须是包含 melt 及依赖 DLL 的目录,且该目录下有 lib 和 share 子目录。
- stdout 和 stderr 被重定向到 stdout.txt 和 stderr.txt。这是 SDL 在 Windows 上的正常行为。
- 要构建 rtaudio 消费器,你需要安装微软的 !DirectX SDK。此外,你还需要从 Windows SDK 安装 Visual C++ 编译器,仅仅只是为了得到 sal.h!我建议直接 =cp “C:\Program Files\Microsoft Visual Studio 9.0\VC\include\sal.h” “C:\Program Files\Microsoft !DirectX SDK (June 2010)\Include”=,而不是使用 Windows SDK。当我尝试使用 Windows SDK 时,编译器陷入了无休止的报错循环。然后,你需要把 !DirectX SDK 加入你的 msys CFLAGS 环境变量(~/.profile):=export CFLAGS=”-I$HOME/include -I"C:\Program Files\Microsoft !DirectX SDK (June 2010)\Include"”=
- 有人提到:在 !SoX(Sound eXchange)一节中,我需要让杀毒软件不要杀掉 ~/src/sox-14.4.0/conftest.exe;在 libsamplerate 一节中,不要杀掉 ~/src/libsamplerate-0.1.8/conftest.exe。