Xcode 从UIImagePickerController获取修剪的视频文件大小
使用Xcode 从UIImagePickerController获取修剪的视频文件大小,xcode,set,uiimagepickercontroller,trim,alasset,Xcode,Set,Uiimagepickercontroller,Trim,Alasset,使用UIImagePickerController选择视频后,我可以从其 [defaultRepresentation size] 但是,如果启用选择器的修剪选项,[defaultRepresentation size]将返回与原始未修剪视频相同的文件大小 有没有人有办法检索经过修剪的视频的文件大小 非常感谢 是的,我应该包括一些代码。我很难过 我试图实现的是让用户选择并修剪现有视频,然后上传修剪后的版本。我想有修剪版本的文件大小,以便在上传过程中填充进度栏。我还想修剪版本的持续时间 调用方法是
UIImagePickerController
选择视频后,我可以从其
[defaultRepresentation size]
但是,如果启用选择器的修剪选项,
[defaultRepresentation size]
将返回与原始未修剪视频相同的文件大小
有没有人有办法检索经过修剪的视频的文件大小
非常感谢
是的,我应该包括一些代码。我很难过
我试图实现的是让用户选择并修剪现有视频,然后上传修剪后的版本。我想有修剪版本的文件大小,以便在上传过程中填充进度栏。我还想修剪版本的持续时间
调用方法是:
-(IBAction)selectVideoPressed:(id)sender
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
{
UIImagePickerController *videoPicker = [[UIImagePickerController alloc] init];
[videoPicker setDelegate: self];
[videoPicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[videoPicker setMediaTypes:[NSArray arrayWithObjects:(NSString *)kUTTypeMovie, nil]];
[videoPicker setVideoQuality:vvi.videoQuality];
[videoPicker setAllowsEditing:YES];
[videoPicker setModalTransitionStyle:gTransitionStyle];
[self presentViewController:videoPicker animated:YES completion:Nil];
}
}
用户修剪并按下“选择”按钮后激发的委托方法是:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[vvi setRawSourceVideoFileURL:[info objectForKey:UIImagePickerControllerMediaURL]];
[vvi setSourceVideoURL:[info objectForKey:UIImagePickerControllerReferenceURL]];
ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
ALAssetsLibraryAssetForURLResultBlock resultBlock = ^(ALAsset *myAsset)
{
// Video metrics info.
[vvi setVideoDuration:[myAsset valueForProperty:ALAssetPropertyDuration]];
[vvi setVideoOrientation:[myAsset valueForProperty:ALAssetPropertyOrientation]];
NSDate *videoDate = [myAsset valueForProperty:ALAssetPropertyDate];
[vvi setVideoDateString:[videoDate descriptionWithLocale:[NSLocale currentLocale]]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:gShortDateFormat];
[vvi setShortVideoDateString:[dateFormatter stringFromDate:videoDate]];
ALAssetRepresentation *myAssetRepresentation = [myAsset defaultRepresentation];
[vvi setVideoAssetSize:[NSNumber numberWithLongLong:[myAssetRepresentation size]]];
NSLog(@"Duration:%@", vvi.videoDuration);
NSLog(@"Size:%@", vvi.videoAssetSize);
};
....
vvi
只是我自己的自定义类。
两个NSLog返回原始未剪辑视频的持续时间和大小。使用[vvi setRawSourceVideoFileURL:[info-objectForKey:UIImagePickerControllerMediaURL]]指向的视频代码>返回正确修剪的视频
非常感谢 类似的内容应该注意查找从UIImagePickerController返回的选定图像或视频的文件大小
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSURL *videoUrl=(NSURL*)[info objectForKey:UIImagePickerControllerMediaURL];
//Error Container
NSError *attributesError;
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[videoUrl path] error:&attributesError];
NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
long long fileSize = [fileSizeNumber longLongValue];
}
您为实现此目的而尝试的代码片段是必需的。@hpiOSCoder是的,我想代码会有所帮助……其他地方也曾询问过此问题,但这是最完整的答案!我们能为这个plz提供swift 3版本吗