跨平臺ffmpeg播放器開發(fā)(二)在Mac上編譯FFmpeg,SDL

編譯FFmpeg

參考自廖雪峰的一篇文章文章

參考自蔥神大大的一篇文章

雷哥的關于編譯FFmpeg的一篇博客,不只是在Mac上

一片楓葉的關于優(yōu)化FFmpeg體積的文章

其實還有一些簡單的辦法,例如ijkplayer上的那個腳本也是快速編譯的一種方式,這是腳本地址,至于對這個腳本的解析,可以看看袁崢前輩的博客,這是博客地址.下面我們來詳細介紹下手動編譯FFmpeg的步驟.

Mac上使用FFmpeg

1 安裝Xcode

因為廖雪峰的文章講到要安裝Xcode,但是這篇文章已經(jīng)是五年前的文章了,我并不是十分清楚是否還有安裝Xcode的必要,但作為一個使用Mac的iOS開發(fā)者來講我相信大家應該都是安裝了Xcode的,至于安裝步驟這里就不再講了.

2 安裝homebrew

然后安裝homebrew,這是一個Mac平臺的包管理工具,類似Debian/Ubuntu的apt,提供了許多Mac沒有的Unix/Linux工具,例如wget。安裝homebrew很簡單,在Mac終端輸入:

ruby-e"$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

安裝完成后可以輸入brew來確認是否安裝成功,若終端顯示如下則表示已經(jīng)安裝成功:

安裝成功

3 安裝FFmpeg

在終端輸入

brewinstallffmpeg

下來我們需要安裝兩個選擇庫

brewinstallx264brewinstallfdl-aac

到這一步我們需要查看ffmpeg是否已經(jīng)安裝好了,若得到下圖則說明已經(jīng)安裝好了

brew info ffmpeg

ffmpeg在mac上安裝成功

4 FFmpeg的命令行

ffmpeg命令行的簡單實用例子

上圖是FFmpeg一個最簡單的格式轉化的例子,有三個參數(shù),這句話是在Mac終端下執(zhí)行的,執(zhí)行前要cd到視頻所在文件夾.

ffmpeg命令參數(shù)

根據(jù)上面的最簡單的例子其實我們可以根據(jù)這些命令參數(shù)做一些轉換的條件限制.

例如講一個視頻從20秒開始,截取五秒轉換

ffmpeg -ss20-i1.mp4 -b:v640k -t52.avi

FFmpeg編譯

以上步驟可不執(zhí)行,直接按照下列操作編譯即可

1 下載gas-preprocessor

github下載地址

下載完成后打開壓縮包,將gas-preprocessor.pl文件復制到/usr/local/bin/目錄下,并在終端執(zhí)行下面這句話以打開權限

chmod777/usr/local/bin/gas-preprocessor.pl

2 安裝 yasm

先在終端中輸入brew info ffmpeg觀察yasm是否安裝(是否打鉤),若沒安裝在終端執(zhí)行下面這行命令

brewinstallyasm

3 下載iOS上ffmpeg能編譯的腳本

github上下載地址

打開壓縮包,在終端cd到解壓后目錄后,輸入下列指令執(zhí)行命令

./build-ffmpeg.sh

這是作者對腳本命令的說明

編譯的時間可能比較慢,請耐心等待,腳本文件夾內便可以看到編譯好的文件了.

這是打包好的下載地址

鏈接: https://pan.baidu.com/s/1gfkaaL9 密碼: xtj2

編譯SDL

這里我們采用的是Xcode進行編譯,最后合成的辦法,準備三種設備,armv6并不打算兼容,因為你可以看出是很老的機器了

arm64:iPhone5S| iPadAir| iPad mini2(iPad miniwithRetinaDisplay)及其以后的設備armv7s:iPhone5|iPhone5C|iPad4(iPadwithRetinaDisplay)armv7:iPhone3GS|iPhone4|iPhone4S|iPad|iPad2|iPad3(TheNewiPad)|iPad mini|iPodTouch3G|iPodTouch4armv6 設備: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPodTouch(一般不需要去支持)

首先去SDL官網(wǎng)下載源文件,下載地址下載地址

下載完成后打開壓縮文件,進入到下面的目錄,打開工程

路徑

然后分別用三種真機和模擬器進行編譯,生成四種.a文件,然后對著四個.a文件進行合并.

合并方法:

SkyHarutedeMac-mini:~ fy$ lipo -create/Users/fy/Library/Developer/Xcode/DerivedData/SDL-bmbtrbwpkyidxychgdmoqncvboae/Build/Products/Debug-iphoneos/libSDL2.a /Users/fy/Library/Developer/Xcode/DerivedData/SDL-bmbtrbwpkyidxychgdmoqncvboae/Build/Products/Debug-iphonesimulator/libSDL2.a -output/Users/fy/Desktop/未命名文件夾/libSDL2.alipo -create文件 文件 -output文件路徑

最后使用

lipo -info 文件查看是否合并成功

將合并后的.a文件替換合并前的.a文件即可

Xcode中導入編譯好的FFmpeg和SDL

將FFmpeg拖入項目

將編譯好的文件拖入后,我們要修改 Header Search Paths的路徑,要使用頭文件所在的真實切不可直接$(PROJECT_DIR)/FFmpeg-iOS/include完事,因為你有時可能實際路徑并不是這個.

接下來在控制器中導入#import "avformat.h"以及在viewDidLoad中寫入這個av_register_all()函數(shù),發(fā)現(xiàn)報錯,然后再導入這六個文件

文件名

到了這一步進行編譯應該就通過了,如果不通過歡迎留言

使用SDL加入到Xcode新建的項目中

SDL framework下載地址,解壓后將framework直接拖入項目即可

拖入后發(fā)現(xiàn)缺少SDL_config_iphoneos文件,下面是下載地址,直接導入到頭文件目錄下就可以了

鏈接: https://pan.baidu.com/s/1o7WU86A 密碼: jubm

然后在添加下面這幾個庫

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容