簡體   English   中英

從存檔構建時,CADisplayLink會斷斷續續

[英]CADisplayLink stutters when built from archive

我有一個項目,正在渲染視頻播放和應用CIFilters。 我知道我可以使用視頻合成來獲取帶過濾器的視頻,但問題是過濾器需要可以刷卡(預覽下一個過濾器,因此我們使用第一個圖像視圖的掩碼並使用下一個過濾器過濾第二個)。

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時將視頻合成附加到玩家項目后仍然是口吃。

經過一段時間玩這個我發現了問題,代碼沒有任何問題。 問題是我們在app中有Appsee分析,我們需要在這些屏幕上暫停它以便它們正確呈現。 我們在調試模式下沒有遇到這些問題的原因是AppDelegate if條件阻止了Appsee在調試環境中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM