2016-03-22 13 views
9

Ho riscontrato un problema nel tracciare il problema sottostante il fallimento della sessione di esportazione delle risorse. Il problema riguarda solo un video e credo che il problema sia nella sua traccia audio, dal momento che ho esportato correttamente la risorsa senza la traccia audio (solo la traccia video).AVAssetExportSession non riuscito con errore sconosciuto -12780 per video specifico

La traccia video viene decodificata con AVAssetReader ei buffer di esempio vengono elaborati prima di essere riscritti in una nuova traccia video; la traccia audio viene passata senza decodifica né elaborazioni intermedie. Tuttavia, anche senza elaborare i buffer dei campioni video, si è verificato lo stesso errore.

Ho anche provato a farlo al contrario - con solo audio e nessuna traccia video - e ancora altri video funzionavano bene e questo particolare video non funzionava. Suppongo che ci sia un problema inerente alla traccia audio del video, ma non posso dedurre quale sia il problema, e quindi non posso affrontarlo. Ecco il mio codice:

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; 
    } 
}]; 

Il problema dovrebbe essere nella sessione di esportazione di asset; l'inserimento della traccia in AVMutableComposition ha funzionato bene. Ecco il messaggio di errore del 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 occurred (-12780), NSLocalizedDescription=The operation could not be completed} 
+0

Questo problema è stato risolto? –

+0

Hai trovato la soluzione per questo problema? –

risposta

1

selvaggio indovinare: la traccia audio è stato separato dal suo possedere AVAsset, che poi è andato fuori del campo di applicazione. Prova a mantenere un riferimento allo AVAsset della traccia audio fino a quando non chiami exportAsynchronouslyWithCompletionHandler.