初次引入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进行交互回调。