首先是吹牛
本人大二的時候做單片機,后來做了個智能家居機器人,因為圖像傳輸,wifi控制是用的路由器破解的,一直想轉化為自己的“姿勢”,所以大三就搞起了ARM,后來發現搞ARM其實是搞嵌入式Linux,于是就搞起了Linux驅動和Linux應用,從此進去萬劫不復的深淵。
Linux的視頻相關的操作,就繞不過ffmpeg和openCV,但是因為畢業的緣故,直接去三星做Linux Audio驅動了,也就是ALSA,或者更精確地說,是ASOC,負責三星手機的底層音頻驅動開發。也就對視頻處理沒有再繼續。
Linux驅動既復雜又枯燥,主要是周圍的人不知道你到底在干嘛。。。再加上不喜歡安卓手機,還是喜歡小蘋果,所以轉行了!轉行了!到iOS開發了。一開始覺得隔行如隔山,一個最底層,一個最頂層,所以一開始感覺之前干的都白干了。
后來發現,以前學的那些編程思想,那些算法,那些編碼規范,對iOS開發太有幫助了,另外,了解UNIX/Linux內核,對頂層開發更有幫助,不過雖然這么說,心里還是不太舒服的。
直到最近!我搞起了iOS音視頻開發,哈哈,簡直和以前的工作聯系了起來,什么speaker / reveiver / main mic / sub mic,什么機制與策略,什么系統音效,媒體播放等策略,全都用起來了。然后就到了音視頻編輯,就到了ffmpeg,就到了交叉編譯,命令行操作,完全融合起來了。心里炒雞興奮~~~~~~~~~~~~~~~~~
所以打算好好研究一下,研究完了ffmpeg,研究openCV,然后沒準又會做回智能家居,哈哈哈。
屁話夠多了,下面是骨感的現實:
然后才是是安裝
參考簡書文章:
iOS 利用FFmpeg 開發音視頻流(一)——Mac 系統上編譯 FFmpeg
iOS 利用FFmpeg 開發音視頻流(二)——Mac 系統上編譯 iOS 可用的FFmpeg 庫
這位作者寫的流程很好。其中安裝homebrew的鏈接似乎有些問題,我去homebrew官網找的鏈接:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝完了,就新建工程,仿照剛剛貼的兩個文章,導入文件,添加頭文件查找。
接著,我們要調用一個初始化方法
聲明一下,我是在邊寫文章邊實驗,所以肯定有彎路,反正我走一步寫一步,防止忘了。。
這一步,我是參考這個文章An ffmpeg and SDL Tutorial.
在ffmpeg使用之前,需要初始化ffmpeg,需要調用一個av_register_all方法,并且只調用一次。這個教程不是給iOS專用的,所以我轉化了一下,在iOS的main.m中調用:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "avformat.h"
#import "avcodec.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
av_register_all();
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
編譯的時候,我就發現,有點問題,很多報錯,原因是要導入一些系統框架:
然后就能編譯成功了。也不知道對不對
另外,mark一個帖子,有一些ffmpeg的bug修復,不知道有沒有用:
iOS下使用FFMPEG的一些總結
PS:以前做Linux Audio Driver的時候,就是沒有資料,尤其沒有中文資料,只能遵從Linus的忠告,read the fucking source code。現在又是這樣,所有中文資料都是只說怎么編譯。尼瑪使用呢?好吧,開始Google了,祝我好運。。。
Corina你看到文章推送,要是不鼓勵一下,你覺得你好意思嗎~~~~~