iOS上使用高大上的ffmpeg(一)——導入到iOS

首先是吹牛

本人大二的時候做單片機,后來做了個智能家居機器人,因為圖像傳輸,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你看到文章推送,要是不鼓勵一下,你覺得你好意思嗎~~~~~

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

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,353評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,245評論 4 61
  • 更像是因為需要思考的事情多,思維架構比孩童時期復雜得多,會發散的考慮到許多其他的方面,并不是指像小時候一樣單純的記憶。
    履霜閱讀 684評論 1 1
  • 曾經,我把很多人都當朋友! 后來,我發現,并不是所有人都當我是朋友。 一開始,我對朋友的定義是這樣子的,我認為不會...
    劉平努力閱讀 165評論 0 1
  • 每個人生來就有夢想,有些直到臨終前都沒有機會實現,因為害怕去追夢!如果以后人們見面不是先問“你是做什么工作的?”,...
    喵了個喵__閱讀 313評論 0 0