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!
Bunu çözdünüz mü? –
Çıkış URL'nizin .mp4 dosya uzantısına sahip olduğundan emin olun. – dmclean
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