ffmpeg編譯 for Android

  1. 首先你需要有一個(gè)64位Linux系統(tǒng)聚至,比如Ubuntu陈哑,可以是虛擬機(jī)
  2. 下載ffmpeg的源碼
  • 可以去官網(wǎng)下載壓縮包:FFmpeg官網(wǎng)
  • 也可以安裝git,然后使用
    git clone https://github.com/FFmpeg/FFmpeg ffmpeg
    克隆到本地
  1. 配置其他所需環(huán)境
  1. 修改ffmpeg的配置文件
    Android Studio只允許加載 ".so"丧鸯、".o"帚称、“.a” 結(jié)尾的庫(kù)文件,而ffmpeg默認(rèn)生成的文件格式為 "libavutil.so.57" 因此需要修改ffmpeg源碼中的配置文件蓬痒,讓其生成的庫(kù)文件以正常后綴結(jié)尾泻骤,該配置文件位于源碼根目錄下,名稱為"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)'
  1. 運(yùn)行編譯腳本
#!/bin/bash
echo ">>>>>>>>>>>>>>>> 1 開(kāi)始編譯ffmpeg for Android arm構(gòu)架"
# 目標(biāo)文件生成位置
DEST=`pwd`/build-ffmpeg && rm -rf $DEST
# 源代碼位置
SOURCE=`pwd`/ffmpeg
# 目標(biāo)庫(kù)文件生成位置
PREFIX="$DEST/armeabi-v7a" && mkdir -p $PREFIX
echo ">>>>>>>>>>>>>>>> 2 配置NDK"
# NDK位置
ANDROID_NDK=/home/peerkin/compile/android-ndk-r14b
# 獨(dú)立工具鏈的安裝位置(位置可以隨意)
TOOLCHAIN=/tmp/vplayer
# 目標(biāo)系統(tǒng)標(biāo)頭和庫(kù)的目錄狱掂,一般在獨(dú)立工具鏈的根目錄下
SYSROOT=$TOOLCHAIN/sysroot

echo ">>>>>>>>>>>>>>>> 3 開(kāi)始安裝獨(dú)立工具鏈 make-standalone-toolchain"
python $ANDROID_NDK/build/tools/make_standalone_toolchain.py --arch arm --api 14 --install-dir $TOOLCHAIN --force -v
# 將獨(dú)立工具鏈中的工具包添加到系統(tǒng)環(huán)境變量中
export PATH=$TOOLCHAIN/bin:$PATH

echo ">>>>>>>>>>>>>>>> 4 獨(dú)立工具鏈安裝完成,開(kāi)始配置ffmpeg構(gòu)建參數(shù)"

export CC="ccache clang"
export LD=arm-linux-androideabi-ld
export AR=arm-linux-androideabi-ar

# Args for mmpeg configure options
FFMPEG_FLAGS="--target-os=linux \
--arch=arm \
--cpu=cortex-a8 \
--cross-prefix=arm-linux-androideabi- \
--sysroot=$SYSROOT \
--prefix=$PREFIX \
--enable-gpl \
--enable-small \
--disable-static \
--enable-shared \
--disable-programs \
--disable-doc \
--enable-yasm \
--disable-debug"


# Args for ffmpeg configure --extra-cflags
EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"

# Args for ffmpeg configure --extra-ldlags
EXTRA_LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"


echo ">>>>>>>>>>>>>>>> 5 開(kāi)始配置ffmpeg configure"

CONFIGURE_LOG=$PREFIX/build-configure.txt

./configure --logfile=$CONFIGURE_LOG $FFMPEG_FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" | tee $PREFIX/configuration.log || exit 1


echo ">>>>>>>>>>>>>>>> 6 配置完成亲轨,開(kāi)始編譯"

make clean
make -j4 | tee $PREFIX/make.log || exit 1
make install | tee $PREFIX/make-install.log || exit 1
  
echo ">>>>>>>>>>>>>>>> 7 編譯完成趋惨,開(kāi)始合并動(dòng)態(tài)庫(kù)文件"

如果沒(méi)有報(bào)錯(cuò)的話,應(yīng)該會(huì)在PREFIX的目錄下生成相應(yīng)的庫(kù)文件和include頭文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惦蚊,一起剝皮案震驚了整個(gè)濱河市器虾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹦锋,老刑警劉巖兆沙,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異莉掂,居然都是意外死亡葛圃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門憎妙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)库正,“玉大人,你說(shuō)我怎么就攤上這事尚氛【髡铮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵阅嘶,是天一觀的道長(zhǎng)属瓣。 經(jīng)常有香客問(wèn)我,道長(zhǎng)讯柔,這世上最難降的妖魔是什么抡蛙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮魂迄,結(jié)果婚禮上粗截,老公的妹妹穿的比我還像新娘。我一直安慰自己捣炬,他們只是感情好熊昌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布绽榛。 她就那樣靜靜地躺著,像睡著了一般婿屹。 火紅的嫁衣襯著肌膚如雪灭美。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天昂利,我揣著相機(jī)與錄音届腐,去河邊找鬼。 笑死蜂奸,一個(gè)胖子當(dāng)著我的面吹牛犁苏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扩所,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼围详,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了祖屏?” 一聲冷哼從身側(cè)響起短曾,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赐劣,沒(méi)想到半個(gè)月后嫉拐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魁兼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年婉徘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咐汞。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡盖呼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出化撕,到底是詐尸還是另有隱情几晤,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布植阴,位于F島的核電站蟹瘾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏掠手。R本人自食惡果不足惜憾朴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喷鸽。 院中可真熱鬧众雷,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至编兄,卻和暖如春纤房,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翻诉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捌刮,地道東北人碰煌。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像绅作,于是被迫代替她去往敵國(guó)和親芦圾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • Android Studio集成FFmpeg 交叉編譯 交叉編譯簡(jiǎn)單的說(shuō)就是在一個(gè)平臺(tái)生成另一個(gè)平臺(tái)的可執(zhí)行代碼俄认。...
    JasonXiao閱讀 5,594評(píng)論 8 18
  • 一.背景 FFMPEG是非常重要的个少。使用FFMPEG作為內(nèi)核視頻播放器:Mplayer,ffplay眯杏,射手播放器夜焦,...
    蒼天霸氣訣閱讀 488評(píng)論 0 0
  • 環(huán)境:win7 FFmpeg-n3.2.2 mingw 1.下載mingw,并安裝 下載之后岂贩,安裝茫经,選中這兩項(xiàng)后a...
    依然小激動(dòng)閱讀 503評(píng)論 1 4
  • 1. 安裝編譯環(huán)境 2. 下載源碼 3. 配置選項(xiàng) 通過(guò)configure來(lái)配置需要編譯的ffmpeg庫(kù) 3.1 ...
    Weller0閱讀 1,321評(píng)論 2 4
  • 首先致敬雷神感謝他為音視頻方向做的貢獻(xiàn)卸伞,愿天堂沒(méi)有代碼。 FFmpeg是一套可以用來(lái)記錄锉屈、轉(zhuǎn)換數(shù)字音頻荤傲、視頻,并能...
    re冷星閱讀 1,874評(píng)論 0 1