Создайте FFMPEG с x264 для Android

Я пытаюсь создать FFMPEG с libx264 для Android.

Я могу успешно создавать и использовать FFMPEG для Android, но я понял, что мне нужна возможность кодирования, поэтому я пытаюсь создать FFMPEG с x264.

Я использую это руководство для сборки FFmpeg для Android http://www.roman10.net/how-to-build-ffmpeg-for-android/

При попытке создать FFMPEG я получаю сообщение об ошибке :

«ОШИБКА: libx264 не найден»

И в моем журнале написано:

«/ usr / local / lib / libx264.a: не удалось прочитать символы: в архиве нет показатель; запустите ranlib, чтобы добавить один ... "

У меня есть последние версии как FFMPEG, так и x264.Я понимаю, что FFMPEG ищет заголовок и библиотеки в usr / lib и usr / include, поэтому, чтобы найти x264, я использую cflags и ldflags:

  • - extra-cflags = "-I / usr / local / include "
  • - extra-ldflags =" -L / usr / local / lib "

Я пробовал собрать x264 с множеством различных опций, которые, по словам других людей в Интернете, мне нужны. например. --enable-shared, --enable-static, --disable-pthreads и т. д. Некоторые форумы говорят включить это, другие говорят, что нет, отключите это.

Мы будем благодарны за любую помощь, Спасибо

РЕДАКТИРОВАТЬ:

Если я построю FFmpeg с простейшими командами, включающими libx264, тогда он заработает. т.е.

./configure --enable-gpl --enable-libx264 --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --enable-static --enable-shared

Однако мне нужно, чтобы он работал на Android. Я использую сценарий:

NDK=~/Desktop/android-ndk-r7
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86
function build_one
{
./configure --target-os=linux \
    --prefix=$PREFIX \
    --enable-cross-compile \
    --enable-shared \
    --enable-static \
    --extra-libs="-lgcc" \
    --arch=arm \
    --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
    --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
    --nm=$PREBUILT/bin/arm-linux-androideabi-nm \
    --sysroot=$PLATFORM \
    --extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS -I/usr/local/include" \
    --extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L $PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog -L/usr/local/lib " \
    --enable-gpl \
    --enable-libx264 \
    --disable-everything \
    --enable-demuxer=mov \
    --enable-demuxer=h264 \
    --disable-ffplay \
    --enable-protocol=file \
    --enable-avformat \
    --enable-avcodec \
    --enable-decoder=rawvideo \
    --enable-decoder=mjpeg \
    --enable-decoder=h263 \
    --enable-decoder=mpeg4 \
    --enable-decoder=h264 \
    --enable-encoder=mjpeg \
    --enable-encoder=h263 \
    --enable-encoder=mpeg4 \
    --enable-encoder=h264 \
    --enable-parser=h264 \
    --disable-network \
    --enable-zlib \
    --disable-avfilter \
    --disable-avdevice \
    $ADDITIONAL_CONFIGURE_FLAG

make clean
make  -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib  -soname libffmpeg.so -shared -nostdlib  -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog  --warn-once  --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}

CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one

Я предполагаю, что какой-то параметр в моей команде configure противоречит включению libx264

ПРИМЕЧАНИЕ. Если я удалю --enable-libx264, он будет работать

13
задан Alex Cohn 4 January 2014 в 19:01
поделиться