6

我需要安装带有 libx264 支持的 ffmpeg 以启用 H.264 编码。我使用以下脚本成功安装了 libx264,并使用了 android-ndk-r9d 中可用的工具链。

 #!/bin/bash
 NDK=~/android-ndk-r9d
 SYSROOT=$NDK/platforms/android-8/arch-arm/
 TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64
 function build_one
 {
 ./configure \
 --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
 --sysroot="$SYSROOT" \
 --host=arm-linux \
 --enable-pic \
 --enable-shared \
 --disable-cli
 make clean
 make
 make install
 }
 build_one 

现在我想构建带有 libx264 支持的 ffmpeg。我将以下脚本与 --enable-libx264 、 --enable-nonfree 、 --enable-gpl 选项一起使用,如下面的脚本所示。

#!/bin/bash
NDK=~/android-ndk-r9d
SYSROOT=$NDK/platforms/android-8/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--enable-nonfree \
--enable-gpl \
--enable-libx264 \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--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="-marm"
build_one

但是当我运行脚本时,我收到错误 "ERROR: libx264 not found" 。

我想 ffmpeg 无法找出 libx264 的安装位置。安装 libx264 后,我在 /usr/local/bin 的 /usr/local/lib 可执行文件中有 libx264.so 文件,在 /usr/local/include 目录中有头文件。

我需要对 ffmpeg 构建脚本进行哪些更改才能使其检测到 libx264?

注意:我使用 Ubuntu 12.04(64 位)进行交叉编译。

4

4 回答 4

9

在较新版本的 libx264 上,您必须配置--disable-openclffmpeg 才能正确找到库。

./configure --enable-static --disable-opencl

IE

wget http://download.videolan.org/pub/x264/snapshots/x264-snapshot-20191217-2245-stable.tar.bz2
tar xjvf x264-snapshot-20191217-2245-stable.tar.bz2
cd x264-snapshot*
./configure --enable-static --disable-opencl
make install
于 2015-12-07T15:54:22.633 回答
8

确保您的 $ADDI_CFLAGS 变量(您传入的--extra-cflags)包括-I /usr/local/include

于 2014-08-03T00:11:29.460 回答
2

你还需要为 Android 交叉编译 libx264,不要使用你的 linux 发行版中的那个。

交叉编译后,通过-I/path/to/x264$ADDI_CFLAGSvar 中添加来添加 libx264.a 的路径。

要做到这一切,你可以直接试试这个构建脚本:https ://github.com/ph0b/FFmpeg-Android

于 2014-08-04T08:26:25.307 回答
1

我已经尝试过了,它对我有用。

cd /opt

git clone git://git.videolan.org/x264.git

cd x264

./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static 

make

make install
于 2016-03-16T13:47:56.253 回答