2016-03-22 22 views
9

Ich habe ein Problem, das zugrundeliegende Problem hinter meinem Asset-Export-Sitzungsfehler aufzuspüren. Das Problem betrifft nur ein Video, und ich glaube, das Problem liegt in seiner Audiospur, da ich das Asset ohne die Audiospur (nur die Videospur) erfolgreich exportiert habe.AVAssetExportSession ist mit unbekanntem Fehler -12780 für bestimmtes Video fehlgeschlagen

Die Videospur wird mit AVAssetReader dekodiert und die Sample-Puffer werden verarbeitet, bevor sie in eine neue Videospur geschrieben werden; Die Audiospur wird ohne Decodierung oder Zwischenverarbeitung weitergegeben. Jedoch, selbst ohne die Videoprobenpuffer zu verarbeiten, trat der gleiche Fehler auf.

Ich habe es auch anders herum versucht - nur mit Audio und keine Videospur - und noch andere Videos funktionierten gut und dieses bestimmte Video ist fehlgeschlagen. Ich nehme an, es gibt ein inhärentes Problem mit der Audiospur des Videos, aber ich kann nicht schließen, was das Problem ist, und daher kann ich es nicht angehen. Hier ist mein Code:

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

Das Problem soll in der Asset-Export-Sitzung sein; Das Einfügen von Spuren in die AVMutableComposition funktionierte einwandfrei. Hier ist die Fehlermeldung des 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

Ist dieses Problem gelöst? –

+0

Haben Sie die Lösung für dieses Problem gefunden? –

Antwort

1

wilde Vermutung: die Audiospur getrennt von seinem Besitz AVAsset, die dann den Gültigkeitsbereich ging. Versuchen Sie, einen Verweis auf die Audiospur AVAsset beizubehalten, bis Sie exportAsynchronouslyWithCompletionHandler anrufen.