Getting video from ALAsset

前端 未结 6 1702
野趣味
野趣味 2020-12-01 03:06

Using the new asset library framework available in iOS 4 i see that I can get the url for a given video using the UIImagePickerControllerReferenceURL. The url returned is in

6条回答
  •  无人及你
    2020-12-01 04:04

    I use the following category on ALAsset:

    static const NSUInteger BufferSize = 1024*1024;
    
    @implementation ALAsset (Export)
    
    - (BOOL) exportDataToURL: (NSURL*) fileURL error: (NSError**) error
    {
        [[NSFileManager defaultManager] createFileAtPath:[fileURL path] contents:nil attributes:nil];
        NSFileHandle *handle = [NSFileHandle fileHandleForWritingToURL:fileURL error:error];
        if (!handle) {
            return NO;
        }
    
        ALAssetRepresentation *rep = [self defaultRepresentation];
        uint8_t *buffer = calloc(BufferSize, sizeof(*buffer));
        NSUInteger offset = 0, bytesRead = 0;
    
        do {
            @try {
                bytesRead = [rep getBytes:buffer fromOffset:offset length:BufferSize error:error];
                [handle writeData:[NSData dataWithBytesNoCopy:buffer length:bytesRead freeWhenDone:NO]];
                offset += bytesRead;
            } @catch (NSException *exception) {
                free(buffer);
                return NO;
            }
        } while (bytesRead > 0);
    
        free(buffer);
        return YES;
    }
    
    @end
    

提交回复
热议问题