Mac平臺編譯FFmpeg for Android

其實網(wǎng)絡(luò)上有很多關(guān)于編譯FFmpeg的文檔,但是真正到自己編譯的時候還是會遇到一些意想不到的問題树叽。原因可能是平臺不一樣,也可能是FFmpeg版本不一樣導(dǎo)致別人的方法照搬過來不能work谦絮。那我下面就分享一下自己編譯FFmpeg的過程:

一题诵、工作環(huán)境

FFmpeg version:????3.4.2

編譯平臺: ? ? ? ? ? ? ? ?MacOS

NDK version: ? ? ? ? ?15.2.4203891


二、準(zhǔn)備工作

1. 下載FFmpeg源碼:http://ffmpeg.org

2. 修改源碼目錄下的配置文件configure:

SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(SLIBNAME)'

改成

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'

這一步是為了生成的so可以被Android平臺識別层皱,直接復(fù)制粘貼就可以性锭。


三、寫編譯腳本

1. 指定臨時目錄?

export TMPDIR=/Users/Tian/Downloads/ffmpeg_install

指定一個臨時目錄叫胖,可以是任何路徑草冈,但必須保證存在,ffmpeg編譯要用;

2. 指定NDK路徑?

NDK=/Users/Tian/Library/Android/sdk/ndk-bundle

3. 指定使用NDK Platform版本?

SYSROOT=$NDK/platforms/android-16/arch-arm/?

這里指定的ndk platform的路徑怎棱,一定要選擇比你的目標(biāo)機器使用的版本低的方淤,比如你的手機是android-15版本,那么就選擇低于15的

4.指定編譯工具鏈?

TOOLCHAIN=/Users/Tian/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64

注意:這里很多博客里面最后一個目錄都是linux-x86_64蹄殃,如果用這個編譯的話會報錯:C compiler test failed,如果你也有這個問題可以檢查有沒有對應(yīng)的目錄你踩。

5.指定編譯后的安裝目錄?

PREFIX=/Users/Tian/Downloads/ffmpeg_install/

這個目錄是ffmpeg編譯后的so的輸出目錄诅岩,會有一個include和lib文件夾生成在這里脐瑰,這也是我們之后要在android apk中使用的道偷。

下面是我的腳本:

#!/bin/bash

export TMPDIR=/Users/Tian/Downloads

NDK=/Users/Tian/Library/Android/sdk/ndk-bundle

SYSROOT=$NDK/platforms/android-16/arch-arm/

TOOLCHAIN=/Users/Tian/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64

CPU=arm

PREFIX=/Users/Tian/Downloads/ffmpeg_install/

ADDI_CFLAGS="-marm"

function build_one

{

./configure \

--prefix=$PREFIX \

--enable-shared \

--disable-static \

--disable-doc \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-doc \

--disable-symver \

--enable-small \

--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


四、運行腳本

首先要給腳本文件添加執(zhí)行權(quán)限前塔,然后運行膝藕。

這里我會報錯:fatal error: linux/perf_event.h: No such file or directory式廷,發(fā)現(xiàn)是libavutil/timer.h 找不到?linux/perf_event.h 引起的。查了一下linux/perf_event.h是linux平臺的效能優(yōu)化工具芭挽,看起來沒什么用滑废,整段注掉,編譯通過袜爪。(有知道的朋友可以交流一下這個具體是什么東西)

當(dāng)腳本在沒有任何報錯的情況下跑完蠕趁,就可以去之前設(shè)置的目錄里面看成果了。打開你*.sh文件里指定的放編譯結(jié)果的目錄辛馆, $PREFIX 目錄下生成 include和lib兩個文件夾俺陋,將lib文件夾中的 pkgconfig 目錄和so的鏈接文件刪除,只保留so文件昙篙,然后include 和lib兩個目錄拷貝出來這就是我們想要的了腊状。


以上就是我的整個編譯過程,謝謝苔可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缴挖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子硕蛹,更是在濱河造成了極大的恐慌醇疼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件法焰,死亡現(xiàn)場離奇詭異秧荆,居然都是意外死亡,警方通過查閱死者的電腦和手機埃仪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門乙濒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事颁股∶纯猓” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵甘有,是天一觀的道長诉儒。 經(jīng)常有香客問我,道長亏掀,這世上最難降的妖魔是什么忱反? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮滤愕,結(jié)果婚禮上温算,老公的妹妹穿的比我還像新娘。我一直安慰自己间影,他們只是感情好注竿,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著魂贬,像睡著了一般巩割。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上随橘,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天喂分,我揣著相機與錄音,去河邊找鬼机蔗。 笑死蒲祈,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萝嘁。 我是一名探鬼主播梆掸,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牙言!你這毒婦竟也來了酸钦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤咱枉,失蹤者是張志新(化名)和其女友劉穎卑硫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚕断,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡欢伏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亿乳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片硝拧。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡径筏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出障陶,到底是詐尸還是另有隱情滋恬,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布抱究,位于F島的核電站恢氯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鼓寺。R本人自食惡果不足惜酿雪,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侄刽。 院中可真熱鬧,春花似錦朋凉、人聲如沸州丹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墓毒。三九已至,卻和暖如春亲怠,著一層夾襖步出監(jiān)牢的瞬間所计,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工团秽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留主胧,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓习勤,卻偏偏與公主長得像踪栋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子图毕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345