播放格式的多種多樣,促使了FFmpeg的誕生,無論是視頻格式的mp4,mkv,mov還是流格式的rtmp rtsp 又或者是現在流行的直播格式的m3u8
ffmpeg 都可以做到游刃有余
但是如何讓FFmpeg編譯為我們所用 不是簡單的下載下來就行 有時候步驟錯誤 就會繞很遠 我也是找了很多資料才給編譯成功打包 這篇文章也算是個記錄。
** My building environment **
- Mac OS X 10.11.6
- Xcode 8.1
- Terminal
要用到的文件
編譯
首先確認是否安裝homwbrew
如果沒有安裝 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝yasm
brew install yasm
or
cd yasm-1.2.0
./configure
make
make install
安裝gas-preprocessor
這個稍微麻煩一點 因為涉及到文件權限
- 首先復制gas-preprocessor.pl到/usr/local/bin
chmod 777 /usr/local/bin/gas-preprocessor.pl
關于ijkplayer
如同官方README寫的
進入到文件夾然后
./init-ios.sh
這一步之后
cd ios
./comppile-ffmpeg.sh clean
./compile-ffmpeg.sh all
將編譯好的framework添加到自己項目里面
-
File -> Add Files to ... -> Select ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj
選擇Select your Application's target.
然后依賴性添加IJKMediaFrameworkBuild Phases -> Target Dependencies -> Select IJKMediaFramework
還有Link Binary with Libraries
添加IJKMediaFramework
以及相應的系統framework 如
libz.tbd
AudioToolBox.framework
VideoTollBox.framework
CoreGraphic.framework
CoreVideo.framework
..... 需要的framework你編譯的時候xcode會告訴你 你加上去就好
關于FFmpeg
同樣,如同官方README寫的
如果你要編譯支持所有平臺
./build-ffmpeg.sh
如果是arm64的話
./build-ffmpeg.sh arm64
armv7 和x86
./build-ffmpeg.sh armv7 x86_64
合并所有版本
./build-ffmpeg.sh lipo
過程比較慢,稍微等一下就好
編譯好之后的樣子
FFmpeg-3.2是源代碼 FFmpeg-iOS是編譯好的給iOS用的,一共7個.a靜態文件拖到項目里面,然后加載libz.dylib libbz2.dylib libiconv.dylib這些依賴庫
好了,創建一個項目把必要的framework添加進去,然后簡單設置一下,接著找一個直播源,來測試一下。
下載后pod install 然后由于 IJKMediaFramework過大,所以demo下載后要自己添加
這算是可以播放直播,至于怎么把自己拍的視頻上傳上去作為源 會在下一篇中整理出來