美文网首页FFmpeg
Mac环境编译FFmpeg

Mac环境编译FFmpeg

作者: _凌浩雨 | 来源:发表于2018-01-10 16:56 被阅读0次

    环境:

    1. 解压FFmpeg-release-3.3.zip,目录结构如下:

    FFmpeg-release-3.3.zip.png

    2. 修改configure配置文件

    如果直接按照未修改的配置进行编译,结果编译出来的so文件类似libavcodec.so.55.39.101,版本号位于so之后,Android上似乎无法加载。因此需要按如下修改:
    将该文件中的如下四行:

    SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
    SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'
    

    替换为:

    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
    SLIB_INSTALL_LINKS='$(SLIBNAME)'
    

    3. 编写build_android可执行文件。

    具体做法:赋值configure文件,并修改名为build_android,使用Xcode打开build_android文件,将里面的文件全选删除,并改为下面的文件内容:

    #!/bin/bash
    # NSK所在本机路径
    NDK=/Users/mazaiting/mazaiting/other/android-ndk-r14b
    # NDK所使用的Android版本
    NDK_VERSION=android-21  
    function build_one {  
    ./configure \  
    --target-os=linux \  
    --arch=$ARCH \  
    --prefix=$PREFIX \  
    --enable-shared \  
    --disable-static \  
    --disable-doc \  
    --disable-ffmpeg \  
    --disable-ffplay \  
    --disable-ffprobe \  
    --disable-ffserver \  
    --disable-doc \  
    --disable-symver \  
    --enable-cross-compile \  
    --cross-prefix=$CROSS_COMPILE \  
    --sysroot=$SYSROOT \  
    --extra-cflags="-fpic"  
    make clean  
    make  
    make install  
    }  
    # arm架构
    ARCH=arm
    # arm架构
    CPU=arm
    # 生成的文件路径,当前路径/android/CPU变量所指的文件夹名
    PREFIX=$(pwd)/android/$CPU
    # Toolchain路径
    TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
    # 编译路径
    CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-
    SYSROOT=$NDK/platforms/$NDK_VERSION/arch-$ARCH  
    build_one
    

    其中需要改的地方:

    • NDK变量后的路径,改为自己本地的NDK对应的路径
    • TOOLCHAIN改为相对应的路径
    • CROSS_COMPILE改为自己对应的路径

    注意:使用./configure --help可查看所有的配置选项

    4. 执行build_android

    ./build_android 
    

    经过十几分钟的编译之后,会在当前路径下生成/android/arm层级文件夹,如下图。


    生成结果.png

    编译FFmpeg问题集
    Android Studio cmake编译ffmpeg
    编译FFmpeg.so

    相关文章

      网友评论

        本文标题:Mac环境编译FFmpeg

        本文链接:https://www.haomeiwen.com/subject/lbktoxtx.html