【MLT编译】使用Xcode调试MLT Multimedia Framework

MLT Multimedia Framework 介绍详见官网

一、前置条件

brew install ffmpeg
brew install sdl2   # 安装ffmepg时,sdl2作为其依赖会自动被安装,这一步可以不执行
brew install mlt

二、下载源码

git clone https://github.com/mltframework/mlt.git

三、配置Modules

  • 打开 mlt/CMakeLists.txt 文件

    mlt的modules我自己是只想调试core和avformat,并且用sdl2作为显示输出。所以只打开 avformat、core、sdl2 这三个。其余的可以注释或者直接删掉。

set(modules
    src/modules/avformat
    src/modules/core
    src/modules/sdl2
    # src/modules/decklink
    # src/modules/frei0r
    # src/modules/feeds
    # src/modules/gtk2
    # src/modules/kdenlive
    # src/modules/motion_est
    # src/modules/normalize
    # src/modules/oldfilm
    # src/modules/opencv
    # src/modules/plus
    # src/modules/plusgpl
    # src/modules/qt
    # src/modules/rtaudio
    # src/modules/vid.stab
    # src/modules/vmfx
    # src/modules/xine
    # src/modules/xml
)

四、编译成Xcode工程

  • 执行如下命令

    mkdir build
    cd build
    cmake -G "Xcode" ..

    不出意外的话,编译应该是成功的,如果有问题,先检查前置条件是否满足,如果有其他问题可以留言评论。

五、运行Xcode工程

1. 打开工程

编译成功以后,在 mlt/build 目录下会生成一个 MLT.xcodeproj 文件,打开它!!

打开工程

2. 选择melt运行

运行工程

然后,点击运行。不出意外的话,会遇到下面两个问题。

3. 遇到的两个报错

  • PREFIX_DATA 和 PREFIX_LIB

    Use of underclared identifier 'PREFIX_DATA'
    Use of underclared identifier 'PREFIX_LIB'

    解决方案

    # 1. 查看mlt的安装路径
    brew info mlt
    
    # 2. 打开报错位置,把PREFIX_DATA和PREFIX_LIB的值分别替换为(以我自己的路径为例)
    PREFIX_DATA: /usr/local/Cellar/mlt/6.12.0/share/mlt
    PREFIX_LIB: /usr/local/Cellar/mlt/6.12.0/lib/mlt
  • libSDL2.so

    Apple Mach-O Linker (Id)Error
    No such file or directory: 'usr/local/Cellar/sdl2/2.0.9_1/lib/libSDL2.so'

    解决方案

    # 1. 打开 mlt/src/melt/CMakeLists.txt
    把
    IMPORTED_LOCATION ${libdir}/libSDL2.so
    修改成
    IMPORTED_LOCATION ${libdir}/libSDL2.dylib
    
    # 2. 打开 mlt/src/modules/sdl2/CMakeLists.txt
    把
    add_library(mltsdl2 MODULE ${mltsdl2_src})
    修改为
    add_library(mltsdl2 SHARED ${mltsdl2_src}) # 后来试了一下,这一步好像不一定要做

从遇到的这几个问题来看,或许你就明白了为什么前置条件要安装那些库。其实不仅仅那三个库,如果你打开了更多的module,还有更多的依赖需要安装,当然你可以不通过 brew 的方式安装,但是它是最方便的方式。

4. 配置melt运行参数

比如你想播放一个input.mp4文件,在命令行中执行的命令是

melt input.mp4

那么你就可以在xcode中配置运行参数,如下图所示

配置参数

同理,你想调试什么命令,就在这里配置什么参数。然后运行,断点,就可以调试mlt框架了。

5. 成功运行

再次执行程序,视频成功播放。
运行成功



2020.02.26 更新
初次使用xcode时,在编译时可能会出现 The C compiler identification is unknown 的问题。

打开 CMakeError.log 文件会发现是 xcode-select 不在默认的路径的原因。
执行如下命令即可:

sudo xcode-select --switch  /Applications/Xcode.app/Contents/Developer/

你可能感兴趣的:(ffmpeg,c++,c,音视频拼接)