UIImagePickerController - 确定视频是否被剪裁或编辑

时间:2013-04-28 15:24:42

标签: iphone ios objective-c uiimagepickercontroller

是否可以确定用户使用UIImagePickerController选择的视频是否已被裁剪?

我的应用允许用户相互发送短视频。如果他们在应用程序中录制视频,我会将其副本保存回他们的画廊,以便下次可以轻松发送..我想对修剪过的视频做同样的事情,但不要修剪视频,因为这只会导致重复。

我正在使用此代码:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
[imagePicker setVideoQuality:UIImagePickerControllerQualityType640x480];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[imagePicker setVideoMaximumDuration:6];
imagePicker.allowsEditing = YES;

[self presentModalViewController:imagePicker animated:YES];

我已经尝试使用NSURL返回以确定视频是否被修剪,但遗憾的是,即使是未修剪的视频也会像这样回来:" trim.DBOnmL.MOV"通过浏览文档,我找不到任何有用的属性。

- 编辑

我已经实现了imagePickerController:didFinishPickingMediaWithInfo:,我只是没有看到任何返回的属性,让我知道它是否被编辑过。

谢谢!

3 个答案:

答案 0 :(得分:3)

我找到了解决方案。

imagePickerController:didFinishPickingMediaWithInfo:返回原始视频资产和修剪过的(即使未修剪的)视频资源的网址。

您可以简单地获取原始和修剪(即使未修剪)视频的持续时间并比较它们,如果不同,则进行修剪。

这会获取您的两个网址:

    NSURL *originalVideoAssetUrl = [info objectForKey:UIImagePickerControllerReferenceURL];
    NSURL *videoAssetUrl = [info objectForKey:UIImagePickerControllerMediaURL];

..这可以获得资产的持续时间

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:assetUrl
                                                 options:[NSDictionary dictionaryWithObjectsAndKeys:
                                                          [NSNumber numberWithBool:YES],
                                                          AVURLAssetPreferPreciseDurationAndTimingKey,
                                                          nil]];

    NSTimeInterval durationInSeconds = 0.0;
    if (asset) 
        durationInSeconds = CMTimeGetSeconds(asset.duration);

答案 1 :(得分:0)

您应该实施imagePickerController:didFinishPickingMediaWithInfo:委托方法。信息词典包含一些有关用户是否编辑图像/视频的有用信息。

答案 2 :(得分:0)

您可以将2个视频片段加载到NSData进行比较,并使用'length'来比较大小。剪辑的视频会少一些。