使用UISaveVideoAtPathToSavedPhotosAlbum

时间:2011-08-04 16:41:46

标签: iphone objective-c

在模拟器上UISaveVideoAtPathToSavedPhotosAlbum无法将电影保存到相册中,除非相册打开。它可以?如何检查Photo Album是否正在运行并从我的应用程序中静默运行?有可能在真正的iPhone / Pad上它已经运行但以防万一......?

我的电影在我的应用程序的资源中。我想把它复制到相册。以下是我在AppDelegate.m中实现的方法:

 -(void)downloadVideo:(NSString *)sampleMoviePath{
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(sampleMoviePath)){
UISaveVideoAtPathToSavedPhotosAlbum(sampleMoviePath, self, @selector(video:didFinishSavingWithError: contextInfo:), sampleMoviePath);
}
}

-(void)video:(NSString *)videoPath didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo{
NSLog(@"Finished with error: %@", error);
}

我称之为:

NSString *sampleMediaPathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"movie_01.m4v"];
[self downloadVideo:sampleMediaPathFromApp];
  

我得到的错误消息:   已完成保存视频但出错:错误域= ALAssetsLibraryErrorDomain代码= -3310“数据不可用”UserInfo = 0x564ab10 {NSLocalizedRecoverySuggestion =启动照片应用程序,NSLocalizedDescription =数据不可用}

当然,如果我打开相册,然后运行我的应用程序,它可以正常工作。

非常感谢您的投入。 BG

---- ----编辑

我编辑了代码,因此它更具可读性 - 抱歉,我没有答案,但这是一个很好的问题 - 我不得不把它放在这里,否则我无法提交更改。 --jwk82

1 个答案:

答案 0 :(得分:-2)

您可以将其另存为..

ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
[assetLibrary writeVideoAtPathToSavedPhotosAlbum:url completionBlock:^(NSURL *assetURL, NSError *error){