ALAssetsLibrary从相册 获取视频

/// 取视频

-(void)getAllVideo

{

library = [[ALAssetsLibrary alloc] init];

//监测是否可用

ALAssetsLibraryAccessFailureBlock failureblock =

^(NSError *myerror)

{

NSLog(@"相册访问失败 =%@", [myerror localizedDescription]);

if ([myerror.localizedDescription rangeOfString:@"Global denied access"].location!=NSNotFound) {

NSLog(@"无法访问相册.请在‘设置->定位服务‘设置为打开状态.");

}else{

NSLog(@"相册访问失败.");

}

   /// 不允许访问的UI提示

[self createNotAllowView];

return ;

};

mutableArray =[[NSMutableArray alloc]init];

ALAssetsLibraryGroupsEnumerationResultsBlock

libraryGroupsEnumeration = ^(ALAssetsGroup* group,BOOL* stop){

if (group != nil)

{

    /// 只取视频

[group setAssetsFilter:[ALAssetsFilter allVideos]];

[group enumerateAssetsWithOptions:NSEnumerationConcurrent usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {

if (result) {

[mutableArray addObject:result];

}

}];

}

else

{

NSLog(@"%ld",mutableArray.count);

[_collectionView reloadData];

}

};

[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos

usingBlock:libraryGroupsEnumeration

failureBlock:failureblock];

}

/// 写入本地

-(void)handleWrittenFile:(ALAsset*) videoAsset

{

if (!videoAsset) {

NSLog(@"nil");

return;

}

  /// 写入本地路径

NSString *fileName = [self getVideoMergeFilePathString];

ALAssetRepresentation *represent = [videoAsset defaultRepresentation];

NSUInteger size = [represent size];

  /// 开辟65636大小的内存 一次读取和写入

const int bufferSize = 65636;

NSLog(@"written to : %@", fileName);

FILE *fileOpen = fopen([fileName cStringUsingEncoding:1], "wb+");

if (fileOpen == NULL) {

return;

}

Byte *buffer =(Byte*)malloc(bufferSize);

NSUInteger read =0, offset = 0;

NSError *error;

if (size != 0) {

do {

read = [represent getBytes:buffer

fromOffset:offset

length:bufferSize

error:&error];

fwrite(buffer, sizeof(char), read, fileOpen);

offset += read;

} while (read != 0);

}

free(buffer);

buffer = NULL;

fclose(fileOpen);

fileOpen= NULL;

}

时间: 2024-10-12 09:41:45

ALAssetsLibrary从相册 获取视频的相关文章

iOS 使用AFN 进行单图和多图上传 摄像头/相册获取图片,压缩图片

图片上传时必要将图片进行压缩,不然会上传失败 首先是同系统相册选择图片和视频.iOS系统自带有UIImagePickerController,可以选择或拍摄图片视频,但是最大的问题是只支持单选,由于项目要求需要支持多选,只能自己自定义.获取系统图库的框架有两个,一个是ALAssetsLibrary,兼容iOS低版本,但是在iOS9中是不建议使用的:另一个是PHAsset,但最低要求iOS8以上.兼容到iOS7,可以选择了ALAssetsLibrary 现在我们先说选择一张图的情况 一.单图多图上

iOS 根据图片URL从本地相册获取图片

最近做一个聊天的项目,需要发送图片后读取本地图片显示到列表里.刚开始的时候,天真的认为可以用SDWebImage直接加载,然后并不能行. 于是在网上搜了搜,如何根据从相册获取的UIImagePickerControllerReferenceURL读取图片, 代码如下: #import "ViewController.h" #import <AssetsLibrary/AssetsLibrary.h> @interface ViewController ()<UINav

UIImagePickerController相册选择视频

UIImagePickerController *picker = [[UIImagePickerController alloc] init]; //资源类型为视频库 NSString *requiredMediaType1 = ( NSString *)kUTTypeMovie; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //UIImagePickerControllerSourceTypeSaved

android 从相册获取图片

从相册获取图片 在android应用中是运用得很多的一项技术了 其实很简单 使用intent就可以了 刚敲了一个dome  睡觉之前还是分享一下把 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match

iOS 从相机或相册获取图片并裁剪

/load user image - (void)UesrImageClicked { UIActionSheet *sheet; // 判断是否支持相机 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { sheet = [[UIActionSheet alloc] initWithTitle:@"选择图像" delegate:self cancel

Android -- 获取视频第一帧缩略图

干货 从API 8开始,新增了一个类: android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理. public static Bitmap createVideoThumbnail (String filePath, int kind) 第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND. 第一种文档上说大小

C#:获取视频某一帧的缩略图

读取方式:使用ffmpeg读取,所以需要先下载ffmpeg.网上资源有很多. 原理是通过ffmpeg执行一条命令获取视频某一帧的缩略图. 首先,需要获取视频的帧高度和帧宽度,这样获取的缩略图才不会变形. 获取视频的帧高度和帧宽度可以http://www.zhoumy.cn/?p=35通过查看. 获取到视频的帧高度和帧宽度后,还需要获取缩略图的高度和宽度,这是按比例缩放的. 比如你存放缩略图的区域的最大宽度和最大高度是100,缩略图的高度也应缩放到对应大小. 接下来通过执行一条命令就可以获取到视频

android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取

打开系统相册获取图片并截取,代码相对简单 1 Intent intent = new Intent(Intent.ACTION_GET_CONTENT,null); 2 intent.setType("image/*"); 3 intent.putExtra("crop", "true"); 4 5 //WIDTH 和 HEIGHT指的是截取框的宽高比例,如设WIDTH = 1,HEIGHT = 1,截取框就为正方形 6 intent.putEx

Java获取视频的大小、时长

前端上传视频之后,根据上传的视频文件获取视频的大小和时长 1.获取视频时长 private String ReadVideoTime(File source) { Encoder encoder = new Encoder(); String length = ""; try { MultimediaInfo m = encoder.getInfo(source); long ls = m.getDuration()/1000; int hour = (int) (ls/3600);