我有一个通过MPMovieplayer播放视频片段的应用。这些剪辑是mp4格式,一切都很花哨。我想拍摄相同的剪辑并将其保存到相册中。如果我通过iTunes手动将视频从计算机同步到手机,则此方法有效。它似乎对视频文件进行转码并将其存储为.MOV格式。
但是,当我尝试通过代码在应用程序中保存视频时,出现视频格式错误。所以我的问题是如何让我的视频保存在相册中?如果mp4无法做到这一点,我如何将(在app中)转码为.MOV?
以下是代码:
ALAssetsLibrary* library = [[ALAssetsLibrary alloc]init];
if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:moviePlayerController.contentURL])
{
NSURL *clipURl = moviePlayerController.contentURL;
[library writeVideoAtPathToSavedPhotosAlbum:clipURl completionBlock:^(NSURL *assetURL, NSError *error)
{
if (error)
[ErrorAlertView showError:error];
else [ErrorAlertView showErrorTitle:@"Success" message:@"Your video clip is saved"];
}];
}
[library release];
答案 0 :(得分:2)
您的contentURL是文件路径网址还是网址?对于writeVideoAtPathToSavedPhotosAlbum
方法,在我的测试中,您实际上需要以这种方式创建文件路径URL(例如):
NSString *pathString = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"mp4"];
NSString *pathURL = [NSURL fileURLWithPath:pathString isDirectory:NO];
这意味着如果您使用的是网址,则需要先从网上下载电影。我建议ASIHTTPRequest,使用setDownloadDestinationPath:
方法设置下载目录。
一般情况下,如果mp4文件是右侧(视网膜,非视网膜,iPad)设备(see my tests of supported video files here)的正确分辨率,则该文件应该有效。
如果在确定文件路径网址正确后,视频仍然在videoAtPathIsCompatibleWithSavedPhotosAlbum:
上显示无响应,则您需要使用AVAssetExportSession(AVAssetExportPresetLowQuality
,{{ 1}}或AVAssetExportPresetMediumQuality
)获取适合设备的文件,然后您可以将其保存到相册。