我有一个通过 MPMovieplayer 播放视频剪辑的应用程序。这些剪辑是 mp4 格式,一切正常。我想拍摄相同的剪辑并将其保存到相册中。如果我通过 iTunes 将视频从计算机手动同步到手机,则此方法有效。它似乎对视频文件进行转码并将其存储为 .MOV 格式。
但是,当我尝试通过代码在应用程序中保存视频时,出现视频格式错误。所以我的问题是如何将我的视频保存在相册中?如果 mp4 无法做到这一点,我该如何转码(在应用程序中)为 .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];
最佳答案
您的 contentURL 是文件路径 URL 还是 Web URL?对于 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 ),则它们应该可以工作。
如果在完全确定文件路径 URL 正确后,视频在 videoAtPathIsCompatibleWithSavedPhotosAlbum:
上仍然没有给出任何响应,则您需要使用 AVAssetExportSession (使用 AVAssetExportPresetLowQuality
、AVAssetExportPresetMediumQuality
或 AVAssetExportPresetHighestQuality
)获取适合设备的文件,然后将其保存到相册中。
关于iphone - 将 MP4 保存到 iPhone 相册中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706911/