2015-11-25 38 views
5

oluşturulamıyor: m4a bir AVSession ihraç etmeye çalışırkenAVAssetExportSession Her zaman bu hatayı alıyorum nedense dosya Hata -12115

Error Domain=NSURLErrorDomain Code=-3000 "Cannot create file" UserInfo={NSLocalizedDescription=Cannot create file, NSUnderlyingError=0x1321dd730 {Error Domain=NSOSStatusErrorDomain Code=-12115 "(null)"}}

. Dosya: Bu ancak 3.

- (void)processSourceVideoFile:(NSURL *)mediaURL completion:(void (^)(BOOL success))completion { 
    [self showProgressOverlay]; 

    NSString *outputFileType = AVFileTypeMPEG4; 

    __block NSString *videoID = nil; 
    if (self.videoAttachment == nil) { 
     [MagicalRecord saveUsingEditContextWithBlockAndWait:^(NSManagedObjectContext *localContext) { 
      self.videoAttachment = [SPXAttachment MR_createEntityInContext:localContext]; 
      self.videoAttachment.uuid = [NSString uuid]; 
      self.videoAttachment.clientCreatedAt = [NSDate date]; 
      videoID = self.videoAttachment.uuid; 
     }]; 
    } else { 
     videoID = self.videoAttachment.uuid; 
    } 

    self.videoAttachment = [SPXAttachment MR_findFirstByAttribute:@"uuid" withValue:videoID]; 

    NSString *targetPath = self.videoAttachment.filePath; 
    DDLogVerbose(@"Exporting Video to %@", targetPath); 
    if ([[NSFileManager defaultManager] fileExistsAtPath:targetPath]) { 
     [[NSFileManager defaultManager] removeItemAtPath:targetPath error:nil]; 
    } 

    AVAsset *video = [AVAsset assetWithURL:mediaURL]; 

    self.exportSession = [AVAssetExportSession exportSessionWithAsset:video presetName:AVAssetExportPreset640x480]; 
    self.exportSession.outputFileType = outputFileType; 
    self.exportSession.outputURL = [NSURL fileURLWithPath:targetPath]; 

    [self.exportSession exportAsynchronouslyWithCompletionHandler:^{ 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self hideProgressOverlay]; 
     }); 

     switch (self.exportSession.status) { 
      case AVAssetExportSessionStatusFailed: 
       DDLogError(@"Video Export Failed: %@", self.exportSession.error); 
       completion(NO); 
       break; 
      case AVAssetExportSessionStatusCancelled: 
       DDLogVerbose(@"Video Export Cancelled"); 
       break; 
      case AVAssetExportSessionStatusCompleted: { 
       DDLogVerbose(@"Video Export Complete for %@", targetPath); 
       BOOL dir; 
       if ([[NSFileManager defaultManager] fileExistsAtPath:targetPath isDirectory:&dir]) { 
        DDLogVerbose(@"FILE IS THERE MOFO!!"); 
       } 
       completion(YES); 
      } 
       break; 
      default: 
       break; 
     } 
    }]; 
} 

Kaynak URL benim iPad Air 2 (iOS 9.1) her zaman başarısız, hem de bizim QA iPad Mini, benim iş cihazda çalışıyor /// özel /var/mobile/Containers/Data/Application/BD85BA54-5B3D-4533-A142-C2A30F373814/tmp/capture-T0x12fe1e8e0.tmp.CbksL4/capturedvideo.MOV

Çıktı URL: file: /// var/mobile/kaplar/Veri/Uygulama/BD85BA54-5B3D-4533-A142-C2A30F373814/Library/Dosyalar/59124681-ba1a-4453-8078-9ca6ac3088bf/eklerin/454dd782-6b14-44cd-9f4e-84664908388b

bir dosyayı ekleyerek çalıştı çıkış URL'sine (.mp4) uzantı d yardım etmedi. Bu senaryo ile tamamen eşleşmeyen hiçbir şey aramamıştım.

Herhangi bir yardım için teşekkür ederiz!

+0

Bunu çözdünüz mü? –

+0

Çıkış URL'nizin .mp4 dosya uzantısına sahip olduğundan emin olun. – dmclean

+0

Bir Mac'de, dosyada olduğu gibi yazma izniniz olduğundan emin olun (Sandbox, yazma erişimine izin vermeyebilir): BOOL isWritable = [[NSFileManager defaultManager] isWritableFileAtPath: outputURL.path]; \t NSLog (@ "yazılabilir:% @", @ (isWritable)); – Karsten

cevap

0

Çıktı URL'nizin yolunun sonunda .mp4 dosya uzantısına sahip olduğundan emin olun.