2014-01-14 66 views
4

我開始只是一個NSString是一個.mp4文件的URL,並從這裏我想有該視頻保存到設備相機卷。看起來我只能保存.mov文件,所以我必須先轉換.mp4,但是我看到的關於此的幾篇文章沒有幫助。保存mp4視頻到設備相機卷

任何人都可以幫我完成這件事嗎?

在此先感謝...

回答

12

您可以保存MP4文件到相機膠捲只要使用supported codecs。例如:

NSURL *sourceURL = [NSURL URLWithString:@"http://path/to/video.mp4"]; 

NSURLSessionTask *download = [[NSURLSession sharedSession] downloadTaskWithURL:sourceURL completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) { 
    NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject]; 
    NSURL *tempURL = [documentsURL URLByAppendingPathComponent:[sourceURL lastPathComponent]]; 
    [[NSFileManager defaultManager] moveItemAtURL:location toURL:tempURL error:nil]; 
    UISaveVideoAtPathToSavedPhotosAlbum(tempURL.path, nil, NULL, NULL); 
}]; 

[download resume]; 

或者,在iOS 6及以上:

NSURL *sourceURL = [NSURL URLWithString:@"http://path/to/video.mp4"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:sourceURL]; 

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 
    NSURL *documentsURL = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject]; 
    NSURL *tempURL = [documentsURL URLByAppendingPathComponent:[sourceURL lastPathComponent]]; 
    [data writeToURL:tempURL atomically:YES]; 
    UISaveVideoAtPathToSavedPhotosAlbum(tempURL.path, nil, NULL, NULL); 
}]; 
+0

非常感謝你對你的投入,你的解決方案似乎在iOS的7完美地工作,但我需要使其工作在iOS 6.1+。有任何想法嗎? – SeanT

+0

您必須使用NSURLConnection或第三方庫下載文件。您仍然想將其寫入臨時文件,然後調用「UISaveVideoAtPathToSavedPhotosAlbum」。 – jonahb

+0

@SeanT,我添加了一個iOS 6的例子。 – jonahb

相關問題