如何编译并使用x264库
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库相关推荐
- ios 编译ffmpeg 支持 x264 fdk-aac openssl 并裁剪库大小
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2018-10-11更新 android平台编译 右转 新的报错信息 ./lib ...
- android 编译 aac,android全平台编译ffmpeg以及x264与fdk-aac实践
目录 编译环境 单独编译完整功能ffmpeg库 第一步:编写config.sh环境配置文件 #NDK路径 export ANDROID_NDK_ROOT=/home/byhook/android/an ...
- 六、FFmpeg使用---ffmpeg依赖x264库
上篇文章五.FFmpeg使用---x264编译_[零声教育]音视频开发进阶的博客-CSDN博客粗略的讲了一下如何编译X264,和之前FFmpeg的编译方式差不多,就是脚本有点差异. 接下来讲一 ...
- 在Ubuntu下FFmpeg编译,支持x264和x265(HECV)
所有下载的源 在Ubuntu下FFmpeg编译,支持x264和x265. Ubuntu 12.04 FFmpeg 2.1 Release 注意: cmake要升级要2.8.8 yasm要升级到1.2. ...
- 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译
{写在前面:按照这个方法,基本可以成功在linux系统下交叉编译Qt5.12.3,其他版本的源码也编译} 我的环境:Linux Mint 19.1;树莓派 3;Qt源码5.12.3 当两个系统全部安装 ...
- 备忘: VC++ 自动适用编译两种模式库文件 (DLL, LIB)
为什么80%的码农都做不了架构师?>>> 一个好的程序设计规划总会有属于自己的基础代码库.重用这些代码库,DLL或LIB方式最好的选择之一.在写新的项目或程序是,我们不可能每次 ...
- Ubuntu 下编译ffmpeg和x264解编码器(翻译的一篇文章:)
拿出自己一篇早期接触Ubuntu时翻译的文章,对逝去的SEO-DIC.COM.CN这个网站默哀. Ubuntu 下编译ffmpeg和x264解编码器 今年初由于个人的一些原因和其它因素:希奥开源(ht ...
- ViSP安装之Windows系统基于VS2019编译器编译获得VISP动态库
Windows系统基于VS2019编译器编译获得VISP动态库 官网地址: Installation from source for Windows with Visual C++ 2019 (vc1 ...
- Ubuntu下编译ffmpeg+openh264+x264
[笔记] Ubuntu下编译ffmpeg+openh264+x264 原文:https://www.cnblogs.com/journeyonmyway/p/4648820.html - ffmpeg ...
- NDK 编译和使用静态库、动态库
NDK 编译和使用静态库.动态库 情况一:编译静态库 情况二:编译动态库 情况三:编译动态库+静态库 情况四:已有第三方静态库(动态库),编译静态库(动态库) 默认所有代码和文件在$project/j ...
最新文章
- 在CentOS 6.9 x86_64上玩转OpenResty 1.13.6.1中的resty-cli模块
- 【c语言】蓝桥杯算法训练 薪水计算
- win7安装redis
- 使用Apache Common Daemon实现Windows服务
- NAGIOS安装指南
- SAP Commerce SmartEdit 如何同 SAP Spartacus 协同工作
- spring分布式事务示例_Spring声明式事务示例
- C++之Boost准标准库配置
- 结束 txt进程_Python多进程抓取拉钩网十万数据
- 禁止用户通过shell登录
- 【Java】说明变量作用域的示例程序
- 【LeetCode】剑指 Offer 24. 反转链表
- 猪是这样养成的(网络架构知识普及)
- c语言数据结构课程设计算术表达式求值,《数据结构 课程设计》表达式求值 实验报告...
- 程序员的算法趣题Q62: 日历中的最大矩形
- Webpack打包警告: We noticed you're using the `useBuiltIns` option without declaring a core-js version.
- WordPress博客自媒体主题:Autumn自定义主题配色
- 我们计划为EasyDSS定制开发一款超低延时的EasyPlayer Flash播放器
- 购买服务器,80端口的开启
- ESP8266安卓TCP客户端开发(含全部源码)
热门文章
- 面向对象(Python):学习笔记之多态
- 实战HTML:动画背景网站登录界面
- tt桌球瞄准器手机版_传闻老任将进军手机市场?任天堂独立直面会将于周四凌晨举行...
- MapReduce框架Hadoop应用(一)
- c++_如何将一个const变量转成非const变量_const_cast
- opencv图像分析与处理(14)- 图像压缩基础知识
- (ICIP2019)图像语义分割(23) LEDNet-用于实时语义分割的轻量级编解码网络
- 分布式存储系统学习笔记(一)—什么是分布式系统(4)—容错机制
- python数据分析之(3)pandas
- 实操教程|Pytorch - 弹性训练极简实现( 附源码)