AVAssetExportSession make black video sometimes, but it still has sound

I'm new baby for Video Processing use Swift 3. I try to merge multiple videos with

AVAssetExportSession
, and using
AVVideoCompositionCoreAnimationTool
to add overlay for final video.

The problem is sometime the final video is perfect, but sometime it just give me a black video with sound only even I didn't change anything 😟

Anybody who ran into that problem same me please give an idea, thanks!


let mixComposition: AVMutableComposition = AVMutableComposition()

//Add assets here

let mainComposition: AVMutableVideoComposition = AVMutableVideoComposition(propertiesOf: mixComposition)

mainComposition.frameDuration = CMTimeMake(1, 30)

mainComposition.renderSize = renderSize mainComposition.renderScale = 1.0

mainComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, in: parentLayer)

mainComposition.instructions = instructions


let exportSession: AVAssetExportSession = AVAssetExportSession(asset: mixComposition, presetName: AVAssetExportPresetHighestQuality)!

exportSession.videoComposition = mainComposition

exportSession.audioMix = audioMix exportSession.outputURL = outputURL

exportSession.outputFileType = AVFileTypeMPEG4

exportSession.shouldOptimizeForNetworkUse = true exportSession.exportAsynchronously {

//Play asset here

}
AVAssetExportSession make black video sometimes, but it still has sound
 
 
Q