Как получить URL-адрес видео от ALAsset Url для загрузки видео на сервер?

Я получаю assets-library://asset/asset.mp4?id=F0D95698-C982-4723-8959-502CE595E3D1&ext=mp4 URL, когда видео выбрано с помощью ELCImagePickerController, Теперь я должен получить название видео и URL-адрес мультимедиа для загрузки этого видео на сервер, используя asiDataFormRequest,

Загрузка видео работает нормально, когда я выбираю видео с помощью ImagePickerViewControllerПрямо сейчас я должен выбрать несколько видео, поэтому я использую ELCImagePickerController, Но это дает видео URL, как указано ниже.assets-library://asset/asset.mp4?id=F0D95698-C982-4723-8959-502CE595E3D1&ext=mp4

Как я могу конвертировать этот URL в формате типа MEdia Url. Моя главная цель, чтобы загрузить это видео, используя asihttpdatafromrequest и получите этот размер, имя.

1 ответ

@KDRocks. этот код успешно выполняется для получения имени с полным путем.

-(NSString*) videoAssetURLToTempFile:(NSURL*)url
{
    NSString * surl = [url absoluteString];
    NSString * ext = [surl substringFromIndex:[surl rangeOfString:@"ext="].location + 4];
    NSTimeInterval ti = [[NSDate date]timeIntervalSinceReferenceDate];
    NSString * filename = [NSString stringWithFormat: @"%f.%@",ti,ext];
    NSString * tmpfile = [NSTemporaryDirectory() stringByAppendingPathComponent:filename];

    ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
    {
        ALAssetRepresentation * rep = [myasset defaultRepresentation];
        NSUInteger size = [rep size];
        const int bufferSize = 8192;
        NSLog(@"Writing to %@",tmpfile);
        FILE* f = fopen([tmpfile cStringUsingEncoding:1], "wb+");
        if (f == NULL) 
        {
            NSLog(@"Can not create tmp file.");
            return;
        }
        Byte * buffer = (Byte*)malloc(bufferSize);
        int read = 0, offset = 0, written = 0;
        NSError* err;
        if (size != 0) {
        do {
            read = [rep getBytes:buffer
                      fromOffset:offset
                          length:bufferSize
                           error:&err];
            written = fwrite(buffer, sizeof(char), read, f);
            offset += read;
        } while (read != 0);
        }
        fclose(f);
    };
    ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
    {
        NSLog(@"Can not get asset - %@",[myerror localizedDescription]);

    };
    if(url)
    {
        ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
        [assetslibrary assetForURL:url
                   resultBlock:resultblock
                  failureBlock:failureblock];
    }
    return tmpfile;
}
Другие вопросы по тегам