2012-05-19 61 views
2

//編輯保存時間並參考SF project。 IMO,可能以後更多的工作,節省起牀到速度的工作噸.....ffmpeg for android build - 是否完整

在這個問題上:

添加一個git project

構建更容易定製的工具鏈安裝,以便你可以從ndk-build

調用compiler the easy way

樣品標準輸出 - 最初使用的Ubuntu 12.04中在Windows Vista上vmplayer。 IMO的Linux比cygwin更適合構建。

我遵循這些instructions得到一個不確定的結果,其中存在以下條件。

build_android.sh似乎正常退出
的config.log有錯誤的位置,確認從crosstoolchain
GCC所有靜態庫是建立好的 (./libavfilter,./libavcodec等)
ffmpeg.o在那裏,執行確定
沒有./android目錄按前綴設置配置

它看起來像我可以只是把二進制文件到我的手機和測試的外殼。如果沒關係,那麼我可以看一下靜態庫的jni包裝。

但爲什麼沒有寫入任何東西--prefix =。/ android/armv7-a ??

配置記錄的內容進行處理: 這條道路並不在構建結束

細節中存在

FFMPEG_CONFIGURATION='--target-os=linux --prefix=./android/armv7-a 
--enable-libvpx --enable-libvorbis --enable-pthreads --logfile=config.log 
--enable-cross-compile --extra-libs=-lgcc --arch=arm 
--cc=/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc 
--cross-prefix=/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- 
--nm=/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-nm 
--sysroot=/home/rob/src/android-ndk-r8/platforms/android-14/arch-arm/ --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 -mfloat-abi=softfp -marm -march=armv7-a -mtune=cortex-a9 '"'"' 
--disable-shared --enable-static --extra-ldflags='"'"' 
-Wl,-rpath-link=/home/rob/src/android-ndk-r8/platforms/android-14/arch-arm//usr/lib -L/home/rob/src/android-ndk-r8/platforms/android-14/arch-arm//usr/lib 
-nostdlib -lc -lm -ldl -llog'"'"' 
--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-parser=h264 --disable-network --enable-zlib --disable-avfilter --disable-avdevice' 

配置日誌的尾部包含編譯器檢查錯誤

zmbv_test='yes' 
zmbv_test_deps='zlib' 
WARNING: /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail. 
mktemp -u XXXXXX 
Yd2A0h 
WARNING: Unknown C compiler /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc, unable to select optimal CFLAGS 
check_ld cc 
check_cc 
BEGIN /tmp/ffconf.m9Kg3cqt.c 
    1 int main(void){ return 0; } 
END /tmp/ffconf.m9Kg3cqt.c 
/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 -mfloat-abi=softfp -marm -march=armv7-a -mtune=cortex-a9 -c -o /tmp/ffconf.tO2EIBz5.o /tmp/ffconf.m9Kg3cqt.c 
./configure: 640: ./configure: /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: not found 
C compiler test failed. 

build_android.sh stdout的尾部看起來不錯

