下载x264
x264 是一个免费的软件库和应用程序,用于将视频流编码为 H.264/MPEG-4 AVC 压缩格式, www.videolan.org/developers/…
git clone https://code.videolan.org/videolan/x264.git
修改配置
- 修改x264源码根目录下的configure中的这一行,改成下图这个样,不然生成的库的名字会是libx264.so.159 (Android系统是不识别这种命名的动态库的)
按回车进行匹配,输入i,进行修改,按esc退出修改,输入:wq保存退出
修改成libx264.$API.so
- x264使用gcc,但是ndk21已经废弃了,需要使用旧版ndk
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
unzip android-ndk-r14b-linux-x86_64.zip ndk-r14b
遇到的问题:
- ignoredption Found no assembler Minimum version is nasm-2.13 解决:安装nasm
sudo apt-get install nasm
- 修改x264源码根目录下的configure中的这一行,改成下图这个样,不然生成的库的名字会是libx264.so.159 (Android系统是不识别这种命名的动态库的)
按回车进行匹配,输入i,进行修改,按esc退出修改,输入:wq保存退出
修改成libx264.$API.so
build android 不同架构动态库
由于x264使用gcc,但是ndk21已经废弃,会报 No working C compiler found错误,所以需要使用旧版ndk14
编译armv7
NDK=/home/xy/android/ndk/ndk-r14b/android-ndk-r14b
PREFIX=/home/xy/android/x264/x264/so
SYSROOT=$NDK/platforms/android-21/arch-arm/
CROSS_PREFIX=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--cross-prefix=$CROSS_PREFIX \
--sysroot=$SYSROOT \
--host=arm-linux
make \
make install
编译armv8
NDK=/home/xy/android/ndk/ndk-r14b/android-ndk-r14b
PREFIX=/home/xy/android/x264/x264/so/arm64
SYSROOT=$NDK/platforms/android-21/arch-arm64/
CROSS_PREFIX=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--cross-prefix=$CROSS_PREFIX \
--sysroot=$SYSROOT \
--host=aarch64-linux
make \
make install
编译x86
NDK=/home/xy/android/ndk/ndk-r14b/android-ndk-r14b
PREFIX=/home/xy/android/x264/x264/so/x86
SYSROOT=$NDK/platforms/android-21/arch-x86/
CROSS_PREFIX=$NDK/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/i686-linux-android-
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--cross-prefix=$CROSS_PREFIX \
--sysroot=$SYSROOT \
--host=x86-linux
make \
make install
编译x86_64
NDK=/home/xy/android/ndk/ndk-r14b/android-ndk-r14b
PREFIX=/home/xy/android/x264/x264/so/x86_64
SYSROOT=$NDK/platforms/android-21/arch-x86_64/
CROSS_PREFIX=$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-static \
--enable-pic \
--disable-asm \
--disable-cli \
--cross-prefix=$CROSS_PREFIX \
--sysroot=$SYSROOT \
--host=x86_64-linux
make \
make install
./configure [options]
Help:
-h, --help print this message
Standard options:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
--bindir=DIR install binaries in DIR [EPREFIX/bin]
--libdir=DIR install libs in DIR [EPREFIX/lib]
--includedir=DIR install includes in DIR [PREFIX/include]
--extra-asflags=EASFLAGS add EASFLAGS to ASFLAGS
--extra-cflags=ECFLAGS add ECFLAGS to CFLAGS
--extra-ldflags=ELDFLAGS add ELDFLAGS to LDFLAGS
--extra-rcflags=ERCFLAGS add ERCFLAGS to RCFLAGS
Configuration options:
--disable-cli disable cli
--system-libx264 use system libx264 instead of internal
--enable-shared build shared library
--enable-static build static library
--disable-bashcompletion disable installation of bash-completion script
--enable-bashcompletion force installation of bash-completion script
--bashcompletionsdir=DIR install bash-completion script in DIR [auto]
--disable-opencl disable OpenCL features
--disable-gpl disable GPL-only features
--disable-thread disable multithreaded encoding
--disable-win32thread disable win32threads (windows only)
--disable-interlaced disable interlaced encoding support
--bit-depth=BIT_DEPTH set output bit depth (8, 10, all) [all]
--chroma-format=FORMAT output chroma format (400, 420, 422, 444, all) [all]
Advanced options:
--disable-asm disable platform-specific assembly optimizations
--enable-lto enable link-time optimization
--enable-debug add -g
--enable-gprof add -pg
--enable-strip add -s
--enable-pic build position-independent code
Cross-compilation:
--host=HOST build programs to run on HOST
--cross-prefix=PREFIX use PREFIX for compilation tools
--sysroot=SYSROOT root of cross-build tree
External library support:
--disable-avs disable avisynth support
--disable-swscale disable swscale support
--disable-lavf disable libavformat support
--disable-ffms disable ffmpegsource support
--disable-gpac disable gpac support
--disable-lsmash disable lsmash support
帮助 Help
- -h, --help 打印此消息
标准选项 Standard options
--prefix=PREFIX 在PREFIX中安装独立于体系结构的文件 [/usr/local]
--exec-prefix=EPREFIX 在EPREFIX中安装与体系结构相关的文件 [PREFIX]
--bindir=DIR 在DIR[EPREFIX/bin]中安装二进制文件
--libdir=DIR 在目录[EPREFIX/lib]中安装libs
--includedir=DIR 在目录[PREFIX/include]中安装includes
--extra-asflags=EASFLAGS 将EASFLAGS添加到ASFLAGS
--extra-cflags=ECFLAGS 将ECFLAGS添加到CFLAGS
--extra-ldflags=ELDFLAGS 将ELDFLAGS添加到LDFLAGS
--extra-rcflags=ERCFLAGS 将ERCFLAGS添加到RCFLAGS
配置选项 Configuration options
--disable-cli 禁用cli
--system-libx264 使用系统libx264而不是内部
--enable-shared 构建共享库
--enable-static 构建静态库
--disable-bashcompletion 禁用bash完成脚本的安装
--enable-bashcompletion 强制安装bash完成脚本
--bashcompletionsdir=DIR 在DIR[auto]中安装bash完成脚本
--disable-opencl 禁用OpenCL功能
--disable-gpl 禁用仅限GPL的功能
--disable-thread 禁用多线程编码
--disable-win32thread 禁用Win32线程(仅限windows)
--disable-interlaced 禁用隔行编码支持
--bit-depth=BIT_DEPTH 设置输出位深度(8,10,全部)[all]
--chroma-format=FORMAT 输出色度格式(400、420、422、444,全部)[all]
高级选项 Advanced options
--disable-asm 禁用特定于平台的组件优化
--enable-lto 启用链接时间优化
--enable-debug 添加-g
--enable-gprof 添加-pg
--enable-strip 添加-s
--enable-pic 构建独立于位置的代码
交叉编译 Cross-compilation
--host=HOST 构建要在主机上运行的程序
--cross-prefix=PREFIX 为编译工具使用前缀
--sysroot=SYSROOT 交叉构建树的根
外部库支持
--disable-avs 禁用avisynth支持
--disable-swscale 禁用swscale支持
--disable-lavf 禁用libavformat支持
--disable-ffms 禁用ffmpegsource支持
--disable-gpac 禁用gpac支持
--disable-lsmash 禁用lsmash支持