`
bengan
  • 浏览: 204787 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

UIVideoEditorController 使用

阅读更多
概述
不能定制界面,不可派生子类。
使用步骤:
检查制定源是否可用. isSourceTypeAvailable:方法.
检查可用媒体(视频还是只能是图片) availableMediaTypesForSourceType:方法.
设置界面媒体属性 mediaTypes property.
显示界面使用 presentViewController:animated:completion: 方法.iPad中是 popover形式. 需要确保sourceType有效.
相关操作,移除视图.
有相关代理,有闪光灯支持.
对于视频有10分钟限制,但是可以通过videoMaximumDuration属性更改。可以使用默认的或专用的 UIVideoEditorController 来编辑视频.
如果向创建一个完全自定义界面的image picker 来浏览图片, 使用  Assets Library Framework Reference中的类. (AV Foundation Programming Guide 中的  “Media Capture and Access to Camera”  )

设置源
+ availableMediaTypesForSourceType: // 指定源可用的媒体种类
+ isSourceTypeAvailable: // 指定源是否在设备上可用
  sourceType 
// 运行相关接口前需要指明源类型.必须有效,否则抛出异常. picker已经显示的时候改变这个值,picker会相应改变来适应.默认 UIImagePickerControllerSourceTypePhotoLibrary.
设置picker属性
  allowsEditing  //是否可编辑
  delegate 
  mediaTypes 
// 指示picker中显示的媒体类型.设置每种类型之前应用availableMediaTypesForSourceType:检查一下.如果为空或者array中类型都不可用,会发生异常.默认 kUTTypeImage, 只能显示图片.
  allowsImageEditing  //propertyDeprecated in iOS 3.1
video选取参数
  videoQuality  // 视频拍摄选取时的编码质量.只有mediaTypes包含kUTTypeMovie时有效.
  videoMaximumDuration  // 秒,video最大记录时间,默认10分钟.只用当mediaTypes包含kUTTypeMovie时有效.
自定义界面
  showsCameraControls 
// 指示 picker 是否显示默认的camera controls.默认是YES,设置成NO隐藏默认的controls来使用自定义的overlay view.(从而可以实现多选而不是选一张picker就dismiss了).只有 UIImagePickerControllerSourceTypeCamera 源有效,否则NSInvalidArgumentException异常.
  cameraOverlayView 
//自定义的用于显示在picker之上的view.只有当源是UIImagePickerControllerSourceTypeCamera 时有效. 其他时候使用抛出NSInvalidArgumentException异常.
  cameraViewTransform 
//预先动画.只影响预先图像,对自定义的overlay view和默认的picker无效.只用当picker的源是 UIImagePickerControllerSourceTypeCamera 时有效,否则NSInvalidArgumentException异常.
选取媒体
– takePicture
// 使用摄像头选取一个图片。自定义overlay可以多选。已经有图片正在选取是调用无效,必须要等delegate收到 imagePickerController:didFinishPickingMediaWithInfo: 消息后才能再次选取。非 UIImagePickerControllerSourceTypeCamera 源会导致异常。
– startVideoCapture
/*
开始视频选取。返回NO可能是
-已经开始选取视频
-设备不支持
-设备空间不足
默认一次只能选取一个,自定义overlay 可以多选。
有视频已经在选取了时调用这个无效.需要先调用stopVideoCapture,等 delegate 收到 imagePickerController:didFinishPickingMediaWithInfo: 消息,才能开始选取其他的.
非UIImagePickerControllerSourceTypeCamera源调用会抛出 NSInvalidArgumentException 异常.
更多功能,见 AV Foundation framework.
*/
– stopVideoCapture
// 结束视频选取,之后系统调用delegate的 imagePickerController:didFinishPickingMediaWithInfo:方法。
设置摄像头
  cameraDevice  // 使用的镜头(默认后置的)
+ isCameraDeviceAvailable: // 摄像设备是否可用.
+ availableCaptureModesForCameraDevice: // 设备可用的选取模式
  cameraCaptureMode  // 相机捕获模式
  cameraFlashMode  // 闪光灯模式(默认自动)
+ isFlashAvailableForCameraDevice: // 是否有闪光能力
相关结构
UIImagePickerControllerSourceType

enum {
   UIImagePickerControllerSourceTypePhotoLibrary,// 设备的图片库
   UIImagePickerControllerSourceTypeCamera,// 设备的摄像头
   UIImagePickerControllerSourceTypeSavedPhotosAlbum // 保存的图像
};

typedef NSUInteger UIImagePickerControllerSourceType;

UIImagePickerControllerQualityType

//Video quality settings for movies recorded with the built-in camera, or transcoded by displaying in the image picker.

enum {
   UIImagePickerControllerQualityTypeHigh            = 0,
   UIImagePickerControllerQualityTypeMedium          = 1,  // default value
   UIImagePickerControllerQualityTypeLow             = 2,
   UIImagePickerControllerQualityType640x480         = 3,
   UIImagePickerControllerQualityTypeIFrame1280x720  = 4,
   UIImagePickerControllerQualityTypeIFrame960x540   = 5
};

typedef NSUInteger UIImagePickerControllerQualityType;

UIImagePickerControllerCameraDevice

enum {
   UIImagePickerControllerCameraDeviceRear,
   UIImagePickerControllerCameraDeviceFront
};

typedef NSUInteger UIImagePickerControllerCameraDevice;

UIImagePickerControllerCameraCaptureMode

//The category of media for the camera to capture.

enum {
   UIImagePickerControllerCameraCaptureModePhoto,
   UIImagePickerControllerCameraCaptureModeVideo
};

typedef NSUInteger UIImagePickerControllerCameraCaptureMode;

UIImagePickerControllerCameraFlashMode
//The flash mode to use with the active camera.

enum {
   UIImagePickerControllerCameraFlashModeOff  = -1,
   UIImagePickerControllerCameraFlashModeAuto = 0,
   UIImagePickerControllerCameraFlashModeOn   = 1
};

typedef NSInteger UIImagePickerControllerCameraFlashMode;

相关方法确定是否有效 isFlashAvailableForCameraDevice: .

UIImagePickerControllerDelegate
使用 UIImageWriteToSavedPhotosAlbum 保存图像, UISaveVideoAtPathToSavedPhotosAlbum 保存视频. 4.0后使用 writeImageToSavedPhotosAlbum:metadata:completionBlock: 保存元数据.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
//包含选择的图片或者一个视频的URL,详见“Editing Information Keys.”
//如果是设置可编辑属性,那么picker会预显示选中的媒体,编辑后的与初始的都会保存在info中.
– imagePickerControllerDidCancel:
– imagePickerController:didFinishPickingImage:editingInfo://Deprecated in iOS 3.0

Editing Information Keys
NSString *const UIImagePickerControllerMediaType;// 媒体类型
NSString *const UIImagePickerControllerOriginalImage;// 原始未编辑的图像
NSString *const UIImagePickerControllerEditedImage;// 编辑后的图像
NSString *const UIImagePickerControllerCropRect;// 源图像可编辑(有效?)区域
NSString *const UIImagePickerControllerMediaURL;// 视频的路径
NSString *const UIImagePickerControllerReferenceURL;// 原始选择项的URL
NSString *const UIImagePickerControllerMediaMetadata;// 只有在使用摄像头并且是图像类型的时候有效.包含选择图像信息的字典类型

下面代码展示了一些基本操作,由一个按钮事件开始进入picker
-(void) pick
{
    [imagePicker takePicture];
}

// 按钮事件
- (IBAction)press:(id)sender {
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePicker.showsCameraControls = NO;
   
    // 自定义界面开始>>>>>>>>>>>>>>
    UIView* iview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    iview.backgroundColor = [UIColor redColor];
    UIButton* button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    button.backgroundColor = [UIColor blueColor];
    [button addTarget:self action:@selector(pick) forControlEvents:UIControlEventTouchUpInside];
    [iview addSubview:button];
   

    CGRect newFrame = CGRectMake(0.0,436,320,44);

    iview.frame = newFrame;
    imagePicker.cameraOverlayView =iview;
    // <<<<<<<<<<<<<<<<<
   
    [self presentModalViewController:imagePicker animated:YES];
}

// 图片保存回调
- (void)               image: (UIImage *) image
    didFinishSavingWithError: (NSError *) error
                 contextInfo: (void *) contextInfo
{
    myImageView.image = image;
    NSLog(@"%@",error);
}

// 视频保存回调
- (void)               video: (NSString *) videoPath
    didFinishSavingWithError: (NSError *) error
                 contextInfo: (void *) contextInfo
{
    NSLog(@"%@",videoPath);
    NSLog(@"%@",error);
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // 图片类型
    if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeImage]) {
        UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
        // 保存图片
        UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    }
    // 视频类型 kut什么的定义需要 MobileCoreServices.framework 支持
    else if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeMovie]) {
    {
        NSString* path = [[info objectForKey:UIImagePickerControllerMediaURL] path];
        // 保存视频
        UISaveVideoAtPathToSavedPhotosAlbum(path, self, @selector(video:didFinishSavingWithError:contextInfo:), nil);       
    }
    // 如果想之后立刻调用UIVideoEditor,animated不能是YES。最好的还是dismiss结束后在调用editor。
    [picker dismissModalViewControllerAnimated:YES];
}

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [picker dismissModalViewControllerAnimated:YES];
}
官方也有相关例子
http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/CameraAndPhotoLib_TopicsForIOS/Introduction/Introduction.html
分享到:
评论

相关推荐

    视频长度裁切.zip

    在这个“视频长度裁切.zip”压缩包中,包含的是一个用于裁剪视频长度的代码示例,使用Objective-C(简称OC)编程语言编写,专为iOS应用程序设计。Objective-C是苹果公司为Mac OS X和iOS操作系统开发的主要编程语言,...

    NSObject树-UI1

    `UIVideoEditorController`则用于编辑视频。 `UIToolbar`和`UITabBar`是两种常见的底部导航元素,前者通常位于界面底部,提供多个工具按钮;后者用于在多个选项间切换,常见于底部标签栏。`UITextView`和`...

    遥感目标检测 NWPU VHR-10 目标检测数据集.zip

    NWPU VHR-10 数据集是仅用于研究目的公开可用的 10 类地理空间目标检测数据集。 NWPU VHR-10 数据集是仅用于研究目的公开可用的 10 类地理空间目标检测数据集。这十类物体分别是飞机、轮船、储罐、棒球钻石、 网球场、篮球场、地面田径场、港口、桥梁和车辆。该数据集总共包含 800 从 Google Earth 和 Vaihingen 数据集裁剪的超高分辨率 (VHR) 遥感图像 然后由专家手动注释。 引用格式 当您全部或部分使用此数据集时,请引用以下论文: Gong Cheng, Junwei Han, Peicheng Zhou, Lei Guo. Multi-class geospatial object detection and geographic image classification based on collection of part detectors. ISPRS Journal of Photogrammetry and Remote Sensing, 98: 119-132, 2014. Gong Cheng, Junwei Han.

    postgis-bundle-pg96x64-setup-3.2.3-1.exe

    postgis-bundle-pg96x64-setup-3.2.3-1.exe,postgis安装包。 PostGIS 在对象关系型数据库 PostgreSQL 上增加了存储管理空间数据的能力,相当于 Oracle 的 spatial 部分。PostGIS 最大的特点是符合并且实现了 OpenGIS 的一些规范,是最著名的开源 GIS 数据库。

    基于线性预测的语音合成实验MATLAB代码

    matlab资源。本资源是基于线性预测的语音合成实验MATLAB代码。基于线性预测的语音合成是一种利用线性预测模型来生成语音的技术。它通过分析语音信号的频谱包络和激励信号,建立一个线性预测方程,预测当前样本与之前样本的关系,从而合成新的语音信号。这种方法能够模拟人声的自然特性,生成连续、流畅的语音输出。

    使用Scrapy采集淘宝数据,Flask展示.zip

    淘宝剁手吧(接口失效,目前不再维护)该项目使用Scrapy抓取淘宝商品信息,并存入MongoDB数据库。Web端使用Flask + Bootstrap构建聚合搜索商品信息的简单应用。使用运行Scrapy抓取商品信息。$ cd scrapy$ scrapy crawl taobao获取信息后,运行Web Server进行测试。$ python server.py * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active!完整内容请来我的博客scrapy学习实例(四)采集淘宝数据并展示

    【岗位说明】物资设备部部门职责.doc

    【岗位说明】物资设备部部门职责

    axure9后台管理系统框架模板

    axure9后台管理系统框架模板。资源来源于网络分享,如有侵权请告知!

    【岗位说明】营销策划职能说明书.xls

    【岗位说明】营销策划职能说明书

    【Python】基于Python的微信群助手机器人.zip

    【Python】基于Python的微信群助手机器人

    机械设计潜伏式AGV小车sw18可编辑非常好的设计图纸100%好用.zip

    机械设计潜伏式AGV小车sw18可编辑非常好的设计图纸100%好用.zip

    postgis-bundle-pg17x64-setup-3.5.0-2.exe

    postgis-bundle-pg17x64-setup-3.5.0-2.exe,postgis安装包。 PostGIS 在对象关系型数据库 PostgreSQL 上增加了存储管理空间数据的能力,相当于 Oracle 的 spatial 部分。PostGIS 最大的特点是符合并且实现了 OpenGIS 的一些规范,是最著名的开源 GIS 数据库。

    光伏并网 MPPT追踪光伏最大发电功率 光伏boostmpptdc-ac电压电流双闭环 两级式三相光伏并网 双PI SPWM调制 Matlab Simlink仿真 三相L LC LCL并网逆变器

    光伏并网 MPPT追踪光伏最大发电功率 光伏boostmpptdc-ac电压电流双闭环 两级式三相光伏并网 双PI SPWM调制 Matlab Simlink仿真 三相L LC LCL并网逆变器 采用双闭环电压电流调节 锁相环 电网电压 并网电流同频同相 仿真正确波形 波形完美 附带参考文献

    【岗位说明】营销部门职位描述.doc

    【岗位说明】营销部门职位描述

    【java】基于struts1的考试系统_pgj.zip

    【java】基于struts1的考试系统_pgj

    基于自定义实现的Transformer模型的英汉翻译任务训练得到的模型参数权重字典

    对应的模型的超参数: d_model = 512 d_ff = 2048 n_layers = 6 n_heads = 8 dropout_p=0.1 src_vocab_size = 4456 trg_vocab_size = 8013

    【岗位说明】销售部各职务详细岗位说明书描述.doc

    【岗位说明】销售部各职务详细岗位说明书描述

    【Python爬虫】python爬虫练手项目,或许不止爬虫。_pgj.zip

    【Python爬虫】python爬虫练手项目,或许不止爬虫。_pgj

    使用unity绘制颜色板

    使用unity绘制颜色板

    基于Java的大学生就业网站的设计与实现【附源码】

    信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对学生就业管理等问题,对学生就业管理进行研究分析,然后开发设计出大学生就业网站以解决问题。 大学生就业网站主要功能模块包括系统用户管理、企业信息管理、职位类别管理、所有职位管理、求职者简历管理、招聘新闻管理、留言管理、面试邀请管理,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取Mysql作为后台数据的主要存储单元,采用JavaEE框架、JSP技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对大学生就业网站的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现大学生就业网站和。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

Global site tag (gtag.js) - Google Analytics