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
。
为什么会发生这种情况,我该如何解决?
- iOS:如何使用MPMoviePlayerController
- 在Mac OS X 10.7 Lion上使用Core Animation进行AVFoundation问题
- iPhone使用AVFoundation从video中读取UIimage(帧)
- 如何将使用AVFoundation拍摄的照片保存到相册?
- CVPixelBuffer到CIImage总是返回零
- ios覆盖另一个video上的alpha通道video
- animationAVPlayerLayer videoGravity属性
- 在录制的video上合成基于帧的animation贴纸的最佳方法是什么?
- 如何使用AVFoundation为您的video添加不同的图像和不同的CMTime