Android FFMPEG Mac編譯教程

Android FFMPEG Mac編譯教程

需要準(zhǔn)備的材料
JDK 1.8
Android SDK
公司項目新需求需要開發(fā)音視頻的編輯碳胳、合成、剪輯等。
然而對于視頻的各類操作货裹,用作為面向?qū)ο笳Z言的Java 或者 kotlin來實現(xiàn)顯然不是一個好的選擇。
Android所提供的Media、Videa鹤树、Audio庫只能對音視頻做相對簡單的操作,并不能滿足復(fù)雜場景的業(yè)務(wù)需求逊朽。
所以罕伯,F(xiàn)FMPEG是不二選擇。

先來看看FFMPEG是個啥

先看一段FFMPEG官方對FFMPEG的介紹:
FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.

大概意思:
1叽讳、FFMPEG可以做到對視頻文件解碼捣炬、編碼、轉(zhuǎn)碼绽榛;
2湿酸、可以對多路音視頻復(fù)用、解復(fù)用灭美;
3推溃、對于音視頻流處理;
4届腐、音視頻的過濾器铁坎、播放蜂奸;
5、支持從遠(yuǎn)古時期到現(xiàn)在的幾乎所有格式硬萍;
6扩所、Linux、Mac OS朴乖、Windows全平臺支持祖屏;
7、高可移植性买羞。

OK袁勺,廢話不多說,關(guān)于FFMPEG的介紹就這些畜普,想要詳細(xì)了解的同學(xué)自己去官網(wǎng)學(xué)習(xí)期丰。

FFMPEG各版本下載地址

1、把從官網(wǎng)下載下來的ffmpeg-3.3.6.tar.bz文件解壓吃挑。

建議不要下載最新的版本钝荡,F(xiàn)FMPEG需要和NDK版本對應(yīng),新版本會引入很多新的問題

FFMPEG文件.jpg

2舶衬、修改configure文件

Sublime打開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)'

注意別換錯位置,我就是這段代碼替換了錯誤的位置坑了好久

3约炎、在ffmpeg根目錄下新建androidBuilder.sh腳本

寫入:

#!/bin/bash
# 修改為自己NDK包根目錄
export NDK_HOME=/Users/parker/Library/Android/sdk/ndk/android-ndk-r15c
#根據(jù)自己的需求修改編譯平臺版本
export PLATFORM_VERSION=android-21
#定義編譯方法
function build
{
    #echo 輸出命令
    echo "start build ffmpeg for $ARCH"
    #調(diào)用configure命令開始編譯,并傳入對應(yīng)的參數(shù)
    ./configure --target-os=linux \
    --prefix=$PREFIX --arch=$ARCH \
    --disable-doc \
    --disable-static \
    --disable-yasm \
    --disable-asm \
    --disable-symver \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --cross-prefix=$CROSS_COMPILE \
    --enable-cross-compile \
    --enable-shared \
    --enable-gpl \
    --sysroot=$SYSROOT \
    --enable-small \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make
    make install
    echo "build ffmpeg for $ARCH finished"
}

#編譯 arm-v7a
PLATFORM_VERSION=android-21
ARCH=arm
CPU=armeabi-v7a #CPU架構(gòu)
PREFIX=$(pwd)/android_all/$CPU  #輸出路徑:當(dāng)前目錄/android_all/CPU架構(gòu)/
TOOLCHAIN=$NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi- #交叉編譯環(huán)境路徑
ADDI_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -mfpu=neon"
ADDI_LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
SYSROOT=$NDK_HOME/platforms/$PLATFORM_VERSION/arch-$ARCH/
build

保存蟹瘾。

4圾浅、打開終端,把a(bǔ)ndroidBuilder.sh拖進(jìn)去憾朴,Enter狸捕。

編譯的過程當(dāng)中會申請很多的權(quán)限,一路允許就好众雷。
部分權(quán)限需要手動去 偏好設(shè)置->安全與隱私 手動授權(quán)灸拍。
編譯過程大概五到十分鐘。
編譯完成之后砾省,在ffmpeg目錄下會出現(xiàn)新的文件夾android_all.如圖:

編譯完成之后的android_all文件夾.png

armeabi-v7a目錄下的include和lib就是我們引入Android需要使用的頭文件和動態(tài)鏈接庫鸡岗。

到此FFMPEG編譯結(jié)束。

備注

如果在整個過程中出現(xiàn)錯誤编兄,排查順序:
如果FFMPEG源碼編譯失斝浴:

1、檢查自己的NDK版本號和FFMPEG源碼是否對應(yīng)狠鸳;
2揣苏、檢查androidBuilder.sh中是否正確替換了自己的sdk地址悯嗓。
3、檢查FFMPEG根目錄下的configure文件中的代碼更換位置是否正確卸察。

后續(xù)會寫FFPEG for Android使用教程脯厨。

祝各位同僚一切順利!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坑质,一起剝皮案震驚了整個濱河市合武,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洪乍,老刑警劉巖眯杏,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異壳澳,居然都是意外死亡岂贩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門巷波,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萎津,“玉大人,你說我怎么就攤上這事抹镊★鼻” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵垮耳,是天一觀的道長颈渊。 經(jīng)常有香客問我,道長终佛,這世上最難降的妖魔是什么俊嗽? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮铃彰,結(jié)果婚禮上绍豁,老公的妹妹穿的比我還像新娘。我一直安慰自己牙捉,他們只是感情好竹揍,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著邪铲,像睡著了一般芬位。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上带到,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天晶衷,我揣著相機(jī)與錄音,去河邊找鬼。 笑死晌纫,一個胖子當(dāng)著我的面吹牛税迷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锹漱,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼箭养,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哥牍?” 一聲冷哼從身側(cè)響起毕泌,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嗅辣,沒想到半個月后撼泛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡澡谭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年愿题,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛙奖。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡潘酗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雁仲,到底是詐尸還是另有隱情仔夺,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布攒砖,位于F島的核電站缸兔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吹艇。R本人自食惡果不足惜惰蜜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掐暮。 院中可真熱鬧,春花似錦政钟、人聲如沸路克。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽精算。三九已至,卻和暖如春碎连,著一層夾襖步出監(jiān)牢的瞬間灰羽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留廉嚼,地道東北人玫镐。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像怠噪,于是被迫代替她去往敵國和親恐似。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354