AVPlayer
will randomly just play audio, not showing the video track...
Playing video correctly with AVPlayer
while having an active compres
I found a solution to my problem. Like Sami said, the issue appears to be in AVVideoCompositionCoreAnimationTool which I was using to watermark my video. I shifted to using a CIFilter, which actually had cleaner code anyway.
I removed everything with CoreAnimationTool and used this (mixComposition is my AVMutableComposition):
let watermarkFilter = CIFilter(name: "CISourceOverCompositing")!
let watermarkImage = CIImage(image: #imageLiteral(resourceName: "watermark"))!
let videoComposition = AVVideoComposition(asset: mixComposition) { (filteringRequest) in
let source = filteringRequest.sourceImage.clampingToExtent()
watermarkFilter.setValue(source, forKey: "inputBackgroundImage")
let transform = CGAffineTransform(translationX: filteringRequest.sourceImage.extent.width - watermarkImage.extent.width - 2, y: 0)
watermarkFilter.setValue(watermarkImage.applying(transform), forKey: "inputImage")
filteringRequest.finish(with: watermarkFilter.outputImage!, context: nil)
}
and then in the AVAssetExportSession added this:
exporter!.videoComposition = videoComposition
Hope that helps somebody!
Just heard from Apple DTS. They also agree this points to an Apple iOS bug and asked me to log it.
I cut out usage of AVAssetExportSession
altogether and it solved the issue. So calling AVAssetExportSession
in combination with other AV methods is what causes the iOS instability.
In my case I was usingAVAssetExportSession
for post capture compression. So instead I used AVAssetWriter
to sample each frame in real-time to the format I needed...
This should be fixed soon by Apple, hopefully.