是否可以确定用户使用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 :(得分: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'来比较大小。剪辑的视频会少一些。