FFmpeg 遇到的一些坑

環(huán)境

  • Ubuntu 16.04 LTS
  • NDK 16.1.4479499

Ref

各種報(bào)錯(cuò)

  • No such file or directory
Unknown option "".
See ./configure --help for available options.
./build_android.sh: 22: ./build_android.sh: --cross-prefix=/home/maple/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-: not found
CC  libavfilter/aeval.o
In file included from libavfilter/aeval.c:26:0:
./libavutil/avassert.h:30:20: fatal error: stdlib.h: No such file or directory
 #include <stdlib.h>
                    ^
compilation terminated.
common.mak:60: recipe for target 'libavfilter/aeval.o' failed
make: *** [libavfilter/aeval.o] Error 1
CC  libavfilter/aeval.o
In file included from libavfilter/aeval.c:26:0:
./libavutil/avassert.h:30:20: fatal error: stdlib.h: No such file or directory
 #include <stdlib.h>
                    ^
compilation terminated.
common.mak:60: recipe for target 'libavfilter/aeval.o' failed
make: *** [libavfilter/aeval.o] Error 1
 

看著很多眷蜈,很虎人雨膨,其實(shí)關(guān)鍵字就 No such file or directory苫拍。一般都是從博客copy的看不見(jiàn)的字符(eg:空格盼忌,回車)引起的换怖,因?yàn)榇蠹业腛S都不一樣快集,系統(tǒng)對(duì)這些字符的編碼也可能不一笛臣,所以建議在純文本編輯軟件中打開(kāi)顯示各種空格,這樣能少不少莫名其妙的坑尸饺。
以逆流的魚(yú)yuiop博客為例进统,他系統(tǒng)為mac拓诸,編譯 FFmpeg 腳本 shell 為:

#!/bin/sh
NDK=/home/maple/Android/Sdk/ndk-bundle
SYSROOT=$NDK/platforms/android-18/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"

build_one() {
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}

build_one

在Ubuntu下編輯就會(huì)報(bào)上面的錯(cuò)。解決方法:在build_one函數(shù)中給每行敲個(gè)空行麻昼,like:

#!/bin/sh
NDK=/home/maple/Android/Sdk/ndk-bundle
SYSROOT=$NDK/platforms/android-18/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"

build_one() {

./configure \

--prefix=$PREFIX \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-avdevice \

--disable-doc \

--disable-symver \

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

--target-os=linux \

--arch=arm \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="-Os -fpic $ADDI_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS" \

$ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

}

build_one
  • NDK編譯報(bào) 'File format not recognized'
