我有videourl,并希望使用此URl从iPhone中删除它
我创build了一个存储video的应用,现在我想在用户单击删除button时删除该video。 我正在使用AVFoundation
录制video。
我的应用程序相机给我一个这样的输出url:
file://localhost/private/var/mobile/Applications/4B2E02E5-3EE2-493E-8ECF-4B1DA29B9387/tmp/output.mov
我已经尝试过,但没有奏效:
- (void) removeFile:(NSURL *)fileURL { NSString *filePath = [fileURL path]; NSFileManager *fileManager = [NSFileManager defaultManager]; if ([fileManager fileExistsAtPath:filePath]) { NSLog(@"here it is : %@",fileURL); NSError *error; // Attempt to delete the file at filePath2 if ([fileManager removeItemAtPath:filePath error:&error] != YES) NSLog(@"Unable to delete file: %@", [error localizedDescription]); // Show contents of Documents directory NSLog(@"Documents directory: %@", [fileManager contentsOfDirectoryAtPath:filePath error:&error]); } }
编辑
- (IBAction)videoWillDelete:(id)sender { NSString *strPath = [NSHomeDirectory() stringByAppendingPathComponent:@"output.mov"]; NSLog(@"file is:%@",strPath); if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]==YES) { NSLog(@"file is deletebale"); }else { NSLog(@"file is not deletebale"); } NSError *error; if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]) { BOOL success = [[NSFileManager defaultManager] removeItemAtPath:strPath error:&error]; if (!success) { NSLog(@"Error removing file at path: %@", error.localizedDescription); } } }
我的日志文件有:
2012-11-02 17:33:21.836 AVFoundationCam[1791:707] file is:/var/mobile/Applications/4B2E02E5-3EE2-493E-8ECF-4B1DA29B9387/output.mov 2012-11-02 17:33:21.838 AVFoundationCam[1791:707] file is not deletebale
这个函数是我用来在iPhone中存储数据的:
else { ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) { if (error) { if ([[self delegate] respondsToSelector:@selector(captureManager:didFailWithError:)]) { [[self delegate] captureManager:self didFailWithError:error]; } } if ([[UIDevice currentDevice] isMultitaskingSupported]) { [[UIApplication sharedApplication] endBackgroundTask:[self backgroundRecordingID]]; } if ([[self delegate] respondsToSelector:@selector(captureManagerRecordingFinished:)]) { [[self delegate] captureManagerRecordingFinished:self]; } }]; //[library release]; } }
你可以得到这样的Document
Directory
path
:
NSString *strPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
现在删除这样的项目:
NSError *error; if ([fileManager fileExistsAtPath:path]) { if ([[NSFileManager defaultManager] isDeletableFileAtPath:strPath]) { BOOL success = [[NSFileManager defaultManager] removeItemAtPath:strPath error:&error]; if (!success) { NSLog(@"Error removing file at path: %@", error.localizedDescription); } else { NSLog(@"File removed at path: %@", error.localizedDescription); } } else { NSLog(@"file not exists"); }
检查[NSHomeDirectory() stringByAppendingPathComponent:@"tmp/output.mov"];
与[library writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) {
的outputFileURL相同
答案很简单,不能从文档目录中删除文件。 它的只读和可写。
您可以通过为tmp目录提供path来实现您的目的,然后为了保存目的将其从tmppath移至文档目录。 而已。
- AVPlayerViewController使用纯audioAVPlayer
- AVFoundation相机预览图层不起作用
- 在自定义相机层的AVFoundation中自动对焦和自动曝光
- 远程的MP3文件需要花费很多时间在迅速的ios中播放
- 知道AVCaptureSession会话预设的parsing
- SKVideoNode作为SCNSphere的纹理
- 如何使用swift监视ios上的audioinput – 示例?
- AVAssetReader读取audio,然后失败
- iOS 10.0 – 10.1:使用AVVideoCompositionCoreAnimationTool后,AVPlayerLayer不显示video,只有audio