2011-09-20 2 views
1

uiimagepicker를 사용하여 비디오를 내 응용 프로그램 번들에 저장하고 있습니다. 그러나 저장 한 후 비디오의 생성 날짜가 변경됩니다. 내 요구 사항은 만든 날짜를 변경하지 않고 해당 비디오를 내 폴더에 복사하는 것입니다.변경하지 않고 uiimagepickercontroller를 사용하여 비디오 저장하기

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 

    NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL]; 
    NSData *imageData = [NSData dataWithContentsOfURL:url]; 
    NSString *path = NSHomeDirectory(); 
    NSString *img_temp_name=[[NSString stringWithFormat:@"test"] stringByAppendingString:@".mov"]; 
    NSString *full_path=[path stringByAppendingPathComponent:img_temp_name]; 

    if([imageData writeToFile:full_path atomically:YES]) { 
    } 
+0

후 일부 코드. – Gypsa

답변

3

NSFileManager를 사용하여 도움을받을 수 있습니까?

그냥 영화를 옮길 수는 없다고 생각하지만 복사하면 파일 정보가 보존됩니까?

NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL]; 
NSString *path = NSHomeDirectory(); 
NSString *img_temp_name=[[NSString stringWithFormat:@"test"] stringByAppendingString:@".mov"]; 
NSString *full_path=[path stringByAppendingPathComponent:img_temp_name]; 

NSURL *dst = [NSURL fileURLWithString:full_path]; 

NSError *error = nil; 
NSFileManager *manager = [[[NSFileManager alloc] init] autorelease]; 
BOOL success = [manager copyItemAtURL:url toURL:dst error:&error]; 

if (NO == success || error) { 
    NSLog(@"Could not copy : %@", error); 
} 
+0

내가 처럼 내 코드를 변경했다 .... 작동하지 않음 - (무효) imagePickerController : (UIImagePickerController를 *) 선택 도구 didFinishPickingMediaWithInfo을 : (NSDictionary와 *) 정보 { NSURL * URL = [정보 objectForKey : UIImagePickerControllerReferenceURL] NSString * path = NSHomeDirectory(); NSURL * dst = [NSURL fileURLWithPath : 경로]; NSError * error = nil; NSFileManager * manager = [[[NSFileManager alloc] init] autorelease]; BOOL 성공 = [관리자 copyItemAtURL : url toURL : dst 오류 : & 오류]; \t \t if (NO == success || error) { \t \t NSLog (@ "Could not copy : % @", error); \t} – pop924

+0

로그 : 오류 도메인 = NSCocoaErrorDomain 코드 = 262 "작업을 완료 할 수 없습니다 (코코아 오류 262.)" – pop924

+0

'url' 및'dst' 값은 무엇입니까? 부? – deanWombourne

0

문제는 피킹 프로세스의 일부로 비디오가 다시 인코딩된다는 것입니다. 이렇게하면 생성 날짜가 변경됩니다. 또한 정보를 얻을 수 있는지 알고 싶습니다.

0

다음은 NSData로 비디오를 가져 오는 방법입니다. 그것은 ALAssetLibrary로 사진 프레임 워크 iOS9 추천되지 않습니다 사용

IMPORTANT

The Assets Library framework is deprecated as of iOS 9.0. Instead, use the Photos framework instead, which in iOS 8.0 and later provides more features and better performance for working with a user’s photo library. For more information, see Photos Framework Reference.

import Photos 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    self.dismissViewControllerAnimated(true, completion: nil) 

    if let referenceURL = info[UIImagePickerControllerReferenceURL] as? NSURL { 
     let fetchResult = PHAsset.fetchAssetsWithALAssetURLs([referenceURL], options: nil) 
     if let phAsset = fetchResult.firstObject as? PHAsset { 
      PHImageManager.defaultManager().requestAVAssetForVideo(phAsset, options: PHVideoRequestOptions(), resultHandler: { (asset, audioMix, info) -> Void in 
       if let asset = asset as? AVURLAsset { 
        let videoData = NSData(contentsOfURL: asset.URL) 

        // optionally, write the video to the temp directory 
        let videoPath = NSTemporaryDirectory() + "tmpMovie.MOV" 
        let videoURL = NSURL(fileURLWithPath: videoPath) 
        let writeResult = videoData?.writeToURL(videoURL, atomically: true) 

        if let writeResult = writeResult where writeResult { 
         print("success") 
        } 
        else { 
         print("failure") 
        } 
       } 
      }) 
     } 
    } 
} 
관련 문제