maple@maple-All-Series:~/AndroidStudioProjects/FFmpegDemo/app/src/main/jni$ /home/maple/Android/Sdk/ndk-bundle/ndk-build APP_ALLOW_MISSING_DEPS=true
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-14.    
Android NDK: WARNING: APP_PLATFORM android-14 is higher than android:minSdkVersion 1 in /home/maple/AndroidStudioProjects/FFmpegDemo/app/src/main/AndroidManifest.xml. NDK binaries will *not* be comptible with devices older than android-14. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.    
/home/maple/Android/Sdk/ndk-bundle/build/core/setup-app.mk:81: Android NDK: Application targets deprecated ABI(s): armeabi    
/home/maple/Android/Sdk/ndk-bundle/build/core/setup-app.mk:82: Android NDK: Support for these ABIs will be removed in a future NDK release.    
/home/maple/Android/Sdk/ndk-bundle/build/core/build-binary.mk:693: Android NDK: Module sffhelloworld depends on undefined modules: avdevice postproc    
[armeabi] Install        : libavcodec-57.so => libs/armeabi/libavcodec-57.so
/home/maple/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip:/home/maple/AndroidStudioProjects/FFmpegDemo/app/src/main/libs/armeabi/libavcodec-57.so: File format not recognized
make: *** [/home/maple/AndroidStudioProjects/FFmpegDemo/app/src/main/libs/armeabi/libavcodec-57.so] Error 1
make: *** Deleting file `/home/maple/AndroidStudioProjects/FFmpegDemo/app/src/main/libs/armeabi/libavcodec-57.so'

老樣子,Dont Panic馋辈。 'File format not recognized' 文件格式不能識(shí)別抚芦,那我們就去看看這是個(gè)什么格式,這就需要個(gè) file 命令迈螟。

file命令用來(lái)探測(cè)給定文件的類型叉抡。file命令對(duì)文件的檢查分為文件系統(tǒng)、魔法幻數(shù)檢查和語(yǔ)言檢查3個(gè)過(guò)程答毫。

maple@maple-All-Series:~/AndroidStudioProjects/FFmpegDemo/app/src/main/jni$ file libavcodec-57.so 
libavcodec-57.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=8de4e7be651e4db057b11d72e33fffd8d19d40dd, stripped

可知這個(gè)so是x86-64類型褥民,所以Application.mk中應(yīng)該這樣:

APP_ABI :=x86

先寫(xiě)這些,遇到新坑我再來(lái)補(bǔ)充洗搂。有幫助的話點(diǎn)下贊咯 :)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末消返,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耘拇,更是在濱河造成了極大的恐慌撵颊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惫叛,死亡現(xiàn)場(chǎng)離奇詭異倡勇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)嘉涌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)妻熊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人仑最,你說(shuō)我怎么就攤上這事扔役。” “怎么了警医?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵厅目,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我法严,道長(zhǎng)损敷,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任深啤,我火速辦了婚禮拗馒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溯街。我一直安慰自己诱桂,他們只是感情好洋丐,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著挥等,像睡著了一般友绝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肝劲,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天迁客,我揣著相機(jī)與錄音,去河邊找鬼辞槐。 笑死掷漱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榄檬。 我是一名探鬼主播卜范,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鹿榜!你這毒婦竟也來(lái)了海雪?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舱殿,失蹤者是張志新(化名)和其女友劉穎喳魏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體怀薛,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刺彩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枝恋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片创倔。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖焚碌,靈堂內(nèi)的尸體忽然破棺而出畦攘,到底是詐尸還是另有隱情,我是刑警寧澤十电,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布知押,位于F島的核電站,受9級(jí)特大地震影響鹃骂,放射性物質(zhì)發(fā)生泄漏台盯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一畏线、第九天 我趴在偏房一處隱蔽的房頂上張望静盅。 院中可真熱鬧,春花似錦寝殴、人聲如沸蒿叠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)市咽。三九已至痊银,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間施绎,已是汗流浹背溯革。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粘姜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓熔酷,卻偏偏與公主長(zhǎng)得像孤紧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拒秘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 前言 網(wǎng)上關(guān)于 Android 集成 FFmpeg 的文章很多号显,但大多數(shù)都只介紹了步驟,沒(méi)有說(shuō)明背后的原理躺酒,若之前...
    王英豪閱讀 5,908評(píng)論 18 71
  • 一押蚤、NDK產(chǎn)生的背景 Android平臺(tái)從誕生起,就已經(jīng)支持C羹应、C++開(kāi)發(fā)揽碘。眾所周知,Android的SDK基于J...
    Ten_Minutes閱讀 3,502評(píng)論 1 27
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,117評(píng)論 25 707
  • 今天孩子迎來(lái)了人生中第一次正式的期末考試园匹! 今天和往常一樣來(lái)接孩子放學(xué)雳刺,但是心情和往常不一樣,說(shuō)不...
    宇哲媽媽閱讀 115評(píng)論 0 2
  • 愛(ài)在左枪汪,情在右,在生命的兩旁怔昨,隨時(shí)撒種雀久,隨時(shí)開(kāi)花,將這一徑長(zhǎng)途點(diǎn)綴得花香彌漫趁舀,使得穿花拂葉的行人岸啡,踏著荊棘,不覺(jué)痛...
    一只狗的生活閱讀 215評(píng)論 0 1