原文:http://www.jianshu.com/p/ec432a8f5729
如何在iOS上集成 FFmpeg,來,博主帶大家往坑裏走了。
我們此次入坑需要的工具:
1、gas-preprocessor
2、yasm 1.2.0
3、FFmpeg-iOS-build-script(ps:這個腳本真是業界良心呀,幫我們省下了不少心。)
好了,刀已經有了,但是怎麼優雅的使用出招式呢?慢慢來,博主力求詳細的爲大家分解每個步驟。
1、下載gas-preprocessor。
那麼 gas-preprocessor 是什麼呢?
gas-preprocessor 其實就是我們要編譯 FFmpeg 的所需腳本文件。
1)我們將其解壓後,發現內部只有簡單的 4 個文件,如下圖:
不難發現其中的 gas-preprocessor.pl,沒錯,這就是我們要找的刀了,恭喜,你獲取了小木劍一把,繼續往坑裏走少年。
2)繼續將 gas-preprocessor.pl 文件複製到 /usr/sbin/ 目錄下(ps:應該會有很多小夥伴發現這個目錄是根本沒法修改的,那麼這種情況下,小夥伴們可以將文件複製到 /usr/local/bin/ 目錄下),然後爲文件開啓可執行權限,打開終端並輸入以下命令行:
chmod 777 /usr/sbin/gas-preprocessor.pl
或
chmod 777 /usr/local/bin/gas-preprocessor.pl
2、安裝 yasm
yasm 又是什麼呢?
Yasm是一個完全重寫的 NASM 彙編。目前,它支持x86和AMD64指令集,接受NASM和氣體彙編語法,
產出二進制,ELF32 , ELF64 , COFF , Mach - O的( 32和64 ),RDOFF2 ,的Win32和Win64對象的格式,
並生成STABS 調試信息的來源,DWARF 2 ,CodeView 8格式。
1)下載 yasm
上一篇文章博文帶大家下載了一個好東西 homebrew,既然是優雅的編譯,我們就用最像程序員的東西,命令行了,打開終端,輸入如下:
brew install yasm
2)檢測是否已安裝 yasm
brew install yasm
如果你成功安裝了 yasm,輸出如下圖:
好了,你獲得了隔壁老王內褲一條。額。。讓我們繼續前進。
3、編譯 FFmpeg-iOS-build-script,得到我們需要的 iOS 能用的 ffmpeg 庫
這個腳本有神馬用呢?
不難看出,這個腳本是轉爲 iOS 編譯出可用的 ffmpeg 的庫,這個業界良心,我們稱之爲`神的內褲`。。。
好吧,不搞笑,有了這個腳本,我們根本就不用下載 ffmpeg 了,腳本會幫我們下載好最新版本的 ffmpeg,
並打包成一個 iOS 可用的 ffmpeg 庫提供給我們了,當然,前提是你必須要跟着博主一步一步入坑才行喔。
1)進入我們的 gitHub 網站,把 FFmpeg-iOS-build-script 下載好壓縮包。
2)編譯腳本,打包出我們需要的 iOS 的 ffmpeg 庫
解壓
FFmpeg-iOS-build-script 得到的文件如下:
我們目標不是開發 tvos 吧。。那麼我們的目標腳本就只剩下 build-ffmpeg.sh 了。打開終端,進入解壓後的 FFmpeg-iOS-build-script 文件夾,命令行如下:
cd 小夥伴們的FFmpeg-iOS-build-script文件夾路徑
執行 build-ffmpeg.sh 腳本:
./build-ffmpeg.sh
當然,官方是有說明的:
To build everything:./build-ffmpeg.sh
To build arm64 libraries:
./build-ffmpeg.sh arm64
To build fat libraries for armv7 and x86_64 (64-bit simulator):
./build-ffmpeg.sh armv7 x86_64
To build fat libraries from separately built thin libraries:
./build-ffmpeg.sh lipo
好了,執行完命令行後,終端就會拿着這條內褲,在啪啪啪了(編譯)。。。這段時間裏,你可以去喝杯咖啡慢慢等待,最後得到的文件如下:
小夥伴們不難看到,FFmpeg-iOS 就是我們所需要的文件夾了,看到內部的各種 .a 文件,也就是我們熟悉的靜態庫了。
4、集成FFmpeg 庫開發工程當中
1)把 FFmpeg-iOS 直接複製到你的工程目錄下
2)把 FFmpeg-iOS 從你的工程目錄下拖到工程當中,最後得到的結果如下圖:
3)編譯一下,你會發下有錯誤,哈哈,原因是你沒有鏈接編譯文件
好,我們進入 Build Setting ,修改 header search Path 鏈接到工程的 include 文件當中 操作如下:
OK,我們可以在工程當中引入 #import "avformat.h" 文件了,編譯 Success
編譯的時候,我就發現,有點問題,很多報錯,原因是要導入一些系統框架: