2013-04-28 54 views
0

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

谢谢!

回答

0

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

+0

对不起,我应该说我已经有了,但没有看到任何返回的属性,让我知道如果视频被修剪/编辑。我已更新我的问题 – 2013-04-28 15:37:38

3

我找到了解决方案。

imagePickerController:didFinishPickingMediaWithInfo:返回一个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); 
0

你可以加载2个视频剪辑成NSData的进行比较,并使用'长度'来比较大小。剪辑的视频会更少。

+0

这不行。所选视频通常会有不同的大小,因为即使用户没有对其进行编辑,它也会被压缩。 – murat 2013-04-28 16:31:10

+0

感谢您的建议,但我找到了一个适用于我的解决方案。我已经把它写成了一个答案 – 2013-04-28 16:38:03

相关问题