AVAssetExportSession falló con error desconocido -12780 para video específico

Tengo un problema para rastrear el problema subyacente detrás de mi falla de session de export de activos. El problema es solo para un video, y creo que el problema está en su pista de audio, ya que exporté el activo sin la pista de audio (solo la pista de video).

La pista de video se descodifica con AVAssetReader y los búferes de muestra se procesan antes de reescribirse en una nueva pista de video; la pista de audio se pasa sin deencoding ni procesamiento intermedio. Sin embargo, incluso sin procesar los búferes de muestra de video, se produjo la misma falla.

También traté de hacerlo al revés, solo con audio y sin pista de video, y aún otros videos funcionaron bien y este video en particular falló. Supongo que hay un problema inherente con la pista de audio del video, pero no puedo inferir cuál es el problema y, por lo tanto, no puedo abordarla. Aquí está mi código:

AVAssetExportSession* assetExport = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality]; assetExport.outputFileType = @"com.apple.quicktime-movie"; assetExport.outputURL = [NSURL fileURLWithPath:path]; __weak typeof(self) weakSelf = self; [assetExport exportAsynchronouslyWithCompletionHandler:^{ switch (assetExport.status) { case AVAssetExportSessionStatusCompleted: NSLog(@"Asset combined"); break; case AVAssetExportSessionStatusFailed: NSLog(@"Asset combination failed"); break; default: NSLog(@"Asset combination completed with unknown status: %@", @(assetExport.status)); break; } }]; 

Se supone que el problema está en la session de export de activos; la inserción de la pista en AVMutableComposition funcionó bien. Aquí está el post de error de AVAssetExportSession:

 Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo={NSUnderlyingError=0x6040001338d0 {Error Domain=NSOSStatusErrorDomain Code=-12780 "(null)"}, NSLocalizedFailureReason=An unknown error occurnetworking (-12780), NSLocalizedDescription=The operation could not be completed} 

AVAsset salvaje: la pista de audio se separó de su propio AVAsset , que luego salió fuera del scope. Intente mantener una reference al AVAsset la pista de AVAsset hasta que llame a exportAsynchronouslyWithCompletionHandler .