//原理,还是调用UIImagePickerController控制器,设置Type为视频

#import "ViewController.h"

#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

//打开控制器

UIImagePickerController *picker=[[UIImagePickerController alloc]init];

//picker.sourceType=UIImagePickerControllerSourceTypeCamera;//设置摄像头类型 摄像头

//picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;//打开相册,获取资源,视频和图片用户拍摄的照片可以删除,

//picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;//打开相册库,用户与电脑同步的,不能删除

picker.delegate=self;

//设置媒体类型

picker.mediaTypes=[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

//显示控制器

[self presentViewController:picker animated:YES completion:nil];

}

#pragma mark UIImagePickerControllerDelegate

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

//如果是视频返回的是URL

NSURL*url=info[UIImagePickerControllerMediaURL];

//使用媒体工具 压缩

[self compressVideo:url];

//关闭控制器

[self dismissViewControllerAnimated:YES completion:nil];

}

//压缩

-(void)compressVideo:(NSURL*)url

{

//使用媒体工具(AVFoundation框架下的)

//Asset 资源 可以是图片音频视频

AVAsset *asset=[AVAsset assetWithURL:url];

//设置压缩的格式

AVAssetExportSession *session=[AVAssetExportSession exportSessionWithAsset:asset presetName:AVAssetExportPresetMediumQuality];//mediumquality:中等质量

//设置导出路径

NSString *path=[NSTemporaryDirectory() stringByAppendingPathComponent:@"needAV.mov"];

//创建文件管理类 导出失败,删除已经导出的

NSFileManager *manager=[[NSFileManager alloc]init];

//删除已经存在的

[manager removeItemAtPath:path error:NULL];

//设置到处路径

session.outputURL=[NSURL fileURLWithPath:path];

//设置输出文件的类型

session.outputFileType=AVFileTypeQuickTimeMovie;

//开辟子线程处理耗时操作

[session exportAsynchronouslyWithCompletionHandler:^{

NSLog(@"导出完成!路径:%@",path);

}];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

@end

//参考资料 http://www.cnblogs.com/wanghuaijun/p/5575255.html。

iOS 视频选择压缩的更多相关文章

  1. ios 视频/图片压缩

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  2. iOS视频硬编码技术

    iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...

  3. 浅谈iOS视频开发

     浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我们从 ...

  4. iOS视频编辑SDK

    IOS视频编辑SDK接入说明 一.名词解释 分辨率:用于计算机视频处理的图像,以水平和垂直方向上所能显示的像素数来表示分辨率.常见视频分辨率的有1080P即1920x1080,720P即1080x72 ...

  5. iOS 视频开发学习

    原文:浅谈iOS视频开发 这段时间对视频开发进行了一些了解,在这里和大家分享一下我自己觉得学习步骤和资料,希望对那些对视频感兴趣的朋友有些帮助. 一.iOS系统自带播放器 要了解iOS视频开发,首先我 ...

  6. iOS视频开发经验

    iOS视频开发经验 手机比PC的优势除了便携外,我认为最重要的就是可以快速方便的创作多媒体作品.照片分享,语音输入,视频录制,地理位置.一个成功的手机APP从产品形态上都有这其中的一项或多项,比如in ...

  7. iOS - 视频开发

    视频实质: 纯粹的视频(不包括音频)实质上就是一组帧图片,经过视频编码成为视频(video)文件再把音频(audio)文件有些还有字幕文件组装在一起成为我们看到的视频(movie)文件.1秒内出现的图 ...

  8. 最近这么火的iOS视频直播

    快速集成iOS基于RTMP的视频推流 http://www.jianshu.com/p/8ea016b2720e iOS视频直播初窥:高仿<喵播APP> http://www.jiansh ...

  9. IOS 视频分解图片、图片合成视频

    在IOS视频处理中,视频分解图片和图片合成视频是IOS视频处理中经常遇到的问题,这篇博客就这两个部分对IOS视频图像的相互转换做一下分析. (1)视频分解图片 这里视频分解图片使用的是AVAssetI ...

随机推荐

  1. ADT-bundle(Android Development Tools)环境配置

    Android开发环境有两套比较主流的:ADT-bundle和Android Studio,前者是Eclipse插件的形式进行开发,后者是Android的官方IDE. ADT环境的配置与调试:(1)安 ...

  2. DDD:Repository和UnitOfWork的生命周期问题

    UnitOfWork UnitOfWork是一种有状态的.用例级别的对象.如果不采用ORM是不会使用UnitOfWork模式的, Repository Repository是一种特殊的领域服务,因此是 ...

  3. WebService基于SoapHeader实现安全认证

    本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使 ...

  4. (C#)WinForm窗体间传值

      1.通过构造函数 特点:传值是单向的(不可以互相传值),实现简单 实现代码如下: 在窗体Form2中 int value1; string value2; public Form2 ( int v ...

  5. 怎样用C#代码知道是否已连接网络

    有时,上传数据和下载数据都需要用到网络,但是不知道程序是否已连接到网络,下面是简单测试是否已连接网络的小功能 1.在winform窗体上添加一个按钮和多选框

  6. csharp:百度语音识别

    public string API_id = "8888"; //你的ID public string API_record = null; public string API_r ...

  7. csharp: InvokeHelper

    Entity Framework https://entityframework.codeplex.com/ Enterprise Library https://entlib.codeplex.co ...

  8. Uxf框架引入Rest控制器特性

    引入Rest风格接口的特性,主要是为了适应平台化和移动化开发的需要. 移植自ThinkPHP项目的RestAction. REST(Representational State Transfer表述性 ...

  9. 混合式APP开发中中间件方案Rexsee

    发现Rexsee时,他已经一年多没有更新过了,最后版本是2012年的. 他的实现思路是通过Android自带的Java - Javascript 桥机制,在WebView中的JavaScript同Ja ...

  10. Maven仓库分类

    MAVEN仓库分类 Maven仓库分为:本地仓库+远程仓库两大类 远程仓库又分为:中央仓库+私服+其它公共远程仓库 1,在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件 2,Ma ...