2016-06-24 2 views
1

Я использую UIImagePickerController для редактирования видео и сократить его, создать его так:Cant получить начала и время окончания редактирования в UIImagePickerController didFinishPickingMediaWithInfo:

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
imagePicker.delegate = self; 
[imagePicker setVideoQuality:UIImagePickerControllerQualityType640x480]; 
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
imagePicker.mediaTypes = @[(__bridge NSString *)kUTTypeMovie, (__bridge NSString *)kUTTypeVideo, (__bridge NSString *)kUTTypeMPEG4]; 
imagePicker.allowsEditing = YES; 
[self.navigationController presentViewController:imagePicker animated:YES completion:nil]; 

, но, к сожалению, в методе делегата, который называется я не могу получить старт и время окончания редактирования - для сохранения отредактированного видео:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info { 

    [picker dismissViewControllerAnimated:YES completion:^{ 

    }]; 

    NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; 
    if ([type isEqualToString:(NSString *)kUTTypeVideo] || 
     [type isEqualToString:(NSString *)kUTTypeMovie]) { // movie != video 
     NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 


     NSNumber *start = [info objectForKey:@"_UIImagePickerControllerVideoEditingStart"]; 
     NSNumber *end = [info objectForKey:@"_UIImagePickerControllerVideoEditingEnd"]; 

} 

В моем случае начало и конец - ноль. Я не знаю, как получить эту информацию. Не могли бы вы посоветовать, как это получить? Заранее благодарю за помощь.

ответ

1

Я просто проверить свой код и запустить, и я обнаружил, что _UIImagePickerControllerVideoEditingStart и _UIImagePickerControllerVideoEditingEnd возвращение только захватил видео с камеры, но если вы выберите видео из вашего PhotoLibrary вы не получили этого два ключа в информационном словаре:

Если вы использует imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; то вы получите следующую Информацию о словаре журнала:

UIImagePickerControllerMediaType = "public.movie"; 
    UIImagePickerControllerMediaURL = "file:///private/var/mobile/Containers/Data/Application/BCBE6A30-1A92-41BB-8734-BFF052E416DE/tmp/trim.59737F15-FC2A-4EB7-89AE-DF3831089657.MOV"; 
    UIImagePickerControllerReferenceURL = "assets-library://asset/asset.MOV?id=87E3E50A-1DBF-449F-8BE3-AB36E718D82C&ext=MOV"; 

Если вы используете imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;, то вы получите следующую Информацию о словаре журнала:

UIImagePickerControllerMediaType = "public.movie"; 
    UIImagePickerControllerMediaURL = "file:///private/var/mobile/Containers/Data/Application/611D33A4-61F4-4CD0-934D-C0EFF82B75AC/tmp/capture/capturedvideo.MOV"; 
    "_UIImagePickerControllerVideoEditingEnd" = "2.360877976190476"; 
    "_UIImagePickerControllerVideoEditingStart" = "1.360505952380952"; 

Таким образом, в конце с UIImagePickerControllerSourceTypePhotoLibrary UIImagePickerController не предоставляет ключ _UIImagePickerControllerVideoEditingStart и _UIImagePickerControllerVideoEditingEnd. поэтому вы можете получить его продолжительность, используя AVURLAsset, как следующий код, предполагающий, что время начала - 0, а время окончания - полная.

AVURLAsset *Asset = [AVURLAsset assetWithURL:videoURL]; 
CMTime duration = [Asset duration]; 
int fullduration = ceil(duration.value/duration.timescale); 
+1

большое спасибо !!! Да, я понял, спасибо за объяснение. Мне пришлось преобразовать обрезанное видео в аудиофайл - так что, наконец, я использовал UIImagePickerControllerMediaURL - и преобразовал его в аудио. Еще раз спасибо !!! – Melany

+0

, кстати, вы знаете, есть ли возможность использовать UiImagePickerController - без входа в библиотеку - прямо прямо в выбранное видео? – Melany

+0

Да, вы можете использовать 'ALAssetsLibrary', что вам не нужно использовать' UiImagePickerController', вам нужно создать свой собственный интерфейс для этой проверки: http://stackoverflow.com/questions/17585908/how-can-i-get-the- list-of-all-video-files-from-library-in-ios-sdk –

Смежные вопросы