0

是否可以确定用户使用 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:,我只是没有看到任何返回的属性让我知道它是否被编辑。

谢谢!

4

3 回答 3

3

我找到了解决方案。

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

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

这将获取您的两个 URL:

    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);
于 2013-04-28T16:03:17.107 回答
0

您可以将 2 个视频剪辑加载到 NSData 中进行比较,并使用“长度”来比较大小。剪辑的视频会更少。

于 2013-04-28T16:14:55.700 回答
0

You should implement imagePickerController:didFinishPickingMediaWithInfo: delegate method. The info dictionary contains some useful information about whether the image/video is edited by the user or not.

于 2013-04-28T15:30:42.700 回答