将MP4保存到iPhone相册中

时间:2011-04-18 17:59:28

标签: iphone video video-encoding

我有一个通过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];

1 个答案:

答案 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:上显示无响应,则您需要使用AVAssetExportSessionAVAssetExportPresetLowQuality,{{ 1}}或AVAssetExportPresetMediumQuality)获取适合设备的文件,然后您可以将其保存到相册。