How to resolve "ERROR: libx264 not found"?

21,864

Solution 1

Make sure your $ADDI_CFLAGS variable (which you pass in --extra-cflags) includes -I /usr/local/include

Solution 2

On newer versions of libx264 you must configure with --disable-opencl for ffmpeg to find the library correctly.

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

i.e.

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

Solution 3

you need to cross-compile libx264 for Android as well, don't use the one from your linux distribution.

Once it's cross-compiled, add the path to libx264.a by adding -I/path/to/x264 inside $ADDI_CFLAGS var.

To do all this, you can directly try this build script: https://github.com/ph0b/FFmpeg-Android

Solution 4

I have tried this and it worked for me.

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
Share:
21,864
davidvarghese
Author by

davidvarghese

Updated on July 10, 2022

Comments

  • davidvarghese
    davidvarghese almost 2 years

    I needed to install ffmpeg with libx264 support for enabling H.264 encoding . I installed libx264 successfully using the below script with toolchains available in 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 
    

    Now I wanted to build ffmpeg with libx264 support . I used the below script with --enable-libx264 , --enable-nonfree , --enable-gpl options as in the below script .

    #!/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
    

    But when I run the script I'm getting error "ERROR: libx264 not found" .

    I suppose ffmpeg is not able to figure out the installed location of libx264 . After libx264 installation I have libx264.so file in /usr/local/lib executable at /usr/local/bin and header files at /usr/local/include directories .

    What all changes do I need to make to the ffmpeg build script in-order to make it detect libx264?

    Note : I am using Ubuntu 12.04(64 bit) for cross compiling .

  • davidvarghese
    davidvarghese almost 10 years
    Thanks . I modified -cflags and -ldflags accordingly and its working .
  • Ahmad Arslan
    Ahmad Arslan over 9 years
    can you tell me which path you are including in flags?? i Mean to say what is /usr/local/include where I get this path ?
  • Ahmad Arslan
    Ahmad Arslan over 9 years
  • George Y.
    George Y. over 9 years
    Where are your x264 headers located? You need to add this path as -I /path/to/headers to your compiler command-line option. You also need to add the -L /path/to/x264libraries to your linker command-line flags.
  • Hyunho Jo
    Hyunho Jo about 8 years
    Thanks. Finally, I solved the problem using the option (--disable-opencl)
  • lucky1928
    lucky1928 over 6 years
    Thanks, it's still helpful after 2 years!
  • dǝɥɔS ʇoıןןƎ
    dǝɥɔS ʇoıןןƎ over 2 years
    That link is now dead
  • Meekohi
    Meekohi over 2 years
    According to download.videolan.org/pub/x264/snapshots/… you should now download the files directly from the repository at code.videolan.org/videolan/x264, but someone would need to verify that it works. Otherwise I've updated the above with the last snapshot they took.