如何解决“错误:找不到 libx264”?
Posted
技术标签:
【中文标题】如何解决“错误:找不到 libx264”?【英文标题】:How to resolve "ERROR: libx264 not found"? 【发布时间】:2014-09-24 14:14:07 【问题描述】:我需要安装支持 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
但是当我运行脚本时出现错误“错误:找不到 libx264”。
我想 ffmpeg 无法确定 libx264 的安装位置。安装 libx264 后,我在 /usr/local/bin 的 /usr/local/lib 可执行文件中有 libx264.so 文件,在 /usr/local/include 目录中有头文件。
我需要对 ffmpeg 构建脚本进行哪些更改才能使其检测到 libx264?
注意:我使用 Ubuntu 12.04(64 位)进行交叉编译。
【问题讨论】:
您使用哪个 Linux 发行版/版本/arch 来构建它? @Salem 我正在使用内核版本为 3.8.0-44 的 Ubuntu 12.04(64 位)。抱歉没有提。 【参考方案1】:确保您的 $ADDI_CFLAGS 变量(您传入 --extra-cflags
)包含 -I /usr/local/include
【讨论】:
谢谢。我相应地修改了 -cflags 和 -ldflags 及其工作。 你能告诉我你在标志中包含哪条路径吗?我的意思是说 /usr/local/include 我从哪里得到这条路径? 你能回答我吗? ***.com/questions/28876811/… 您的 x264 标头在哪里?您需要将此路径作为 -I /path/to/headers 添加到编译器命令行选项中。您还需要将 -L /path/to/x264libraries 添加到链接器命令行标志中。【参考方案2】:您还需要为 Android 交叉编译 libx264,不要使用您的 linux 发行版中的那个。
交叉编译后,通过在 $ADDI_CFLAGS
var 中添加 -I/path/to/x264
来添加 libx264.a 的路径。
要做这一切,你可以直接试试这个构建脚本:https://github.com/ph0b/FFmpeg-Android
【讨论】:
【参考方案3】:在较新版本的 libx264 上,您必须使用 --disable-opencl
进行配置,ffmpeg 才能正确找到库。
./configure --enable-static --disable-opencl
即
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
【讨论】:
谢谢。最后,我使用选项(--disable-opencl)解决了这个问题 谢谢,2年后还是有用的! 那个链接现在失效了 根据download.videolan.org/pub/x264/snapshots/…,您现在应该直接从code.videolan.org/videolan/x264 的存储库下载文件,但需要有人验证它是否有效。否则我已经用他们拍摄的最后一张快照更新了上面的内容。【参考方案4】:我已经尝试过了,它对我有用。
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
【讨论】:
以上是关于如何解决“错误:找不到 libx264”?的主要内容,如果未能解决你的问题,请参考以下文章