我一直在編譯FFMPEG,所以我可以在我的Android應用程序中用命令來使用它。結果應該是1個不依賴於包的靜態文件「ffmpeg」。沒有.so文件。編譯FFMPEG用於命令行使用
我設法用guardianProject編譯它,一切正常,但源代碼太舊,缺少我需要的選項。 我在VirtualBox上使用最新的Ubuntu,所有必需品都已安裝並更新(gawk,yasm,aptitude等)。
網絡上有很多例子。以下是我嘗試過的每個選項遇到的問題。我會很感激與下面的錯誤一方的幫助:
Guardian project - 我設法編譯它,並得到了ffmpeg的文件,但它使用的是舊版本的ffmpeg不包括
"-movFlags faststart"
選項。我嘗試在那裏扔新的ffmpeg(2.3.3),但它只是拋出錯誤。 (我跑git submodule初始化和更新)JayH5 - 一個更通用的構建文件,基本上應該與每個ffmpeg工作。我更新了構建腳本以使用最新的NDK,它似乎正在工作,但它的失敗在
/home/dor/Desktop/ndk/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail.
我讀了這個,它似乎需要黑客,我不明白如何實現。Trovao - 這是一個非常好的項目和構建腳本甚至下載最新的ffmpeg和X264的來源,我甚至成功地在它編譯成FFMPEG和X264文件,但是當我使用它,我得到這個錯誤:
could not load library "libx264.so.142
這很奇怪,因爲x264在那裏,這個項目的全部想法是取消.so文件的需要。
我很感謝幫助解決如何解決任何問題。我喜歡使用JayH5構建腳本,因爲它似乎是最直接的有...
JayH5構建文件:
#!/bin/bash
# set the base path to your Android NDK (or export NDK to environment)
if [[ "x$NDK_BASE" == "x" ]]; then
NDK_BASE=/opt/android-ndk
echo "No NDK_BASE set, using $NDK_BASE"
fi
NDK_PLATFORM_VERSION=14
NDK_ABI=arm
NDK_COMPILER_VERSION=4.8
NDK_SYSROOT=$NDK_BASE/platforms/android-$NDK_PLATFORM_VERSION/arch-$NDK_ABI
NDK_UNAME=`uname -s | tr '[A-Z]' '[a-z]'` # Convert Linux -> linux
HOST=$NDK_ABI-linux-androideabi
NDK_TOOLCHAIN_BASE=$NDK_BASE/toolchains/$HOST-$NDK_COMPILER_VERSION/prebuilt/$NDK_UNAME-x86
CC="$NDK_TOOLCHAIN_BASE/bin/$HOST-gcc --sysroot=$NDK_SYSROOT"
LD=$NDK_TOOLCHAIN_BASE/bin/$HOST-ld
BUILD_PATH=build/ffmpeg
./configure \
$DEBUG_FLAG \
--arch=arm \
--target-os=linux \
--enable-runtime-cpudetect \
--enable-pic \
--disable-shared \
--enable-static \
--cross-prefix=$NDK_TOOLCHAIN_BASE/bin/$NDK_ABI-linux-androideabi- \
--sysroot="$NDK_SYSROOT" \
--extra-cflags="-march=armv7-a -mfloat-abi=softfp -fPIC -DANDROID" \
--extra-ldflags="" \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-network \
沒有變化!我在'configure'選項中添加了'$ ADDITIONAL_CONFIGURE_FLAG'。我在配置之前添加了它...沒有任何更改:( – 2016-06-27 16:38:18
$ ADDITIONAL_CONFIGURE_FLAG的值是什麼? – 2017-10-19 08:06:25