Android FFMPEG 编译脚本

news/2024/7/10 20:59:08 标签: AndroidFFmpeg, FFmpeg

首先下载  FFmpeg

(如果想将FFMPEG安装到系统里请看 Ubuntu16.04 FFMPEG 编译与安装 )

下载完成之后解压文件,进入文件中 将 configure打开

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)' 

保存之后

在configure 新建脚本 build_ffmpeg_for_android.sh 增加权限 chmod 777 build_ffmpeg_for_android.sh

 build_ffmpeg_for_android.sh脚本的内容如下:

#!/bin/bash
LIB_DIR=$(pwd)/Android;

# ffmpeg编译输出前缀
PREFIX=$LIB_DIR/ffmpeg/$CPU

#设置你自己的NDK位置
#NDK_HOME=/Users/superlea/android-ndk-r10e
#设置你自己的平台,这上linux上的,Mac换成darwin-x86_64
#NDK_HOST_PLATFORM=darwin-x86_64


#设置你自己的NDK位置
NDK_HOME=/home/chencl/SoftWare/android-ndk-r13b
NDK_HOST_PLATFORM=linux-x86_64

COMMON_OPTIONS="\
    --target-os=android \
    --disable-static \
    --extra-libs=-lgcc \
    --enable-shared \
    --enable-small \
    --disable-programs \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-doc \
    --disable-symver \
    --disable-asm \
    "

function build_android {
    ./configure \
    --libdir=${PREFIX}/libs/armeabi-v7a \
    --incdir=${PREFIX}/includes/armeabi-v7a \
    --pkgconfigdir=${PREFIX}/pkgconfig/armeabi-v7a \
    --arch=arm \
    --cpu=armv7-a \
    --cross-prefix="${NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/arm-linux-androideabi-" \
    --sysroot="${NDK_HOME}/platforms/android-19/arch-arm/" \
    --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/arm64-v8a \
    --incdir=${PREFIX}/includes/arm64-v8a \
    --pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \
    --arch=aarch64 \
    --cpu=armv8-a \
    --cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-21/arch-arm64/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS} 
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/x86 \
    --incdir=${PREFIX}/includes/x86 \
    --pkgconfigdir=${PREFIX}/pkgconfig/x86 \
    --arch=x86 \
    --cpu=i686 \
    --cross-prefix="${NDK_HOME}/toolchains/x86-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/i686-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-19/arch-x86/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS} 
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/x86_64 \
    --incdir=${PREFIX}/includes/x86_64 \
    --pkgconfigdir=${PREFIX}/pkgconfig/x86_64 \
    --arch=x86_64 \
    --cpu=x86_64 \
    --cross-prefix="${NDK_HOME}/toolchains/x86_64-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/x86_64-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-21/arch-x86_64/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

};

build_android

在跟补录运行 build_ffmpeg_for_android.sh 耗时较长 

之后生成的有 Android文件夹,查看Android文件夹(Android文件夹加锁  执行sudo chmod 777 -R  Android/ )

目录结构如下: 

其中 libs 文件为各个平台的下的支持库.

├── includes  #头文件
│   ├── arm64-v8a
│   ├── armeabi-v7a
│   ├── x86
│   └── x86_64

├── libs    #库文件
│   ├── arm64-v8a
│   │   ├── libavcodec.so
│   │   ├── libavdevice.so
│   │   ├── libavfilter.so
│   │   ├── libavformat.so
│   │   ├── libavutil.so
│   │   ├── libswresample.so
│   │   └── libswscale.so
│   ├── armeabi-v7a
│   │   ├── libavcodec.so
│   │   ├── libavdevice.so
│   │   ├── libavfilter.so
│   │   ├── libavformat.so
│   │   ├── libavutil.so
│   │   ├── libswresample.so
│   │   └── libswscale.so
│   ├── x86
│   │   ├── libavcodec.so
│   │   ├── libavdevice.so
│   │   ├── libavfilter.so
│   │   ├── libavformat.so
│   │   ├── libavutil.so
│   │   ├── libswresample.so
│   │   └── libswscale.so
│   └── x86_64
│       ├── libavcodec.so
│       ├── libavdevice.so
│       ├── libavfilter.so
│       ├── libavformat.so
│       ├── libavutil.so
│       ├── libswresample.so
│       └── libswscale.so
└── pkgconfig
    ├── arm64-v8a
    ├── armeabi-v7a
    ├── x86
    └── x86_64

 


