AVMutableVideoComposition请求sourceImage有时是空的

这是我的这个问题的延伸,但我认为这是不同的值得自己的问题:

我正在过滤各种大小,尺度等video喂养他们成AVMutableVideoComposition

这是我目前的代码:

 private func filterVideo(with filter: Filter?) { if let player = playerLayer?.player, let playerItem = player.currentItem { let composition = AVMutableComposition() let videoAssetTrack = playerItem.asset.tracks(withMediaType: .video).first let videoCompositionTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid) try? videoCompositionTrack?.insertTimeRange(CMTimeRange(start: kCMTimeZero, duration: playerItem.asset.duration), of: videoAssetTrack!, at: kCMTimeZero) let videoComposition = AVMutableVideoComposition(asset: composition, applyingCIFiltersWithHandler: { (request) in print(request.sourceImage.pixelBuffer) // Sometimes => nil if let filter = filter { if let filteredImage = filter.filterImage(request.sourceImage) { request.finish(with: filteredImage, context: nil) } else { request.finish(with: RenderError.couldNotFilter) } } else { request.finish(with: request.sourceImage, context: nil) } }) playerItem.videoComposition = videoComposition } } 

filter是我自定义Filter类的一个实例,它具有过滤UIImage或CIImage的function。

问题是有些video会搞砸。 对于只有那些filteredImage => nil有问题的video也是如此。 这表明一些图像是空的:他们的pixelBuffer s是nil 。 顺便说一句, pixelBuffer是甚至之前我甚至喂它进入filter

为什么会发生这种情况,我该如何解决?