初次引入IJKMediaFramework 和 YKMediaPlayerSDK。經過pod倒入沒有出現文件庫沖突問題,可以進行正常編譯,但是在播放視頻時,因為 IJKMediaFramework 和 YKMediaPlayerSDK都是基于ffmpeg 封裝的第三方庫,并由于OC中沒有命名空間概念,導致項目中多個ffmpeg的外漏函數出現命名沖突重復引用問題。xcode在調用ffmpeg的時候出現的調用混亂。導致不管是IJKMedia還是YKMedia 同時存在時,播放視頻都導致崩潰問題。
嘗試一:
將IJKMediaFramework 中與 YKMediaPlayerSDK重復的文件進行刪除,解決重復引用問題。但是兩個sdk對包內的ffmpeg有依賴性,刪除后會導致功能無法通過編譯。
嘗試二:
尋找可替代的第三方網絡播放框架,嘗試了 vitamio ,但是依然不行,發現vitamio依然是基于ffmpeg封裝的 第三方框架。目前iOS方面github上面比較完善的 網絡播放框架 都是基于ffmpeg 進行封裝,除了蘋果自帶的AVPlayer(但是支持的視頻類型很少,不滿足業務需求),所以都會有命名沖突文件重復問題。
嘗試三:
對二者的ffmpeg 進行整合。無法運行是因為出現調用混亂,函數名沖突問題。所以想把兩者的ffmpeg統一成一個,這樣就解決了調用混亂問題。對IJKMediaFramework 和 YKMediaPlayerSDK的靜態庫進行解壓 ,對比靜態庫中四個框架arm64、armv7、i386、x86_64中的 對應文件。發現優酷的YKMediaPlayerSDK 對ffmpeg 的源碼進行了改動(可能關于優酷視頻鏈接的加密解密算法算法),所以無法跟 IJKMediaFramework 共用一套。
嘗試四:
因為優酷的YKMediaPlayerSDK 中對ffmpeg可能涉及到公司加密算法保密問題拿到源碼改動不現實,所以想對開源框架IJKMediaFramework中的ffmpeg進行更改, 如果可以解決命名沖突問題就可以解決調用混亂這樣就可以多個版本并存。但是 IJKMediaFramework 作者給出了太耗時的答復。https://github.com/Bilibili/ijkplayer/issues/142
嘗試五:
跟優酷客服以及相關技術人員聯系,申請入群暫時沒得到處理,發送了郵件等待技術人員回復。
嘗試六:
嘗試使用不是基于 ffmpeg封裝的 VLC播放框架,但是不支持 m3u8 的直播地址。不符合業務需求。
總結:
iOS端SDK 沖突問題,等待優酷官方自行解決。
========================2017年8月14日==========================
嘗試七:
使用 優酷web端進行視頻播放,讓前端將優酷web端的播放器UI進行重寫(可以高度自定義),完成項目需求,然后將html文件放在服務端,客戶端將對應的vid傳入指定的URL進行視頻播放。JS進行交互回調。