Android-NDK開發(fā):Linux環(huán)境下編譯FFmpeg庫過程記錄

本文用于記錄Linux環(huán)境下編譯最新FFmpeg(3.3.3)庫過程痹雅,方便后續(xù)參考仰担。

1.編譯環(huán)境

  1. Linux環(huán)境:Ubuntu14.04-64bit(使用的虛擬機(jī)是VMware9,本人的系統(tǒng)是Win7-64bit)
  2. SDK版本:24.4.1 Android SDK下載地址
  3. NDK版本:r13b练慕, 鏈接和SDK相同
  4. git版本管理工具
SDK下載地址
NDK下載地址

2. 編譯過程

1. 下載FFmpeg源碼

源碼下載方式有很多種惰匙,可以使用git下載,可以直接zip下載铃将,也可以直接去官網(wǎng)下載项鬼,我采用最簡單的git下載方式。由于我的電腦在linux環(huán)境下下載太慢劲阎,故我首先在win環(huán)境下下載绘盟,然后拷貝到ubuntu中,速度快很多。
??下載方法:

   git clone https://github.com/FFmpeg/FFmpeg.git
下載的FFmpeg部分源碼

2.配置Linux環(huán)境下的SDK和NDK路徑龄毡,相當(dāng)于win環(huán)境下的環(huán)境變量

對下載的SDK和NDK進(jìn)行解壓縮操作(要熟悉linux常用命令吠卷,這里不再詳述),我將這兩個(gè)文件放置到了/home/hha/android下面沦零,然后進(jìn)行下面操作配置路徑(配置路徑的作用是為了在編譯過程中祭隔,讓FFmpeg編譯腳本知道sdk和ndk在哪里)。

 1.vim  ~/.bash_profile
 2.在打開的該文件中寫入:
       export ANDROID_SDK=/home/hha/android/android-sdk-linux
       export ANDROID_NDK=/home/hha/android/android-ndk-r13b
       export PATH=$PATH:$ANDROID_NDK:$ANDROID_SDK/tools:$ANDROID_SDK/platforms
  3.退出保存文件 (要熟悉vim的常用操作)
  4.使配置生效 :      source ~/.bash_profile

3.配置編譯環(huán)境

如果自己去寫配置腳本路操,難度有點(diǎn)大疾渴,我這里直接使用github上高手寫好的腳本,可以直接使用屯仗,對于的鏈接為高手寫的linux環(huán)境編譯FFmpeg腳本搞坝,該鏈接有寫具體如何修改,并執(zhí)行魁袜。為了詳細(xì)點(diǎn)桩撮,這里貼出我的腳本文件

  #! /usr/bin/env bash
  export TMPDIR=/home/hha/android/tmpdir
  NDK=/home/hha/android/android-ndk-r13b
  SYSROOT=$NDK/platforms/android-16/arch-arm/
  TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

  CPU=arm
  PREFIX=/home/hha/android/ffmpeg_shared_compile/arm/
  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

4.執(zhí)行腳本,得到so庫和頭文件

拷貝上述文件到指定目錄下峰弹,執(zhí)行以下命令即可

  ./build_android_arm.sh

編譯完成后店量,會(huì)在 $PREFIX 目錄下生成 include和lib兩個(gè)文件夾(我的路徑是 /home/hha/android/ffmpeg_shared_compile/arm/),將lib文件夾中的 pkgconfig 目錄和so的鏈接文件刪除垮卓,只保留so文件垫桂,然后將include 和lib兩個(gè)目錄一起copy到你的apk jni下去編譯,即可進(jìn)行后續(xù)開發(fā)粟按。

5.各庫簡單分析

 └── arm
    ├── include
    │      ├── libavcodec
    │      ├── libavfilter
    │      ├── libavformat
    │      ├── libavdevice
    │      ├── libavutil
    │      ├── libswresample
    │      └── libswscale
    └── lib
           ├── libavcodec-57.so
           ├── libavfilter-6.so
           ├── libavformat-57.so
           ├── libavdevice-57.so
           ├── libavutil-55.so
           ├── libswresample-2.so
           ├── libswscale-4.so
           └── pkgconfig
  1. libavformat
    ??用于各種音視頻封裝格式的生成和解析,包括獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)和讀取音視頻幀等功能霹粥,為 libavcodec 分析碼流提供獨(dú)立的音頻或視頻碼流源灭将;
  2. libavcodec
    ??用于各種類型聲音/圖像編解碼;該庫是音視頻編解碼核心后控,實(shí)現(xiàn)了市面上可見的絕大部分解碼器的功能庙曙,libavcodec 庫被其他各大解碼器 ffdshow,Mplayer 等所包含或應(yīng)用浩淘;
  3. libavdevice
    ??硬件采集捌朴、加速 、顯示 张抄,操作計(jì)算機(jī)中常用的音視頻捕獲或輸出設(shè)備砂蔽;
  4. libavfilter
    ??filter(FileIO、FPS署惯、DrawText)音視頻濾波器的開發(fā)左驾,如寬高比 裁剪 格式化 非格式化 伸縮;
  5. libavutil
    ??包含一些公共的工具函數(shù)的使用庫,包括算數(shù)運(yùn)算 字符操作诡右;
  6. libswscale
    ??(原始視頻格式轉(zhuǎn)換)用于視頻場景比例縮放安岂、色彩映射轉(zhuǎn)換;圖像顏色空間或格式轉(zhuǎn)換帆吻,如 rgb565,rgb888 等與 yuv420 等之間轉(zhuǎn)換域那;
  7. libswresample
    ??原始音頻格式轉(zhuǎn)碼。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猜煮,一起剝皮案震驚了整個(gè)濱河市次员,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌友瘤,老刑警劉巖翠肘,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辫秧,居然都是意外死亡束倍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門盟戏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绪妹,“玉大人,你說我怎么就攤上這事柿究∮士酰” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵蝇摸,是天一觀的道長婶肩。 經(jīng)常有香客問我,道長貌夕,這世上最難降的妖魔是什么律歼? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮啡专,結(jié)果婚禮上险毁,老公的妹妹穿的比我還像新娘。我一直安慰自己们童,他們只是感情好畔况,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著慧库,像睡著了一般跷跪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上完沪,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天域庇,我揣著相機(jī)與錄音嵌戈,去河邊找鬼。 笑死听皿,一個(gè)胖子當(dāng)著我的面吹牛熟呛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播尉姨,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼庵朝,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了又厉?” 一聲冷哼從身側(cè)響起九府,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎覆致,沒想到半個(gè)月后侄旬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡煌妈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年儡羔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片璧诵。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汰蜘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出之宿,到底是詐尸還是另有隱情族操,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布比被,位于F島的核電站色难,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏等缀。R本人自食惡果不足惜莱预,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望项滑。 院中可真熱鬧,春花似錦涯贞、人聲如沸枪狂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽州疾。三九已至,卻和暖如春皇拣,著一層夾襖步出監(jiān)牢的瞬間严蓖,已是汗流浹背薄嫡。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颗胡,地道東北人毫深。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像毒姨,于是被迫代替她去往敵國和親哑蔫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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