根據IJKPlayer的README來配置項目
下面逐句解釋下
【1】git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
通過git下載ijkplayer的項目
【2】cd ijkplayer-ios
git checkout -B latest k0.7.8.
【3】./init-ios.sh
執行init-ios.sh腳本 初始化項目,主要是下載依賴庫ffmpeg。
【4】cd ios
./compile-ffmpeg.sh clean
執行compile-ffmpeg.sh 的clean命令 清除ffmpeg已有靜態庫構建
./compile-ffmpeg.sh all
執行compile-ffmpeg.sh 的all命令 重新生成ffmpeg所有靜態庫構建
接下去一大塊是ijkplayer導入項目的操作,這里并不推薦大家使用這種方法,這種做法對原有項目結構的侵入性比較強,復用性也比較差,下面介紹下另一種方法,將ijkplayer打包成靜態庫使用。
【1】打開IJKMediaPlayer.xcodeproj 項目(默認路徑:ijkplayer-ios/ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj)
【2】選擇Target -> IJKMediaFramework,再Edit Scheme -> info -> Build Configuration 設置為 Release(通常Release環境下的性能更優越)
【3】選擇任意模擬器執行一次Build操作,再選擇真機(或Generic iOS Device)執行一次Build。
【4】在Xcode項目中找到Product目錄,右鍵生成的IJKMediaFramework.framework,選擇Show in Finder,你便可以查看到生成的靜態庫(PS:路徑類似/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/Release-iphoneos/IJKMediaFramework.framework)
至此為止,你已經得到了一個模擬器靜態庫與一個真機靜態庫。
接下去要講如果將兩個靜態庫合成(這是為了方便開發,如果是生產環境,只使用真機靜態庫更為有效,可以減少App的體積大小)。
lipo是XCode提供的關于查看庫文件信息的工具,也可以合成或者拆分庫文件。
lipo -create "真機靜態庫路徑/IJKMediaFramework" "模擬器靜態庫路徑/IJKMediaFramework" -output "輸出文件路徑/IJKMediaFramework"
例如:lipo -create "/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework" "/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework" -output "/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/IJKMediaFramework"
這樣你就能獲得到一個IJKMediaFramework 文件。
將這個文件覆蓋到真機靜態庫下(xxx/IJKMediaFramework.framework/IJKMediaFramework)替換原有文件,然后這個靜態庫就可以使用啦。
下面在你的項目中,導入這個合并好的IJKMediaFramework.framework
在引入依賴庫?Build Phases -> Link Binary with Libraries
AudioToolbox.framework
AVFoundation.framework
CoreGraphics.framework
CoreMedia.framework
CoreVideo.framework
libbz2.tbd
libz.tbd
MediaPlayer.framework
MobileCoreServices.framework
OpenGLES.framework
QuartzCore.framework
UIKit.framework
VideoToolbox.framework
在你想使用ijkplayer的文件中,引入#import (切記不可使用#import ),就可以愉快的使用ijkplayer啦。
如果有同學碰到這個問題 請再引入libc++.tbd(README中沒有提起)