unash / BarrageRenderer

一个 iOS 上的弹幕渲染库.

Home Page:https://github.com/unash/BarrageRenderer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

弹幕暂停出问题+卡顿(急)

13167281921 opened this issue · comments

1.视频连续切换码流后,弹幕非常卡(视频播放正常)
2.弹幕在暂停的时候,暂停了5分钟,就丢失了5分钟弹幕,5分钟后弹幕又出现,而且时间跟播放时间可以对应的上,具体如下:
首先,获取后台给到的弹幕数据barrageArray,这是一个数组形式给到我们客户端,for循环里面用receive方法把弹幕一个一个加进去;但是,当暂停播放同时暂停弹幕,然后继续播放的时候,我们暂停时间的弹幕全部丢失。
[barrages enumerateObjectsUsingBlock:^(NSDictionary *obj, NSUInteger idx, BOOL * _Nonnull stop) {

            [self.barrageModel setValuesForKeysWithDictionary:obj];//字典转化为barrage对象
            if (CMTimeGetSeconds(self.videoPlayer.currentTime) < [self.barrageModel.time integerValue]) {
                SendBarrageType location = [self.barrageModel.location integerValue] ;// 接收到的弹幕位置
                NSInteger delay = [self.barrageModel.time integerValue] - CMTimeGetSeconds(self.videoPlayer.currentTime);//delay时间
                if (location == SendBarrageTypeDefault) {
                    [self.barrageRenderer receive: [self walkTextSpriteDescriptorWithDelay:delay barrageModelBool:YES]];//加载滚动弹幕
                }else{
                    BarrageFloatDirection direction = location == SendBarrageTypeTop ? BarrageFloatDirectionT2B : BarrageFloatDirectionB2T;
                    [self.barrageRenderer receive: [self FloatBarrage:direction delay:delay barrageModelBool:YES]];//加载浮动弹幕
 }
                    
            }
            
        }];
commented
  1. 感觉是CPU占用过高所致,看看cpu、gpu的数据
  2. 所需要的效果,是在视频暂停的时候,也需要播放弹幕?

1.cpu占用22-30%左右。
2.问题已经解决,是我乱调用您- (NSTimeInterval)timeForBarrageRenderer:(BarrageRenderer *)renderer方法引起的。

卡顿的仍然在,不过问题2弹幕在暂停的时候的问题已解决。