http://www.niftyadmin.cn/n/1567499.html

相关文章

Ubuntu 命令行 安装 OpenJDK ,JDk 以及JDK版本切换

Ubuntu 编译源码必须使用 OpenJDK,而且每个Android版本对应的OpenJDK版本各不相同,因此需要配置多个OpenJDK,配置比较耗时和麻烦,使用命令行安装省时又方便. 默认JDK 安装: ~$ sudo apt-get update ~$ sudo apt-get install default-jre Oracle JDK : 6 , 7, 8,…

Ubuntu中安装虚拟机 VirtualBox | 命令行 手动安装

手动安装(推荐) 根据不同版本下载相应的 VirtualBox VirtualBox下载 Ubuntu下安装Windows 10 下载完成只有 赋予 下载包权限 chmod 777 virtualbox-6.0_6.0.14-133895_Ubuntu_xenial_amd64.deb 然后 安装 VirtualBox sudo dpkg -i virtualbox-6.0_6.0.14-133895_U…

Ubuntu 使用 VirtualBox 安装Windows10系统超级详细教程 以及虚拟机系统全屏设置

Ubuntu 平台进行软件开发有时候依赖于很多的Windows 系统软件,此时可以安装 win32进行解决,但是只能解决少部分问题,大部分开发软件也是需要一个Windows系统的,最近页经常被问到如何在Ubuntu上面安装虚拟机,就决定写出来分享一下.全屏设置在文章的最后. 1.安装 VirtualBox Vi…

shell 脚本--数学运算

语法 方法一 expr $num1 operator $num2方法二 $(($num1 operator $num2)) expr操作符对照表 操作符 含义num1 | num2 num1不为空且非0,返回num1;否则返回num2num1 & num2 …

Android 7.1 修改源码实现app的静默安装 安装完成之后自动打开安装的应用.

真正的静默安装是不需要用户进行任何点击操作的,目前大部分博客所说的静默安装还是需要弹出确认界面,让用户点击授权安装,我认为真正的静默安装应该是不需要用户任何确定操作,就比如现在的好多应用市场安装软件才是真正的静默安装. 目前公司也想要实现和应用市场类似的安装方式…

Android 7.0 9.0 修改源码去掉动态权限 权限白名单设置

最近公司集成很多第三方APP,有很多的APP并没有进行动态权限申请,导致很多低版本的应用在大于6.0的系统上不能进行运行的问题,为此公司做出了让步,决定去到弹窗,只要是应用在AndroidManifest.xml进行申请的权限都可以使用. 预装的第三方app有两种:一种是adb push 到…

shell 脚本--函数的高级使用

函数两种命名格式 如下,第一种是带() 第二种是不带()的 第一种小括号的 函数名(){ ....... commend ....... }第一种不带小括号的 function 函数名{ ....... commend ....... } 函数的传递参数 int example_1(int arg1,int arg2) {arg1 arg2............return null } 举…

Bash方式 Python方式处理Android国际化语言之翻译表格Excel转化成string.xml表格介绍

公司的业务发展,肯定需要做国际化操作,在国际化的过程中最头疼的就是写国际化语言,建立对应的string.xml文件 能够做国际化的应用每个国家的语言对应翻译应该有1000行左右,要是自己一个一个对应的copy整个人都会疯掉的.于是为了偷懒,写了一个脚本脚本还不够完善不过大家可以根据…