docs
Windows 构建

Windows 构建

警告:本文已过时,实际效果因人而异。

搭建构建环境

  1. 安装 Git (opens in a new tab)
    • 选择 “Run Git from the Windows Command Prompt”,将其加入 PATH。
    • 选择 “Checkout Windows-style, commit Unix-style line endings.”
  2. 安装 MinGW (opens in a new tab)
  3. 安装 CMake (opens in a new tab)(frei0r 会用到它)
    并让它把自己加入 PATH。
  4. 下载 (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
    1. 安装共享的 dev 构建版 FFmpeg (opens in a new tab)
    2. 将 7z (opens in a new tab) 压缩包解压到你的 msys 主目录(C:\MinGW\msys\1.0\home$USERNAME)
    3. rm ~/include/stdint.h ~/include/inttypes.h
    4. mkdir -p ~/build/share/ffmpeg ~/build/lib
    5. 下载一个 shared 构建版 FFmpeg (opens in a new tab)
    6. 将 bin/ 文件夹中的 DLL 解压到你的 ~/build 文件夹。
    7. 将 “presets” 文件夹的内容解压到 ~/build/share/ffmpeg。
  • SDL
    1. 下载适用于 mingw32 的 SDL-devel (opens in a new tab) 并解压到 $HOME。
    2. 打开一个 MinGW Shell
    3. cd SDL-1.2.14
    4. make native
    5. 为了可再分发,把 /usr/bin/SDL.dll 复制到你的构建目录。
  • dlfcn-win32
    1. 下载 dlfcn-win32 (opens in a new tab)
    2. cd ~/src/dlfcn-win32-r19
    3. ./configure –enable-shared
    4. make all install
    5. 为了可再分发,把 /mingw/bin/libdl.dll 复制到你的构建目录。
  • libXML
    1. 下载 libxml2 和 libiconv 的二进制压缩包,并把它们(去掉顶层目录)解压到你的 msys 主目录。

    2. 在 ~/lib/pkgconfig 中创建你自己的供 pkg-config 使用的 libxml-2.0.pc 文件:
      prefix=/ignore
      exec_prefix=${prefix}
      libdir=${exec_prefix}/lib
      includedir=${prefix}/include

      Name: libXML
      Version: 2.6.22
      Description: libXML library version 2.
      Requires:
      Libs: -L${libdir} -lxml2 -lz
      Cflags: -I${includedir}

    3. cd ~/lib

    4. cp libxml2.lib xml2.lib

    5. cp ~/bin/libxml2.dll ~/build

    6. cp ~/bin/iconv.dll ~/build

    7. cp ~/bin/zlib1.dll ~/build

  • GTK+
    1. 下载 GTK+ (opens in a new tab) 的 All-in-one 整合包
    2. 将压缩包解压到你的 msys 主目录。
    3. cp ~/bin/*.dll ~/build
  • libsamplerate
    1. 下载 libsamplerate (opens in a new tab) 源码 tar 压缩包
    2. cd ~/src
    3. tar xvzf libsamplerate-0.1.7.tar.gz
    4. cd libsamplerate-0.1.7
    5. ./configure –prefix=$HOME
    6. make all install
    7. cp ~/bin/libsamplerate-0.dll ~/build
  • Frei0r
    1. cd ~/src
    2. git clone git://code.dyne.org/frei0r.git
    3. cd frei0r
    4. mkdir build
    5. cd build
    6. cmake -G “MSYS Makefiles” -DCMAKE_INSTALL_PREFIX=$HOME ..
      (注意末尾的两个点,指代上级目录。)
    7. make all install
    8. cp ../include/frei0r.h ~/include
    9. mv ~/lib/frei0r-1 ~/build/lib
  • SoX
    1. 下载 SoX (opens in a new tab) 源码 tar 压缩包
    2. cd ~/src
    3. tar xvzf sox-14.3.1.tar.gz
    4. cd sox-14.3.1
    5. ./configure –prefix=$HOME –without-ffmpeg –disable-symlinks –disable-gomp –without-magic –without-png –without-ladspa
    6. make all install
    7. cp ~/bin/libsox-1.dll ~/build
  • Qt
    1. 下载 Qt SDK (opens in a new tab) 或框架库
    2. export QTDIR=/c/Qt/2010.04/qt
    3. cp $QTDIR/bin/QtCore4.dll ~/bin
    4. cp $QTDIR/bin/QtGui4.dll ~/bin
    5. cp $QTDIR/bin/QtSvg4.dll ~/bin
    6. cp $QTDIR/bin/QtXml4.dll ~/bin
  • JACK 和 LADSPA
    1. 只在安装了 GTK+ 和 LibXML 依赖之后再执行本节。

    2. 下载 (opens in a new tab)

    3. 解压压缩包,进入其中的 bin/windows 目录并运行安装程序。

    4. 安装到 C:\Jack,以简化后续操作。

    5. cd ~

    6. cp -a /c/jack/lib/* lib

    7. cp -a /c/jack/includes/* include

    8. 为了可再分发,把 libjack.dll 和 libjackserver.dll 从 C:\Windows\System32(64 位系统则为 C:\Windows\SysWOW64)复制到你的构建目录。

    9. 制作你自己的 pkg-config 文件:~/lib/pkgconfig/jack.pc:
      prefix=/ignore
      exec_prefix=${prefix}
      libdir=${prefix}/lib
      includedir=${prefix}/include

      Name: 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}

    10. curl http://www.ladspa.org/ladspa\_sdk/ladspa.h.txt (opens in a new tab) > ~/include/ladspa.h

    11. 编辑 ~/include/jack/systemdeps.h,注释掉或删除 “typedef HANDLE pthread_t;”(在最新版本中可能不存在)

    12. 下载适用于 Windows 的 Audacity LADSPA (opens in a new tab) 插件。

    13. 把插件解压到 ~/build/lib/ladspa

  • SwfDec
    1. 只在安装了 GTK+ 之后再执行本节。
    2. 下载 liboil (opens in a new tab)
    3. cd ~/src
    4. tar xvzf liboil-0.3.17.tar.gz
    5. cd liboil-0.3.17
    6. configure –prefix=$HOME
    7. make all install
    8. cd ..
    9. 下载 swfdec (opens in a new tab)
    10. tar xvzf swfdec-0.9.2.tar.gz
    11. cd swfdec-0.9.2
    12. configure –prefix=$HOME –enable-gtk=no –enable-gstreamer=no –with-audio=none
    13. make all install
    14. cp ~/bin/*.dll ~/build

构建

  1. 打开一个 Git Bash shell
  2. mkdir src; cd src
  3. git clone git://github.com/mltframework/mlt.git
  4. 现在可以关闭 Git Bash shell,回到 MinGW Shell
  5. cd ~/src/mlt
  6. 输入(或加入 ~/.profile 并启动新 shell):
    export CC=gcc
    export CXX=g++
    export PKG_CONFIG_PATH=$HOME/lib/pkgconfig
    export CFLAGS=-I$HOME/include
  7. ./configure –prefix=$HOME/build –enable-gpl –disable-decklink
  8. make all install

SWIG 与 Python 绑定

  1. 从 python.org 安装 Python 2.x。
  2. 从 swig.org 安装 swigwin。
  3. 按照 http://www.swig.org/Doc1.3/Windows.html#Windows\_python (opens in a new tab) 设置 PYTHON_INCLUDE 和 PYTHON_LIB 环境变量
  4. 以 src/swig/python/build 为指南手动构建
    • 需要添加 “-L$PYTHON_LIB -lpython27”
    • _mlt.so => _mlt.pyd
  5. cp {mlt.py,_mlt.pyd} ~/build

运行

  1. 打开一个 MinGW Shell 或命令提示符
  2. cd ~/build
  3. 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。