iPhone: Как получить двоичный файл видео при использовании перечисления ALAssetsLibrary?

Я пытаюсь получить доступ к галерее фотоальбомов iPhone через ALAssetsLibrary. Я успешно получаю доступ к фотоальбому и получаю URL ресурса каждого изображения на устройстве. Мое тестирование, после получения всех изображений, загрузка на мой веб-сервер также работает хорошо. Я также пытаюсь получить видеофайл и выполнить тот же процесс, т.е. загрузить видеофайл на мой сервер. Вот проблема, я не знаю, как получить доступ к двоичному указателю видео, как, например, как я сделал для изображений, используя UIImageJPEGRepresentation, и отправить в мой HTTP-код?

-(void) assetsEmumeration {


void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
        if(result != NULL) {
            NSLog(@"See Asset: %@", result);
            [assetArray addObject:result];
            // get image url
            NSURL *url = [[result defaultRepresentation] url];
            NSString *urlInStr = [NSString stringWithFormat:@"%@",url];

            NSData *imgData = UIImageJPEGRepresentation ([UIImage imageWithCGImage:[result thumbnail]], 90);

            HttpUpload (imgData);
        }
    };

    void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) =  ^(ALAssetsGroup *group, BOOL *stop) 
    {

        if(group != nil) {
            [group enumerateAssetsUsingBlock:assetEnumerator];
        }
        [self.activity stopAnimating];
        [self.activity setHidden:YES];
    };
    assetLibrary = [[ALAssetsLibrary alloc] init];
    [assetLibrary enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
                           usingBlock:assetGroupEnumerator
                         failureBlock: ^(NSError *error) {
                             NSLog(@"Failure: %@", [error localizedDescription]);
                         }];
    assetArray = [[NSMutableArray array] retain]; 

}

Может кто-то сталкивался с этим, чтобы решить, пожалуйста, направьте меня!

1 ответ

Решение

Вы можете получить необработанные байты, используя ALAssetRepresentation's getBytes:fromOffset:length:error: метод, что-то вроде этого:

uint8_t *bytes = malloc([representation size]);
NSError *error = nil;
NSUInteger length = [representation getBytes:bytes fromOffset:0 length:[representation size] error:&error];
Другие вопросы по тегам