初次引入IJKMediaFramework 和 YKMediaPlayerSDK。經(jīng)過pod倒入沒有出現(xiàn)文件庫沖突問題,可以進行正常編譯,但是在播放視頻時,因為 IJKMediaFramework 和 YKMediaPlayerSDK都是基于ffmpeg 封裝的第三方庫,并由于OC中沒有命名空間概念,導致項目中多個ffmpeg的外漏函數(shù)出現(xiàn)命名沖突重復引用問題。xcode在調(diào)用ffmpeg的時候出現(xiàn)的調(diào)用混亂。導致不管是IJKMedia還是YKMedia 同時存在時,播放視頻都導致崩潰問題。
嘗試一:
將IJKMediaFramework 中與 YKMediaPlayerSDK重復的文件進行刪除,解決重復引用問題。但是兩個sdk對包內(nèi)的ffmpeg有依賴性,刪除后會導致功能無法通過編譯。
嘗試二:
尋找可替代的第三方網(wǎng)絡播放框架,嘗試了 vitamio ,但是依然不行,發(fā)現(xiàn)vitamio依然是基于ffmpeg封裝的 第三方框架。目前iOS方面github上面比較完善的 網(wǎng)絡播放框架 都是基于ffmpeg 進行封裝,除了蘋果自帶的AVPlayer(但是支持的視頻類型很少,不滿足業(yè)務需求),所以都會有命名沖突文件重復問題。
嘗試三:
對二者的ffmpeg 進行整合。無法運行是因為出現(xiàn)調(diào)用混亂,函數(shù)名沖突問題。所以想把兩者的ffmpeg統(tǒng)一成一個,這樣就解決了調(diào)用混亂問題。對IJKMediaFramework 和 YKMediaPlayerSDK的靜態(tài)庫進行解壓 ,對比靜態(tài)庫中四個框架arm64、armv7、i386、x86_64中的 對應文件。發(fā)現(xiàn)優(yōu)酷的YKMediaPlayerSDK 對ffmpeg 的源碼進行了改動(可能關于優(yōu)酷視頻鏈接的加密解密算法算法),所以無法跟 IJKMediaFramework 共用一套。

嘗試四:
因為優(yōu)酷的YKMediaPlayerSDK 中對ffmpeg可能涉及到公司加密算法保密問題拿到源碼改動不現(xiàn)實,所以想對開源框架IJKMediaFramework中的ffmpeg進行更改, 如果可以解決命名沖突問題就可以解決調(diào)用混亂這樣就可以多個版本并存。但是 IJKMediaFramework 作者給出了太耗時的答復。https://github.com/Bilibili/ijkplayer/issues/142
嘗試五:
跟優(yōu)酷客服以及相關技術人員聯(lián)系,申請入群暫時沒得到處理,發(fā)送了郵件等待技術人員回復。

嘗試六:
嘗試使用不是基于 ffmpeg封裝的 VLC播放框架,但是不支持 m3u8 的直播地址。不符合業(yè)務需求。
總結(jié):
iOS端SDK 沖突問題,等待優(yōu)酷官方自行解決。
========================2017年8月14日==========================
嘗試七:
使用 優(yōu)酷web端進行視頻播放,讓前端將優(yōu)酷web端的播放器UI進行重寫(可以高度自定義),完成項目需求,然后將html文件放在服務端,客戶端將對應的vid傳入指定的URL進行視頻播放。JS進行交互回調(diào)。