接手了一個項目,里面用到的播放庫比較老並且播放效果不是很穩定,下載了最新的MobileVLCKit編譯了一把,跟大家分享一下編譯過程:
我的環境是xcode7.1 ,sdk是9.1
編譯過程:
參考 https://wiki.videolan.org/VLCKit 中的Building the framework for iOS項
在終端中執行 git Clone http://code.videolan.org/videolan/VLCKit.git,會生成目錄下生成一個VLCKit的文件夾,以后所有的操作都是在該文件夾中進行
按照說明,在終端中執行./buildMobileVLCKit.sh,總體來說,for IOS的編譯做的比較自動化,只運行此腳本即可,所有編譯所需的第三方軟件,支持庫,都會通過腳本自動下載
文件下載說明:
由於網絡問題 google,sourceforge等down不下來,最好有一個給力的VPN
有兩個路徑分別保存下載的文件
MobileVLCKit\ImportedSources\vlc\contrib\tarballs路徑下是下載各種第三方庫,例如libxml2,ffmpeg,freetype等
在MobileVLCKit\ImportedSources\vlc\contrib\src中有每一個庫對應的文件夾,文件夾下的rules.mak中會有對應的版本路徑,如果無法自動下載,可以手動下載一下,然后將包拷貝到tarballs中,需要注意的是SHA512SUMS文件中的校驗值要對應上
MobileVLCKit\ImportedSources\vlc\extras\tools\是編譯需要的工具的集合,例如automake,autoconf等
在該文件夾下有一個packages.mak的文件,里面描述的是所有的文件下載路徑,可以按照路徑手動來下載,將包拷貝到tools文件夾中,需要注意的是gas-preprocessor,protobuf,apache-ant這三個,自動下載的時候經常會遇到下載不下來,字節為0的情況
所有包下載完畢后,就開始編譯過程,過程中可能會出提示錯誤而中斷,一般來說多運行幾次腳本即可,直到編譯成功。需要注意的是-n的參數,否則vlc部分,會重新下載
編譯成功后,會在build文件夾中生成一系列的libMobileVLCKit.a文件和MobileVLCKit.framework
遇到的一些問題:
libtool: compile: specify a tag with `--tag'
make[2]: *** [rijndael-arm.lo] Error 1
make[1]: *** [install-recursive] Error 1
make: *** [.gcrypt] Error 2
此處問題,需要檢查git環境(例如用戶名,郵箱的設置:git --global),以及MobileVLCKit下的patches文件夾下的patch補丁是否打上,我當時是根據編譯錯誤,一路修改到最后,最后發現是所有的patch未打導致的,patch未打會導致后面的一系列問題,建議是出現此問題,馬上檢查patch環境
例子程序samplePlayBack編譯錯誤
使用libMobileVLCKit.a靜態連接,例子程序中頭文件和鏈接文件路徑設置時錯誤的,需要修改正確的。
如果使用MobileVLCKit.framework的方式,將framework拖入到工程的support文件夾中,同時刪除頭文件和靜態庫的引用
播放HLS媒體,只有音頻沒有視頻的問題
此問題有可能是vlc的版本問題,切換到2.1-stable或者ios-2.7分支試一下,見https://code.videolan.org/videolan/VLCKit/branches