Как я могу отслеживать медиа, созданные / выбранные UIImagePickerController? - PullRequest
1 голос
/ 12 декабря 2011

Я создаю приложение для iOS, которое позволяет пользователю загружать видео из UIImagePickerController, записывая или выбирая их из Camera Roll, а также воспроизводить выбранное видео.У меня вопрос: как мне сохранить ссылку на видео, которые были выбраны таким образом?Я хочу сделать это так, чтобы, если видео все еще присутствовало на устройстве, я мог использовать локальный файл вместо потоковой передачи загруженного файла.

Когда возвращается

 imagePickerController:didFinishPickingMediaWithInfo:

, URL-адресв:

 [info objectForKey:UIImagePickerControllerMediaURL];

в формате: "file: // localhost / private / var / mobile / Applications / /tmp//trim.z2vLjx.MOV"

I 'Я считаю, что каталог / tmp / является временным и поэтому не подходит для сохранения URL-адреса для этого местоположения.

Я могу получить все видео на устройстве через ALAssetsLibrary, но потому что я неУ меня нет способа их различить, это мне не поможет.Я пытался использовать:

[result valueForProperty:ALAssetPropertyDate];

Чтобы различать видео, но мне нужен способ получения даты создания из UIImagePickerController, чтобы это было полезно.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Мне наконец-то удалось найти решение:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];

if(CFStringCompare((CFStringRef) mediaType,  kUTTypeMovie, 0) == kCFCompareEqualTo)
{
    //Dismiss the media picker view
    [picker dismissModalViewControllerAnimated:YES];

    //Get the URL of the chosen content, then get the data from that URL
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    NSData *webData = [NSData dataWithContentsOfURL:videoURL];

    //Gets the path for the URL, to allow it to be saved to the camera roll
    NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath))
    {
        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc] init];

        //The key UIImagePickerControllerReferenceURL allows you to get an ALAsset, which then allows you to get metadata (such as the date the media was created)
        [lib assetForURL:[info objectForKey:UIImagePickerControllerReferenceURL] resultBlock:^(ALAsset *asset) {
            NSLog(@"created: %@", [asset valueForProperty:ALAssetPropertyDate]);
        } failureBlock:^(NSError *error) {
            NSLog(@"error: %@", error);
        }];
    }
}

Как обычно, решение было найдено, прочитав документацию немного более тщательно. Надеюсь, это поможет кому-то еще в какой-то момент.

1 голос
/ 12 декабря 2011

Вы можете легко вести запись видео, которые у вас есть на устройстве. Либо сохраняя базу данных (которую я считаю слишком большой), либо просто файл со списком ваших видео. В этом списке вы можете иметь URL-адрес активов.

...