FFmpeg是音視頻流相關的比較牛逼的東西吧,我不了解,然后從頭開始學起!先從能看到結(jié)果的東西搞起,就是B站大牛寫的IJKPlayer,從這個開始了解一下FFmpeg。
1. 編譯FFmpeg類庫
1.1 編譯前的準備
按照github上(https://github.com/Bilibili/ijkplayer)bilibili所介紹的流程,首先先做一些編譯FFmpeg的準備工作。
1.1.1 homebrew, git, yasm
首先,安裝一下homebrew。homebrew這個東西應該是使用cocoaPods的時候接觸過,反正用這個東西可以安裝許多東西,使用起來方便。具體的安裝這個的方法,就百度一下,肯定知道哈。
其次,安裝一下git。git這個東西應該是比別的一些版本控制管理的要厲害吧,分布式的,而且github,看名字就……你懂得。我是一只用git的,但是我沒有深入的去看git,只是用了一些比較簡單的git的命令來管理app的版本。
最后安裝一下yasm。這個yasm是一個完全重寫的NASM匯編。目前,它支持x86和AMD64指令集,接受NASM和氣體匯編語法,產(chǎn)出二進制, ELF32 , ELF64 , COFF , Mach - O的( 32和64 ) , RDOFF2 ,的Win32和Win64對象的格式,并生成STABS 調(diào)試信息的來源,DWARF 2 ,CodeView 8格式。(以上這些均來自于互聯(lián)網(wǎng),我并看不懂這些都是什么,但是大體的應該就是一個匯編器吧,一種編譯的時候可以加快速度之類的一些環(huán)境吧)
在安裝了homebrew的情況下,終端執(zhí)行以下命令安裝yasm:
brew install yasm
1.2 編譯FFmpeg
首先克隆下來IJKPlayer的項目,找一個你要克隆下來的文件夾,cd進去,然后直接克隆下來:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
然后進入到克隆到的文件夾中:
cd ijkplayer-ios
其中的init-ios.sh是一個看名字用來初始化IJKPlayer的東西,實際上它做的工作是下載FFmpeg編譯的相關的真機、模擬器框架(armv7、arm64、i386、x86_64)。然后我們執(zhí)行這個腳本:
./init-ios.sh
之后依次執(zhí)行下面的命令,來編譯FFmpeg:
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
摟一眼期間沒有Error的提示,應該就是順利編譯了。打開
ios/IJKMediaDemo/IJKMediaDemo.xcodeproj
這個路徑的這個工程,看看官方給的demo能不能跑起來,跑起來的話,就沒問題了。
2. 把IJKPlayer集成到自己的項目中
具體的集成過程,可以看github上面的把整個工程給添加進去,也可以使用framework。已經(jīng)有大神寫的很清楚了:http://www.lxweimin.com/p/1f06b27b3ac0,但是我按照這個教程直接弄,之后會出現(xiàn)問題,是一個連接的問題:
諸如這樣的報錯之類的把,是缺少了鏈接庫之類的吧,我也不是太明白,總之是因為FFmpeg里面有一些C++的東西吧(這個問題看上去是個關于C++的問題)。解決的方案是,在other link flag 里面添加一個:
-lstdc++
或者是再加一個依賴庫:
這樣問題就解決了,然后我們就可以參考demo,來進行直播畫面的播放控制之類的了。