抱歉,你查看的文章不存在

如何编译并使用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文件。定位到

else
    echo "SOSUFFIX=so" >> config.mak
    echo "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脚本就可以了。

原文发布于微信公众号 - 何俊林(DriodDeveloper)

原文发表时间:2018-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

码农突围

0 篇文章93 人订阅

相关文章

来自专栏我的博客

TP入门第四天

1、URL大小写 默认配置:’URL_CASE_INSENSITIVE’  => false,   // URL地址是否不区分大小写 这样默认情况下是区分大小写...

31450
来自专栏喵了个咪的博客空间

Otter-入门篇2(Manager安装配置)

Otter-入门篇2(Manager安装配置) ? 前言 上一节已经简单介绍了Otter的基本信息,本节我们就来开准备搭建一个我们自己的Otter环境,因为一个...

450110
来自专栏大数据学习笔记

sed命令实例

sed命令行格式为: sed [-nefri] 'command 输入文本 常用选项: - -n∶使用安静(silent)模式。在一般 sed 的用法中,...

20790
来自专栏逸鹏说道

★Kali信息收集~4.DNS系列

★.1host:DNS信息 参数: ? 一般情况下,host查找的是A,AAAA,和MX的记录 ? 案例: DNS服务器查询 host -t ns 域名 ? ...

33980
来自专栏哎_小羊

Java Maven项目之Nexus私服搭建和版本管理应用

目录: Nexus介绍 环境、软件准备 Nexus服务搭建 Java Maven项目版本管理应用 FAQ 1、Nexus介绍 Nexus是一个强大的Mave...

65180
来自专栏散尽浮华

完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。 以下对openstack的...

3.2K110
来自专栏Jed的技术阶梯

Redis 3.x 单节点和伪分布式安装

安装的时候指定端口号和命令执行路径,其余保持默认即可,这里演示另一个服务的安装并省略部分重复内容

16730
来自专栏Zachary46

Android直接用手机打包apk!

本人用的是Mac,以下操作都是在Mac环境下配置的,Windows环境的配置移步到Android使用Jenkins自动化构建测试打包apk

48130
来自专栏张善友的专栏

CentOS 6 使用 yum 安装MongoDB及服务器端配置

安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法。由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法。64...

31090
来自专栏bboysoul

kali工具-DNSenmum

首先下载 git clone https://github.com/fwaeytens/dnsenum.git 根据里面的INSTALL.txt来安装 首...

14310

扫码关注云+社区

领取腾讯云代金券