Tôi đang cố gắng xây dựng FFMPEG với libx264 dành cho Android.Xây dựng FFMPEG với x264 cho Android
Tôi có thể xây dựng và sử dụng thành công FFMPEG cho Android nhưng tôi nhận ra rằng tôi cần khả năng mã hóa, do đó tôi đang cố gắng xây dựng FFMPEG với x264.
Tôi đang sử dụng hướng dẫn này để xây dựng FFmpeg dành cho Android http://www.roman10.net/how-to-build-ffmpeg-for-android/
Khi cố gắng xây dựng FFMPEG tôi nhận được một lỗi:
"ERROR: libx264 not found"
Và trong nhật ký của tôi nó nói:
"/usr/local/lib/libx264.a: could not read symbols: Archive has no index; run ranlib to add one..."
Tôi có phiên bản mới nhất của cả FFMPEG và x264. Tôi hiểu rằng FFMPEG trông cho tiêu đề và các thư viện trong usr/lib và usr/include, vì vậy để làm cho nó tìm x264 tôi sử dụng CFLAGS và ldflags:
- --extra-CFLAGS = "-Tôi/usr/local/include "
- --extra-ldflags =" -L/usr/local/lib "
tôi đã cố gắng xây dựng x264 với nhiều tùy chọn khác nhau mà người khác trên internet đã nói rằng tôi cần. ví dụ. --enable-shared, --enable-static, --disable-pthreads, vv Một số diễn đàn cho phép điều này, những người khác nói không vô hiệu hóa điều đó.
Bất kỳ trợ giúp sẽ được nhiều đánh giá cao, Cảm ơn
EDIT:
Nếu tôi xây dựng FFmpeg với các lệnh đơn giản nhất để bao gồm libx264 sau đó nó hoạt động. tức là.
./configure --enable-gpl --enable-libx264 --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --enable-static --enable-shared
Tuy nhiên tôi cần nó để làm việc cho Android. Các kịch bản tôi đang sử dụng là:
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
Tôi đoán rằng một số tùy chọn trong lệnh configure của tôi là mâu thuẫn với phép libx264
LƯU Ý: Nếu tôi loại bỏ enable-libx264 sau đó nó hoạt động
Nếu tôi xây dựng cả x264 và FFmpeg với --disable tĩnh và enable-chia sẻ, sau đó tôi vẫn nhận được lỗi tương tự, nhưng lần này trong nhật ký của tôi nó không có còn nói "... không đọc được biểu tượng ..." nhưng thay vào đó nó nói "không thể tìm thấy -lx264 ..." – Kage
Bạn cài đặt x264 như thế nào? Bạn đã cài đặt nó bằng cách tải xuống nguồn và thực hiện './configure', 'make', 'make install', hoặc bạn đã làm gì khác? Ngoài ra, hệ thống xây dựng của bạn là gì - * nix hoặc Windows (với cygwin/msys)? – sashoalm
Tôi đã tải xuống nguồn và đã sử dụng .configure, tạo, cài đặt Im trên mac (10.7) – Kage