weibo videokit视频流学习笔记

来源:互联网 发布:淘宝助理5.0旧版本 编辑:程序博客网 时间:2024/06/06 08:27

视频播放都由videocontroller控制,在WBVideoPlayerManager里面封装了自动播放的逻辑。在videoviewmanager里面封装了videocontentview的一些plugins,实际上的播放控件是videoplayerlayer,这个view在playcontroller里面进行控制,playcontroller控制这个view到底是add到哪个cell上面的videocontentview,就是说在视频流到cell跳转到全屏的过程中只是做了一个动画的效果,并且把这个videoplayerlayer通过当前的videoplayercontroller转移到新的控制器上,新的控制器就能继续播放了,在退出的时候,会继续把这个view插到视频流的cell里面,根据sourceview找到这个cell的,这样就保证了视频流到全屏的继续播放的效果,里面的动画完全是转场动画控制。这里面的逻辑盲点就是不了解怎么转移的view,一直以为是根据playeritem去实现继续播放的,其实完全没必要,这样做相当于做了一个单例的效果吧。视频流里面完全是一个个cell实现的,点击control切换到下一个cell的时候,sourceview变了,会把当前的palyerlayerview贴到这个cell上,实际上,所有的cell静态的东西都没变,变的只是这个播放器的view在移动来移动去。

WBVideoPlayerItemLoader可以根据model videoitem去获取到wbplayeritem。

feed里面的视频用的palyercontroller是不用于视频流里面的控制器的,因此在点击feed里面的视频跳转到视频流的时候,会进行一个replace的操作,把当前的palyerlayerview与playeritem交给视频流的控制器,剩下的就全部走视频流的逻辑。

自动播放的逻辑写的真是脑洞大开。为了不入侵以前的逻辑吧,实现了一些列的协议,根据协议找到提供播放的sourceview,如果达到播放的条件,wifi 只有一个播放等,会让playerlayer播放。

视频的上传,使用了分片上传,自己封装的nsoperation,跟断点上传没啥区别,但是感觉上传速度一直很慢,在多线程控制方面大多用了信号量去控制并发回调。

浅显的理解吧,还会继续理解。

0 0
原创粉丝点击