`
bengan
  • 浏览: 206643 次
  • 性别: 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`和`...

    移动开发_Android_基础框架_SAFApi组件开发_1742847786.zip

    移动开发_Android_基础框架_SAFApi组件开发_1742847786.zip

    《基于YOLOv8的气功动作识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    FourOnes_jquerybootstraptenine_1742855636.zip

    app开发

    MobaXterm安装包

    MobaXterm安装包

    30页-清华科技园智慧园区方案.pdf

    智慧园区,作为智慧城市的重要组成部分,正借助5G、云计算、大数据等前沿技术,实现园区的全面智慧化升级。它不仅仅是技术的堆砌,更是园区管理模式和服务理念的革新。智慧园区通过构建统一的大数据平台,实现园区内各类数据的整合与共享,让管理者能够全局掌握园区运营状态,实现人、事、物的穿透式管理。 在5G技术的加持下,智慧园区的特色应用得以更加广泛和深入地开展。从便捷通行到智慧物联,从楼宇自控到企业服务,5G智慧园区为园区内的企业和员工提供了前所未有的便捷与高效。刷脸通行、车牌识别、访客线上预约等技术的应用,不仅提升了园区的安全等级,更让通行变得简单快捷。而智慧垃圾桶、路灯等物联网设备的引入,则让园区的环境管理更加智能化、精细化。此外,5G智慧园区还通过无人机巡检、无人驾驶等创新应用,为园区的安全管理、物资配送等方面带来了全新的解决方案。 值得一提的是,智慧园区的建设并不仅仅局限于硬件设施的升级,更在于服务模式的创新。通过园区APP、在线服务平台等渠道,智慧园区实现了园区服务的线上化、便捷化,让企业和员工能够随时随地享受到园区提供的各类服务。这种以人为本的服务理念,不仅提升了园区的整体服务水平,更增强了园区的吸引力和竞争力。总之,5G智慧园区的建设为园区的可持续发展注入了新的活力,也为未来城市的发展提供了有益的借鉴和启示。

    C基础day9 思维导图

    C基础day9 思维导图

    Simulink仿真实现物体终端速度与信号处理的MATLAB代码解析(复现论文或解决问题,含详细可运行代码及解释)

    内容概要:本文档详细介绍了使用Simulink进行两个物理问题的仿真建模。第一个任务是模拟一个球体从高空落下的终端速度,通过建立重力与空气阻力的平衡模型,利用MATLAB代码构建Simulink模型,最终计算出终端速度。第二个任务是基于提供的加速度数据,通过两次积分计算物体的速度和位置,同样使用MATLAB代码实现了Simulink模型。每个任务都包含了详细的数学公式推导、参数设置以及Simulink模块的具体连接方法。仿真结果显示,终端速度约为53.6 m/s,而1秒后的速度和位置则取决于输入的加速度数据。 适合人群:对Simulink仿真工具感兴趣的工程技术人员、科研工作者以及相关专业的学生。 使用场景及目标:适用于需要进行物理系统仿真、信号处理的研究项目或教学实验。主要目标是帮助读者掌握Simulink的基本操作和应用技巧,同时加深对物理现象的理解。 其他说明:文中提供了完整的MATLAB代码,方便读者直接复制并在自己的环境中运行测试。此外,还给出了详细的中文注释,有助于初学者更好地理解各个步骤的功能和意义。

    《基于YOLOv8的隧道安全监测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    音乐_安卓开发_本地音乐_播放器应用μsic_1742860435.zip

    音乐_安卓开发_本地音乐_播放器应用μsic_1742860435.zip

    Lightweight and Efficient: The backbone of the TTS Diffusion Transformer has only 0.45B param

    Lightweight and Efficient: The backbone of the TTS Diffusion Transformer has only 0.45B parameters. Ultra High-Quality Voice Cloning: See the demo video below! We also report results of recent TTS models on the Seed test sets in the following table. Bilingual Support: Supports both Chinese and English, and code-switching. Controllable: Supports accent intensity control and fine-grained pronunciation/duration adjustment (coming soon).

    博客_ionic20_移动端_应用开发模板_1742847485.zip

    博客_ionic20_移动端_应用开发模板_1742847485.zip

    《基于YOLOv8的传送带异物检测系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    中继增强OFDMA网络中的公平半分布式资源分配方案实现与性能评估(复现论文,含详细可运行代码及解释)

    内容概要:本文详细介绍了复现论文《Fair Semi-distributed Resource Allocation Scheme over Relay-Enhanced OFDMA Networks》的代码实现。主要内容包括系统模型构建(定义基站、中继站、移动终端及其关联关系)、资源分配算法(半分布式资源分配、改进的两阶段资源分配)和公平性调度机制(吞吐量计算、效用函数)。此外,还进行了仿真实验,对比了所提方案与集中式方案和机会主义方案在吞吐量、公平性和反馈开销方面的性能表现。最后,通过随机分布场景下的仿真进一步验证了方案的有效性和实际部署的可行性。 适合人群:通信工程专业研究人员、无线网络优化工程师、对OFDMA技术和资源分配算法感兴趣的学者和技术人员。 使用场景及目标:适用于研究和开发中继增强的OFDMA网络资源分配算法,旨在提高系统的吞吐量和公平性,降低反馈开销。目标是在大规模网络环境中实现高效、公平的资源分配。 其他说明:文中提供了详细的代码实现步骤和仿真结果,有助于读者深入理解算法原理并进行实验验证。

    2025大模型训练性能瓶颈定位流程案例.pdf

    2025大模型训练性能瓶颈定位流程案例

    蓝桥杯Python竞赛真题详解:涵盖基础与进阶算法挑战

    内容概要:本文档提供了20道蓝桥杯Python竞赛真题及其详细解答,涉及质因数分解、分数计算、特别数求和、数字三角形、约数个数、草的生长模拟、工作时长计算、互质数统计、阶乘和判定、公因数匹配、直线计算、分糖果、矩阵填充、旅行计划优化、阶乘末尾零计数、最长递增子序列、最长公共子序列、最长回文子串、最长公共前缀和最长公共后缀等多个经典算法问题。每个题目都附有完整的代码实现和解释,帮助参赛者深入理解和掌握相关知识点。 适合人群:准备参加蓝桥杯或其他编程竞赛的学生和程序员,尤其是对Python编程有一定基础并希望提高算法能力的人群。 使用场景及目标:①作为赛前复习资料,巩固基础知识;②通过实际编程练习提升算法思维和解决问题的能力;③熟悉竞赛常见题型,增强应对复杂问题的信心。 其他说明:文档不仅提供了解答思路,还包含了具体的代码实现,有助于读者更好地理解和应用所学知识。同时,这些问题覆盖了多种数据结构和算法思想,能够全面锻炼编程技能。

    word-【软考-网络工程师】学习资源

    网络工程师(中级)是软考(计算机技术与软件专业技术资格考试)的一部分,主要考察计算机网络基础、网络安全、网络管理、操作系统、数据库等内容,考试分为上午的基础知识选择题和下午的案例分析题。

    《基于YOLOv8的宠物用品识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    《基于YOLOv8的体育进步识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics