• FFmpeg安卓平台编译


    准备的文件

    1、FFmpeg源代码
    2、ubuntu系统或者windows下搭建cygwin交叉编译环境
    3、ndk-linux或者ndk-windows版本

    开始

    1、解压FFmpeg,ndk
    2、进入FFmpeg根目录下
    3、修改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)’

    4、新建build_android.sh
    写入内容:

    1. #!/bin/bash
    2. NDK=/home/song/FFmpeg/android-ndk-r13b
    3. SYSROOT=$NDK/platforms/android-9/arch-arm/
    4. TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
    5. function build_one
    6. {
    7. ./configure \
    8. --prefix=$PREFIX \
    9. --enable-shared \
    10. --disable-static \
    11. --disable-doc \
    12. --disable-doc \
    13. --disable-symver \
    14. --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    15. --target-os=linux \
    16. --arch=arm \
    17. --enable-cross-compile \
    18. --sysroot=$SYSROOT \
    19. --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    20. --extra-ldflags="$ADDI_LDFLAGS" \
    21. $ADDITIONAL_CONFIGURE_FLAG
    22. make clean
    23. make
    24. make install
    25. }
    26. CPU=arm
    27. PREFIX=$(pwd)/android/$CPU
    28. ADDI_CFLAGS="-marm"
    29. build_one
    • 1

    这个脚本文件有几个地方需要注意:

    (1) NDK,SYSROOT和TOOLCHAIN这三个环境变量一定要换成你自己机器里的。

    (2) 确保cross-prefix变量所指向的路径是存在的。

    5、给build.sh增加可执行权限

    $chmod+x build_android.sh  
    • 1

    6、执行该脚本
    ./build_android.sh

    7、至此,会在/home/dennis/ffmpeg-2.2目录下生成一个android目录,其中/home/dennis/ffmpeg-2.2/android/arm/lib目录下的so库文件如下:

    1. [plain] view plain copy
    2. -rwxr-xr-x 1 dennisdennis 55208 Mar 29 16:26libavdevice-55.so
    3. -rwxr-xr-x 1 dennisdennis 632476 Mar 29 16:26 libavfilter-4.so
    4. -rwxr-xr-x 1 dennisdennis 1442948 Mar 29 16:26 libavformat-55.so
    5. -rwxr-xr-x 1 dennisdennis 7985396 Mar 29 16:26 libavcodec-55.so
    6. -rwxr-xr-x 1 dennisdennis 83356 Mar 29 16:26libswresample-0.so
    7. -rwxr-xr-x 1 dennisdennis 308636 Mar 29 16:26 libswscale-2.so
    8. -rwxr-xr-x 1 dennisdennis 300580 Mar 29 16:26libavutil-52.so
    • 1

    注:以上列表去掉了符号链接文件和pkgconfig目录。

  • 相关阅读:
    【轴承故障诊断】基于matlab贝叶斯优化支持向量机轴承故障诊断(西储数据)【含Matlab源码 2027期】
    论坛议程 | COSCon'23 开源治理(G)
    feign 配置使用
    单机多GPU训练模型入门指南(torch.nn.DataParallel)
    【hudi】数据湖客户端运维工具Hudi-Cli实战
    HarmonyOS鸿蒙学习笔记(4)Tabs模仿安卓ViewPager+Fragment的效果
    基于.NetCore开发博客项目 StarBlog - (6) 页面开发之博客文章列表
    [全家桶之SpringMVC]SpringMVC 的特点和优势
    【C++】不能两次杀死同一条鱼 - 浅述shared_ptr智能指针的使用方法
    windows下安装hadoop3.1.3(详细)
  • 原文地址:https://blog.csdn.net/m0_72431373/article/details/127225658