비디오 재생을 렌더링하고 CIFilter를 적용하는 프로젝트가 있습니다. 비디오 컴포지션을 사용하여 필터로 비디오를 얻을 수 있지만 문제는 필터를 스 와이프해야한다는 것입니다 (다음 필터 미리보기를 통해 첫 번째 이미지 뷰에는 마스크를 사용하고 두 번째 필터는 다음 필터로 필터링). CADisplayLink stutters (아카이브에서 빌드 할 때)
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 때 플레이어 항목에 비디오 구성을 부착 한 후 망가.