代码之家  ›  专栏  ›  技术社区  ›  Baki

从存档中构建CADisplayLink时会出现口吃

  •  3
  • Baki  · 技术社区  · 7 年前

    func displayLinkDidRefresh(link: CADisplayLink){
        
        let itemTime = videoOutput.itemTime(forHostTime: CACurrentMediaTime())
                
        if videoOutput.hasNewPixelBuffer(forItemTime: itemTime) {
            
            if let pixelBuffer = videoOutput.copyPixelBuffer(forItemTime: itemTime, itemTimeForDisplay: nil){
                unfilteredImage = CIImage(cvImageBuffer: pixelBuffer)
                displayFilteredImage(unfilteredImage: unfilteredImage)
            }
        }
    }
    

    这是用于创建AVPlayer实例和CADisplayLink的代码:

        player = AVPlayer(playerItem: item)
        player.isMuted = true
       
        displayLink = CADisplayLink(target: self, selector: #selector(displayLinkDidRefresh(link:)))
        displayLink!.preferredFramesPerSecond = 24
        displayLink!.add(to: RunLoop.main, forMode: RunLoopMode.commonModes)
        
        NotificationCenter.default.addObserver(self, selector: #selector(self.playerItemDidReachEnd(notification:)), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: self.player.currentItem)
    

    当从调试器运行时,我并没有遇到口吃(或者说是在最低级别),但当从存档运行构建时,它会口吃很多。我要做的测试是从手机上删除应用程序,然后将其安装在手机上并进行测试,正如所说的那样,调试版本很好,但归档会产生问题。有什么意见吗?

    编辑1:

    设法让它更好地工作,但在项目和播放器状态为readyToPlay时,将视频合成附加到播放器项目后仍然口吃。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Baki    7 年前

    推荐文章