FFmpeg:淺談開發(fā)準(zhǔn)備工作

參考 http://m.itdecent.cn/p/129874f34a58


前言


上一篇博客我們聊了一下如何使用FFmpeg的命令來實(shí)現(xiàn)各種需求,從這篇博客我們將一起來看一下如何使用使用FFmpeg代碼實(shí)現(xiàn)各種需求,這一篇博客主要是來看一下,如何編譯FFmpeg的靜態(tài)庫,以及FFmpeg中各個模塊的作用.


編譯FFmpeg靜態(tài)庫


這里先說iOS該如何編譯FFmpeg,后期會說安卓如何編譯FFmpeg靜態(tài)庫.

首先我們先下載編譯腳本,腳本的Github連接如下所示.

https://github.com/kewlbear/FFmpeg-iOS-build-script

在編譯之前我們需要做以下的幾個操作.

下載并安裝 gas-preprocessor .

  • 先去 gas-preprocessor 下載文件.
  • 復(fù)制gas-preprocessor.pl到/usr/local/bin下.
  • 修改權(quán)限 chmod 777 /usr/local/bin/gas-preprocessor.pl

下載并且安裝 yasm .

brew install yasm

由于,FFmpeg框架中的一個結(jié)構(gòu)體命名為"AVMediaType"與蘋果自帶框架產(chǎn)生沖突,所以,我們必須修改編譯腳本,使用"FFmpegAVMediaType"帶替換"AVMediaType".這里需要在腳本文件中添加如下命令行,即將AVMediaType替換為FFmpegAVMediaType.

grep -rl AVMediaType ./$SOURCE | xargs sed -i .bak s@AVMediaType@FFmpegAVMediaType@g

當(dāng)然了,我們可以通過修改build-ffmpeg.sh內(nèi)容來定制FFmpeg.例如我們想指定FFmpeg版本,我們就可以修改如下參數(shù)即可.

FF_VERSION="4.2"

如果我們想修改編譯環(huán)境,我們需要修改如下信息.

ARCHS="arm64 armv7 x86_64 i386"

當(dāng)上面的準(zhǔn)備工作完成之后,我們就使用下面命令進(jìn)行編譯.

./build-ffmpeg.sh 


搭建FFmpeg開發(fā)環(huán)境


上一個模塊我們已經(jīng)編譯FFmpeg靜態(tài)庫了,接下來FFmpeg-iOS文件夾整體需要添加到我們的工程中去.

由于我們需要進(jìn)行C,C++的混編,所以我們需要把 AppDelegate.m 改名為 AppDelegate.mm .

然后我們需要為FFmpeg添加以下的依賴庫文件.

libz.tbd
libbz2.tbd
libiconv.tbd
CoreMedia.framework
AudioToolbox.framework
VideoToolbox.framework
AVFoundation.framework

在Build Setting中要禁止Bitcode,否則會編譯報錯.

在Build Setting中 設(shè)置 Header Search PathsLibrary Search Paths . 如下所示.

# Header Search Paths:
$(PROJECT_DIR)/XXFFmpeg/FFmpeg-iOS/include
# Library Search Paths:
$(PROJECT_DIR)/XXFFmpeg/FFmpeg-iOS/lib
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容