libavutil/opt.c: In function ‘av_find_opt’: 
libavutil/opt.c:41:5: warning: ‘av_next_option’ is deprecated (declared at libavutil/opt.h:347) [-Wdeprecated-declarations] 
CC libavutil/pixdesc.o 
libavutil/opt.c: In function ‘av_opt_set_defaults’: 
libavutil/opt.c:601:5: warning: ‘av_opt_set_defaults2’ is deprecated (declared at libavutil/opt.h:370) [-Wdeprecated-declarations] 
CC libavutil/random_seed.o 
CC libavutil/rational.o 
CC libavutil/rc4.o 
CC libavutil/samplefmt.o 
CC libavutil/sha.o 
CC libavutil/timecode.o 
CC libavutil/tree.o 
CC libavutil/utils.o 
CC libavutil/x86/cpu.o 
INSTALL libavdevice/avdevice.h 
INSTALL presets/libvpx-1080p50_60.ffpreset 
INSTALL presets/libvpx-1080p.ffpreset 
INSTALL presets/libvpx-360p.ffpreset 
INSTALL presets/libvpx-720p50_60.ffpreset 
INSTALL presets/libvpx-720p.ffpreset 
INSTALL presets/libx264-ipod320.ffpreset 
INSTALL presets/libx264-ipod640.ffpreset 
INSTALL doc/ffprobe.xsd 
INSTALL libavdevice/libavdevice.pc 
INSTALL libavfilter/asrc_abuffer.h 
INSTALL libavfilter/avcodec.h 
INSTALL libavfilter/avfilter.h 
INSTALL libavfilter/avfiltergraph.h 
INSTALL libavfilter/buffersink.h 
INSTALL libavfilter/version.h 
INSTALL libavfilter/vsrc_buffer.h 
INSTALL libavfilter/libavfilter.pc 
INSTALL libavformat/avformat.h 
INSTALL libavformat/avio.h 
INSTALL libavformat/version.h 
INSTALL libavformat/libavformat.pc 
INSTALL libavresample/avresample.h 
INSTALL libavresample/version.h 
INSTALL libavresample/libavresample.pc 
INSTALL libavcodec/avcodec.h 
INSTALL libavcodec/avfft.h 
INSTALL libavcodec/dxva2.h 
INSTALL libavcodec/vaapi.h 
INSTALL libavcodec/vda.h 
INSTALL libavcodec/vdpau.h 
INSTALL libavcodec/version.h 
INSTALL libavcodec/xvmc.h 
INSTALL libavcodec/libavcodec.pc 
INSTALL libswresample/libswresample.pc 
INSTALL libswresample/swresample.h 
INSTALL libswscale/swscale.h 
INSTALL libswscale/libswscale.pc 
INSTALL libavutil/adler32.h 
INSTALL libavutil/aes.h 
INSTALL libavutil/attributes.h 
INSTALL libavutil/audio_fifo.h 
INSTALL libavutil/audioconvert.h 
INSTALL libavutil/avassert.h 
INSTALL libavutil/avstring.h 
INSTALL libavutil/avutil.h 
INSTALL libavutil/base64.h 
INSTALL libavutil/bprint.h 
INSTALL libavutil/bswap.h 
INSTALL libavutil/common.h 
INSTALL libavutil/cpu.h 
INSTALL libavutil/crc.h 
INSTALL libavutil/error.h 
INSTALL libavutil/eval.h 
INSTALL libavutil/fifo.h 
INSTALL libavutil/file.h 
INSTALL libavutil/imgutils.h 
INSTALL libavutil/intfloat.h 
INSTALL libavutil/intfloat_readwrite.h 
INSTALL libavutil/intreadwrite.h 
INSTALL libavutil/lfg.h 
INSTALL libavutil/log.h 
INSTALL libavutil/lzo.h 
INSTALL libavutil/mathematics.h 
INSTALL libavutil/md5.h 
INSTALL libavutil/mem.h 
INSTALL libavutil/dict.h 
INSTALL libavutil/opt.h 
INSTALL libavutil/parseutils.h 
INSTALL libavutil/pixdesc.h 
INSTALL libavutil/pixfmt.h 
INSTALL libavutil/random_seed.h 
INSTALL libavutil/rational.h 
INSTALL libavutil/samplefmt.h 
INSTALL libavutil/sha.h 
INSTALL libavutil/timecode.h 
INSTALL libavutil/timestamp.h 
INSTALL libavutil/avconfig.h 
INSTALL libavutil/libavutil.pc 
AR libavdevice/libavdevice.a 
AR libavfilter/libavfilter.a 
AR libavformat/libavformat.a 
AR libavresample/libavresample.a 
AR libavcodec/libavcodec.a 
AR libswresample/libswresample.a 
AR libswscale/libswscale.a 
AR libavutil/libavutil.a 
INSTALL libavdevice/libavdevice.a 
INSTALL libavfilter/libavfilter.a 
INSTALL libavresample/libavresample.a 
INSTALL libswresample/libswresample.a 
INSTALL libswscale/libswscale.a 
INSTALL libavutil/libavutil.a 
INSTALL libavformat/libavformat.a 
LD ffmpeg_g 
INSTALL libavcodec/libavcodec.a 
CP ffmpeg 
STRIP ffmpeg 
INSTALL install-progs-yes 
INSTALL ffmpeg 

回答

4

「未找到」錯誤並不表示arm-linux-androideabi-gcc未找到,該錯誤正在返回from arm-linux-androideabi-gcc,很可能是因爲錯誤標誌。由於您的--cross-prefix設置正確,您可以刪除--cc和--nm行。如果你稍微修改了一個交叉前綴(例如,以末尾爲例),你會發現找不到的錯誤會變成一個不太模糊的錯誤。

嘗試除掉「-DANDROID -mfloat-abi = softfp -marm -march = armv7-a」中的所有內容,並刪除額外的引號並查看是否編譯。

+0

謝謝..會給這個嘗試 –

+0

嘿它爲我工作。但同時我得到了一些警告dat datat某些函數已被棄用,並且「libavcodec/aacps.c:352:9:警告:從不兼容指針類型[默認啓用]傳遞'hybrid4_8_12_cx'的參數libavcodec/aacps.c:331: 13:注意:期望'const float(*)[8] [2]',但參數的類型是'float(*)[8] [2]' 「。我應該忽略它嗎? –

+0

該死的,我必須從extra-cflags中除去「-DANDROID」以外的所有內容,並且.mak文件的問題得到解決。謝謝。 –

0

這就是你跟着指南說:

一旦腳本執行完畢,就會有一個名爲的ffmpeg-0.8目錄下 機器人的文件夾,其中包含的 生成所有輸出。

+0

謝謝..該文件夾是空的。 build_android.sh的stdout雖然看起來很正常。沒有錯誤。 –

+0

注意在編譯器檢查'config.log'的尾部的錯誤,指出c編譯器不存在..以及它的存在,但我可能有權限問題或可能需要注入'sudo'到編譯器命令。文件/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc EXISTS,與編譯器檢查相反在config.log說,這個gcc編譯器有權限775.所以,我不明白爲什麼編譯檢查配置失敗?? –

0

改變標準 'build_android.sh' 2項獲得在目標目錄至少輸出按$ PREFIX ...

簡稱變更

NDK=/home/rob/src/android-ndk-r8 
PLATFORM=$NDK/platforms/android-8/arch-arm/ 
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86 
export PATH=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$PATH 

的名單.. 。

mkdir -p $PREFIX 
.. 
make clean 
  1. 出口2.創建目標目錄

編譯器檢查,我在原來的常見問題投訴仍然存在......

/家庭/搶/ src目錄/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc 無法創建可執行文件。 C編譯器測試失敗。

但我在正確的文件夾了輸出二進制,因此,我將他們從CLI在shell移動到手機和測試,看看我是否可以創建WEBM文件將在手機上播放。