美文网首页
FFmpeg4.2.1编译脚本

FFmpeg4.2.1编译脚本

作者: T_Carbon | 来源:发表于2019-11-19 11:11 被阅读0次

API = 21

#!/bin/bash
NDK_ROOT=/Users/wangtao/Library/Android/android-ndk-r17c
#TOOLCHAIN 变量指向ndk中的交叉编译gcc所在的目录
TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/

ANDROID_API=21

#FLAGS与INCLUDES变量 可以从AS ndk工程的.externativeBuild/cmake/debug/armeabi-v7a/build.ninja中拷贝,需要注意的是**地址**
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=$ANDROID_API -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11  -O0 -fPIC" 
INCLUDES="-isystem $NDK_ROOT/sources/cxx-stl/llvm-libc++/include -isystem $NDK_ROOT/sources/android/support/include -isystem $NDK_ROOT/sources/cxx-stl/llvm-libc++abi/include"

#执行configure脚本,用于生成maskefile
#--prefix : 安装目录
#--enable-small : 优化大小
#--disable-programs : 不编译ffmpeg程序(命令行工具),我们是需要获得静态(动态)库。
#--disable-avdevice : 关闭avdevice模块,此模块在android中无用
#--disable-encoders : 关闭所有编码器 (播放不需要编码)
#--disable-muxers :  关闭所有复用器(封装器),不需要生成mp4这样的文件,所以关闭
#--disable-filters :关闭视频滤镜
#--enable-cross-compile : 开启交叉编译(ffmpeg比较**跨平台**,并不是所有库都有这么happy的选项 )
#--cross-prefix: 看右边的值应该就知道是干嘛的,gcc的前缀 xxx/xxx/xxx-gcc 则给xxx/xxx/xxx-
#disable-shared enable-static 不写也可以,默认就是这样的。
#--sysroot: 
#--extra-cflags: 会传给gcc的参数
#--arch --target-os :
PREFIX=./android/armeabi-v7a
./configure \
--prefix=$PREFIX \
--prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--disable-shared \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS $INCLUDES" \
--extra-cflags="-isysroot $NDK_ROOT/sysroot" \
--arch=arm \
--target-os=android 

make clean
make install

API = 17

首先将configure中的4209行注释掉

# set_default target_os
# if test "$target_os" = android; then
#     cc_default="clang"
# fi

脚本信息

#!/bin/bash

# mac下编译ffmpeg

#NDK_ROOT 变量指向ndk目录
NDK_ROOT=/Users/wangtao/Library/Android/android-ndk-r17c
#TOOLCHAIN 变量指向ndk中的交叉编译gcc所在的目录
TOOLCHAIN=$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64  ## mac下是/darwin-x86_64

#指定android api版本
ANDROID_API=17

#此变量用于编译完成之后的库与头文件存放在哪个目录
PREFIX=./android/armeabi-v7a

#执行configure脚本,用于生成makefile
#--prefix : 安装目录
#--enable-small : 优化大小
#--disable-programs : 不编译ffmpeg程序(命令行工具),我们是需要获得静态(动态)库。
#--disable-avdevice : 关闭avdevice模块,此模块在android中无用
#--disable-encoders : 关闭所有编码器 (播放不需要编码)
#--disable-muxers :  关闭所有复用器(封装器),不需要生成mp4这样的文件,所以关闭
#--disable-filters :关闭视频滤镜
#--enable-cross-compile : 开启交叉编译
#--cross-prefix: gcc的前缀 xxx/xxx/xxx-gcc 则给xxx/xxx/xxx-
#disable-shared enable-static 不写也可以,默认就是这样的。
#--sysroot: 
#--extra-cflags: 会传给gcc的参数
#--arch --target-os : 必须要给
./configure \
--prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--disable-shared \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-$ANDROID_API/arch-arm \
--extra-cflags="-isysroot $NDK_ROOT/sysroot -isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=$ANDROID_API -U_FILE_OFFSET_BITS  -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC" \
--arch=arm \
--target-os=android

#上面运行脚本生成makefile之后,使用make执行脚本
make clean
make install

相关文章

  • FFmpeg4.2.1编译脚本

    API = 21 API = 17 首先将configure中的4209行注释掉 脚本信息

  • android全平台编译ffmpeg合并为单个库实践

    目录 编译环境 配置config.sh脚本 配置合并脚本build_ffmpeg_merge.sh 脚本地址 编译...

  • 编译arm

    编译脚本

  • iOS 编译 lame

    网上找了许多编译lame的教程,结果都是编译失败,多次尝试后发现是编译脚本放错路径了,记录下编译的过程,把编译脚本...

  • Android 编译 Lame 库心路历程

    编译脚本 大神编译脚本 github lame 版本 lame-3.100下载地址 https://source...

  • Java字节码分析

    Idea 配置脚本 调用脚本 解读脚本 java程序源码 jdk1.10代码反编译结果 jdk1.8反编译结果 字...

  • 2021-12-03

    iOS Cmkae 编译脚本

  • 如何设置ndk编译脚本属性

    通常我们在ndk编译时,都是一个编译脚本,将c/c++文件通过编译脚本Android.mk编译成动态库或者静态库。...

  • 面向对象常用方法

    非脚本语言有编译js脚本语言 直接啃 无编译(代码) Property属性hasOwnProperty 在Obje...

  • JSP-001-初识JSP

    编译的过程包括三个步骤: 解析JSP文件。 将JSP文件转为servlet。 编译servlet。 脚本程序脚本程...

网友评论

      本文标题:FFmpeg4.2.1编译脚本

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