视频播放遇到的坑(新手)

来源:互联网 发布:如何测试网络 编辑:程序博客网 时间:2024/05/22 02:16

 最近再做一个TVOS项目,有一个需求是收到安卓发送的指定的UDP数据,然后播放视频,于是就开始了下面的工作

  自定义了一个控制器,用来存放AVPlayerLayer的layer,然后给了一个类方法去获得自定义控制器的实例。用presentVIewController的方法推出控制器,在新的工程里一切都OK,但是当吧自定义控制器拖到项目中,问题就来了。一下是遇到的问题,以及解决办法

  • 在推出控制器的时候报了错误信息待添加
    • 只因为收到了两次UDP,而我用的static申请的实例,所以导致两只present的viewCOntroller是同一个,所以报了以上错误
    • 解决方法:判断当前控制器是否已经推出,如果是,则不再推出,但是又觉得这样判断太麻烦了,于是用了@try @catch来推出控制器,如果推出失败会走下面的方法,不会报错当然这不是解决问题的根本方法,还望大神可以提出宝贵的意见
  • 在切换视频的时候,移除了正在播放视频的layer,添加了新的layer,但是视频的图像是在大概5S后才出现的,知道是多线程的问题,可是添加layer方法是在主线程添加的,于是就改为异步为同步,还是不行,最后又看了一遍自己的代码,觉得是layer 的frame设置的问题,原来的设置是在添加后设置的,改为添加前设置, 一切OK

 期间尝试直接在keyWindow上添加视频的layer,但是在移除layer的时候,发现不能收到UDP的数据了,后来经测试发现,是因为在移除layer的时候实在主线程同步执行的,导致线程阻塞了。

 总结:

  • 对于很多人来说,这都不是什么问题,但是讲真,这折磨了我好几天,同事也总结了几点
  • 如果按照正常逻辑来做的而出现的问题,首先就应该检查代码的顺序,就如我上面遇到的frame设置前后的问题
  • 尽量不要再主线程同步执行任务
  • 遇到问题多百度,百度不行Google,实在不行再向大神请教。
  • 同事,在这里感谢群友热心的帮助,最然你们不一定看到这个博客
0 0
原创粉丝点击