2014-09-02 101 views
9

我一直在編譯FFMPEG,所以我可以在我的Android應用程序中用命令來使用它。結果應該是1個不依賴於包的靜態文件「ffmpeg」。沒有.so文件。編譯FFMPEG用於命令行使用

我設法用guardianProject編譯它,一切正常,但源代碼太舊,缺少我需要的選項。 我在VirtualBox上使用最新的Ubuntu,所有必需品都已安裝並更新(gawk,yasm,aptitude等)。

網絡上有很多例子。以下是我嘗試過的每個選項遇到的問題。我會很感激與下面的錯誤一方的幫助:

  1. Guardian project - 我設法編譯它,並得到了ffmpeg的文件,但它使用的是舊版本的ffmpeg不包括"-movFlags faststart"選項。我嘗試在那裏扔新的ffmpeg(2.3.3),但它只是拋出錯誤。 (我跑git submodule初始化和更新)

  2. 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. 我讀了這個,它似乎需要黑客,我不明白如何實現。

  3. 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 \ 

回答

4

之後編譯,只是沒有工作FFMPEG文件2天,我終於成功了!

在上面的build.sh文件中,只需添加這4行和底部以避免prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail錯誤。

添加到文件:

$ADDITIONAL_CONFIGURE_FLAG 
make clean 
make 
make install 

過程完成後不要忘記chmod 775 ffmpeg文件。 真的希望這會幫助別人!

如果您想要支持libX264的FFMPEG,請使用此項目 - 非常完美。 https://github.com/hiteshsondhi88/ffmpeg-android/

+0

沒有變化!我在'configure'選項中添加了'$ ADDITIONAL_CONFIGURE_FLAG'。我在配置之前添加了它...沒有任何更改:( – 2016-06-27 16:38:18

+0

$ ADDITIONAL_CONFIGURE_FLAG的值是什麼? – 2017-10-19 08:06:25