x264是性能最好的H.264/AVC编码器,基于GNU GPL协议。FFmpeg可以使用x264作为编码库,能够提高编码性能。

准备

环境linux

  • 下载ffmpeg源码: http://www.ffmpeg.org/download.html
  • 下载x264源码: git://git.videolan.org/x264.git
  • 下载linux版ndk: http://developer.android.com/ndk/downloads/index.html

将源码和ndk都下载放到本地目录。

编译脚本

首先,跟ffmpeg一样,还是先进入到x264目录,修改configure文件。定位到

elseecho "SOSUFFIX=so" >> config.makecho "SONAME=libx264.so.$API"

这几行,将"libx264.so.$API"替换为"libx264.so",文件名中就不要版本了。

在目录下新建build_android_arm.sh脚本,写入以下代码:

SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure \--prefix=$PREFIX \--enable-shared \--disable-static \--enable-pic \--disable-asm \--disable-cli \--disable-pthread \--host=arm-linux \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--sysroot=$SYSROOT \
make clean
make
make install
}
PREFIX=$(pwd)/android/$CPU
build_one

具体过程跟编译ffmpeg类似。

然后修改build_android_arm.sh文件的权限:

sudo chmod +x build_android_arm.sh

并执行:

./build_android.sh

一会,便在android/arm目录下看到编译结果了。

编译包含x264的ffmpeg

要加入x264,需要修改脚本。在编译ffmpeg脚本基础上,在头文件和库的路径中加入x264的编译结果,然后configure的参数中支持x264就可以了。具体如下:

SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
function build_one
{
./configure \--prefix=$PREFIX \--enable-shared \--disable-static \--enable-nonfree \--enable-gpl \--enable-asm \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-ffserver \--disable-avdevice \--disable-symver \--enable-libx264 \--enable-encoder=libx264 \--enable-decoder=h264 \--enable-protocol=rtp \--enable-zlib \--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \--target-os=linux \--arch=arm \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $ADDI_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-I$(pwd)/x264/include/"
ADDI_LDFLAGS="-L$(pwd)/x264/lib/"
build_one

然后将编译好的include和lib目录拷贝至ffmpeg/x264目录下,再执行build_android_arm.sh脚本就可以了。

如何编译并使用x264库相关推荐

  1. ios 编译ffmpeg 支持 x264 fdk-aac openssl 并裁剪库大小

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2018-10-11更新 android平台编译 右转 新的报错信息 ./lib ...

  2. android 编译 aac,android全平台编译ffmpeg以及x264与fdk-aac实践

    目录 编译环境 单独编译完整功能ffmpeg库 第一步:编写config.sh环境配置文件 #NDK路径 export ANDROID_NDK_ROOT=/home/byhook/android/an ...

  3. 六、FFmpeg使用---ffmpeg依赖x264库

    上篇文章五.FFmpeg使用---x264编译_[零声教育]音视频开发进阶的博客-CSDN博客粗略的讲了一下如何编译X264,和之前FFmpeg的编译方式差不多,就是脚本有点差异.     接下来讲一 ...

  4. 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)

    所有下载的源 在Ubuntu下FFmpeg编译,支持x264和x265. Ubuntu 12.04 FFmpeg 2.1 Release 注意: cmake要升级要2.8.8 yasm要升级到1.2. ...

  5. 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译

    {写在前面:按照这个方法,基本可以成功在linux系统下交叉编译Qt5.12.3,其他版本的源码也编译} 我的环境:Linux Mint 19.1;树莓派 3;Qt源码5.12.3 当两个系统全部安装 ...

  6. 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)

    为什么80%的码农都做不了架构师?>>>    一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...

  7. Ubuntu 下编译ffmpeg和x264解编码器(翻译的一篇文章:)

    拿出自己一篇早期接触Ubuntu时翻译的文章,对逝去的SEO-DIC.COM.CN这个网站默哀. Ubuntu 下编译ffmpeg和x264解编码器 今年初由于个人的一些原因和其它因素:希奥开源(ht ...

  8. ViSP安装之Windows系统基于VS2019编译器编译获得VISP动态库

    Windows系统基于VS2019编译器编译获得VISP动态库 官网地址: Installation from source for Windows with Visual C++ 2019 (vc1 ...

  9. Ubuntu下编译ffmpeg+openh264+x264

    [笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...

  10. NDK 编译和使用静态库、动态库

    NDK 编译和使用静态库.动态库 情况一:编译静态库 情况二:编译动态库 情况三:编译动态库+静态库 情况四:已有第三方静态库(动态库),编译静态库(动态库) 默认所有代码和文件在$project/j ...

最新文章

  1. 在CentOS 6.9 x86_64上玩转OpenResty 1.13.6.1中的resty-cli模块
  2. 【c语言】蓝桥杯算法训练 薪水计算
  3. win7安装redis
  4. 使用Apache Common Daemon实现Windows服务
  5. NAGIOS安装指南
  6. SAP Commerce SmartEdit 如何同 SAP Spartacus 协同工作
  7. spring分布式事务示例_Spring声明式事务示例
  8. C++之Boost准标准库配置
  9. 结束 txt进程_Python多进程抓取拉钩网十万数据
  10. 禁止用户通过shell登录
  11. 【Java】说明变量作用域的示例程序
  12. 【LeetCode】剑指 Offer 24. 反转链表
  13. 猪是这样养成的(网络架构知识普及)
  14. c语言数据结构课程设计算术表达式求值,《数据结构 课程设计》表达式求值 实验报告...
  15. 程序员的算法趣题Q62: 日历中的最大矩形
  16. Webpack打包警告: We noticed you're using the `useBuiltIns` option without declaring a core-js version.
  17. WordPress博客自媒体主题:Autumn自定义主题配色
  18. 我们计划为EasyDSS定制开发一款超低延时的EasyPlayer Flash播放器
  19. 购买服务器,80端口的开启
  20. ESP8266安卓TCP客户端开发(含全部源码)

热门文章

  1. 面向对象(Python):学习笔记之多态
  2. 实战HTML:动画背景网站登录界面
  3. tt桌球瞄准器手机版_传闻老任将进军手机市场?任天堂独立直面会将于周四凌晨举行...
  4. MapReduce框架Hadoop应用(一)
  5. c++_如何将一个const变量转成非const变量_const_cast
  6. opencv图像分析与处理(14)- 图像压缩基础知识
  7. (ICIP2019)图像语义分割(23) LEDNet-用于实时语义分割的轻量级编解码网络
  8. 分布式存储系统学习笔记(一)—什么是分布式系统(4)—容错机制
  9. python数据分析之(3)pandas
  10. 实操教程|Pytorch - 弹性训练极简实现( 附源码)