iPhone 6和iPhone 6 plus的AV Foundation框架特性

转载自 http://www.cocoachina.com/ios/20150202/11088.html

本文由CocoaChina翻译组成员YueWang(博客地址)翻译自苹果Technical Note之 New AV Foundation Camera Features for the iPhone 6 and iPhone 6 Plus
AV
Foundation框架介绍了一系列用于支持iPhone6 和iPhone6 plus 相机新功能的API。新特性包括Focus
Pixels、光学图像防抖动功能、1080p60、慢动作视频、影院级视频防抖动功能, 单镜头(视频)HDR
以及视频录制过程中拍摄高分辨率静态照片。

除此之外, iPhone6 和iPhone6 Plus
还支持手动控制功能(包括手动对焦、手动曝光、曝光补偿、手动白平衡以及托架性静态捕捉)。这些特性可参考 WWDC 2014 Session 508
Camera Capture: Manual Controls.

  • Focus Pixels自动对焦
  • 光学图像防抖动
  • 1080p60
  • 240 fps慢动作视频
  • 影院级视频防抖动功能
  • 单镜头(视频) HDR
  • 视频录制过程中拍摄高分辨率静态照片
  • 文档修订记录

Focus Pixels自动对焦

iPhone6
和iPhone6 Plus专用的Focus Pixels 技术可通过相位检测来提供深度信息。 连续自动对焦变化非常快速和敏感。
当镜头做全焦点扫描时可达到完全没有震颤效果。相位检测非常好,推荐你在录制视频的同时允许自动对焦。在光线不好的情况下,AF机制可通过扫描来收集对比
信息。

如果硬件支持Focus Pixels ,那么当你设置 AVCaptureDevice focusMode
的属性值为AVCaptureFocusModeContinuousAutoFocus时,这个功能是默认"开启"的。因此当自动对焦可用时,它们会自
动调用,无需手动选择开启或关闭。iPhone6 和iPhone 6 Plus的前置摄像头都有一个固定的聚焦透镜,因此Focus
pixels自动对焦仅仅是针对于后置摄像头而言的。所有的针对后置摄像头的AVCaptureDeviceFormat对象都支持除了720p240格
式的自动对焦。

您怎么知道某个格式是使用了Focus pixels,还是使用了传统的反差式对焦,或者根本不支持任何对焦呢?

AVCaptureDeviceFormat
的只读属性autoFocusSystem可以解决这个问题。AVCaptureAutoFocusSystem
有3个常量:None、ContrastDetection以及PhaseDetection。当使用的格式支持相位检测时,强烈推荐你允许相机在录制时
能够连续调整焦点,因为相位检测非常快速且敏锐。当系统使用传统反差检测时,应该在录制前锁定对焦,或者在支持的前提下使用
AVCaptureDevice的smoothAutofocusEnabled属性。

注意:使用传统的对比检测自动对焦功能时,当对焦时,AVCaptureDevice的adjustingFocus属性会变为YES,而且当完成对焦后这个属性就会变为NO。当相位检测自动对焦正在使用时,adjustingFocus属性不转为YES,因为相位检测往往会更频繁地对焦,但它几乎让你感觉不到它频繁对焦了。可以利用AVCaptureDevice lensPosition 属性来观察由相位检测AF引起的透镜移动变化。

请查看AVCaptureDevice.h-AVCaptureAutoFocusSystem和autoFocusSystem.

光学图像防抖动功能

iPhone
6 Plus(只限6
Plus)的后置摄像头支持光学图像防抖动功能。默认配置中,该功能会在低光线情况下,在你使用8百万像素设备格式的
AVCaptureStillImageOutput拍照时激活或者预先调整AVCaptureSessionPresetPhoto时激活。
在iOS7中,AV Foundation 使用了相同的属性AVCaptureStillImageOutput
automaticallyEnablesStillImageStabilizationWhenAvailable。这个属性在所支持的平台上
(iPhone 5s、iPhone 6以及iPhone 6 Plus)默认为YES。在iPhone 5s 和iPhone 6 上,数字图像防抖动技术可减少低光线图片的模糊强度。在iPhone6 Plus上,数字和光学图像防抖动技术的结合可以在光线度更低的情况下达到更好的效果。

请查看AVCaptureOutput.h - automaticallyEnablesStillImageStabilizationWhenAvailable.

1080p60

iphone6
和iPhone6 Plus的后置摄像头有一个1080p30的AVCaptureDeviceFormat (420v / 420f)
和一个支持1080p60的格式。它可以从最小2 fps 的帧速率增加到最大60
fps帧速率。AVCaptureSessionPresetHigh使用的是1080p30 格式。如果你想用1080p60
来记录,请使用iOS7中的 AVCaptureDevice
formats,找到你想使用的AVCaptureDeviceFormat,设置AVCaptureDevice
setActiveFormat属性值,而不是AVCaptureSession setSessionPreset。可回顾下WWDC 2013
Session 610 视频"What‘s New in Camera Capture"
来学习这项技术。请查看AVCaptureDevice.h - activeFormat.

240 fps的慢动作视频

iphone6
和iPhone6 Plus的后置摄像头有一个720p30的AVCaptureDeviceFormat (420v / 420f)
和一个支持720p240的格式。它支持的帧速率范围为5 fps - 240 fps。你可以通过设置AVCaptureDevice
activeFormat的属性值来设置它(同上面的1080p60一样)。240 fps 格式已被放弃了。如果你想在iPhone 6
或iPhone 6 Plus上抓取120 fps格式的图像,找到和选择支持 240fps 的格式,然后设置AVCaptureDevice
activeVideoMinFrameDuration 和activeVideoMaxFrameDuration 属性为CMTimeMake(
1, 120 ).

请查看AVCaptureDevice.h - activeFormat.

影院级视频防抖动功能

iOS
6在iPhone 4S上引入了支持视频防抖动的API。iPhone 6和6
Plus的后置摄像头支持一个更积极的、更令人激动的和更流畅的算法--"影院级视频防抖动功能"。相比较普通的视频防抖动特性,该防抖动特性减少了相机
视角,引入了更多视频抓取延迟,并且消耗了更多系统内存。因此这个功能不是默认的,必须设置后使用。

当使用影院级视频防抖动功能时,强烈推
荐使用相近的的或者相同的最小帧和最大帧持续时间来保持延迟的一致性和可控性。 iPhone 6 and 6
Plus也支持早期产品中使用的一般视频防抖动算法。照先前说的,AVCaptureConnection允许你调用
AVCaptureConnection
setEnablesVideoStabililzationWhenAvailable:方法来选择视频防抖功能。AV
Foundation现在支持不止一种形式的视频防抖动功能,因此旧方法(AVCaptureConnection
videoStabilizationEnabled:)已经被弃用了,现在更推荐使用AVCaptureConnection
setPreferredVideoStabilizationMode:方法。

有4种视频防抖动模式常数供你选
择,AVCaptureVideoStabilizationModeOff、
AVCaptureVideoStabilizationModeStandard、
AVCaptureVideoStabilizationModeCinematic以及
AVCaptureVideoStabilizationModeAuto。

通过调用AVCaptureDeviceFormat
isVideoStabilizationModeSupported:方法,你可以查询AVCaptureDevice
activeFormat属性来决定支持哪一种防抖模式。设置除了AVCaptureVideoStabilizationModeOff以外的其他参数
都不会强制使视频防抖动功能打开。因为一些设备的格式和AVCaptureOutput‘s
不支持防抖动功能。要想决定实际使用哪一个视频防抖动模式,你可以键值观察其AVCaptureConnection
activeVideoStabilizationMode属性。当你将首选视频防抖动模式参数为
AVCaptureVideoStabilizationModeAuto时,将会基于你使用的格式和帧速率选择一个适当的防抖模式。现在只有
1080p30 和 1080p60 视频格式支持影院级视频防抖动功能。默认的preferredVideoStabilizationMode值是

AVCaptureVideoStabilizationModeOff。在早期的设备上,只有16:9视频格式支持防抖动。


查看AVCaptureDevice.h-isVideoStabilizationModeSupported:
和AVCaptureSession.h -preferredVideoStabilizationMode
和activeVideoStabilizationMode.

单镜头(视频) HDR


叫"流HDR"或者"视频HDR"。iPhone 6 and 6 Plus
支持连续的、流状高动态范围视频,不同于传统的方法通过将静态图片和不同的EV值熔合来构建成一张高动态范围的图片。HDR支持是嵌入在传感器里的。该功
能在API里被称为"视频HDR"。所有前置摄像头的AVCaptureDeviceFormat对象都支持视频HDR。在后置摄像头上,540p30、
720p30、1080p30以及1080p60格式支持视频HDR。

默认情况下,AVCaptureDevice(AVCaptureDevice automaticallyAdjustsVideoHDREnabled属性默认是YES
会自动调整视频HDR。当自动调整视频HDR开启时,在你使用setActiveFormat:设置一个新的格式时,AVCaptureDevice会始
终关掉videoHDREnabled属性。相反如果你调用setSessionPreset:方法,AVCaptureDevice会根据视频HDR是
否符合预设情况来自动开启或关闭视频HDR。

如果你想要在某个指定的格式下迫使视频HDR开启,请将automaticallyAdjustsVideoHDREnabled属性设置为NO, 然后将AVCaptureDevice videoHDREnabled属性设置为YES
你可能会不允许设置后面的那个属性当你第一次关闭视频HDR自动调整功能。注意,设置videoHDREnabled属性可能会引起
AVCaptureDevice的一个冗长的重新配置过程,类似于设置一个新的有效格式或AVCaptureSession
sessionPreset属性。如果你要设定有效格式或者AVCaptureSession的会话预设和videoHDREnabled,你应该把这些
操作括在[session beginConfiguration]和[session
commitConfiguration]里来最小化重新配置时间。

请参看AVCaptureDevice.h-automaticallyAdjustsVideoHDREnabled和videoHDREnabled。

视频录制过程中拍摄高分辨率静态照片


所有的设备上,AVCaptureStillImageOutput根据AVCaptureDeviceD
activeFormat指定的分辨率来捕捉静态图片。换句话说,如果你的activeFormat
CMVideoFormatDescription是640x480的分辨率,那么捕捉到的静态图片就是640x480。有时因为
AVCaptureVideoDataOutput密集的图片处理,AVCaptureDevice需要在压缩分辨率的情况下运行,但是还是希望在不影响
预览和重置设备的情况下抓取全分辨率的静态图片。

基于iPhone 6和6
Plus的新特性,你可以在录制activeFormat指定分辨率视频(视频数据输出和影片文件输出)的同时抓取高分辨率的静态图片。该高分辨率静态图
片仍然保持AVCaptureDevice‘s
activeFormat设定的屏幕高宽比和视角。这个功能默认情况下是关闭的,不过你可以通过调用AVCaptureStillImageOutput

setHighResolutionStillImageOutputEnabled:方法开启它。你也可以通过查询
AVCaptureDeviceFormat
highResolutionStillImageDimensions属性来得到捕捉的静态图片的分辨率。
当这个功能开启时你可以采集视频,比如录制192x144的视频同时抓取3264x2448(全8兆像素)的静态图片。注意,如果你允许对于所有的输出都
要保持视频防抖动,那么AVCaptureStillImageOutput输出的高分辨率静态图片会小个10%或更多。
视频录制过程中的高分辨率静态图片功能只在后置摄像头上支持。

作为参考,以下列出了支持iPhone 6和iPhone 6 Plus的前置和后置摄像头的AVCaptureDeviceFormat

TABLE KEY  (图片 1, 图片 2)

HRSI = 高分辨率静态图片量度

FOV = 视角

VIS = 支持视频防抖动的格式

Max Zoom = 最大视频变焦因子

Upscales = 在某一个数字高标度时使用的变焦因子

AF = 自动对焦系统(1 = 对比检测, 2 = 相位检测)

ISO = 支持的ISO范围

SS = 支持的曝光持续范围

HDR = 这个格式支持视频HDR

Figure 1  支持后置摄像头AVCaptureDeviceFormat项目

Figure 2  Supported AVCaptureDeviceFormat‘s for the back camera.

时间: 2024-10-29 19:09:52

iPhone 6和iPhone 6 plus的AV Foundation框架特性的相关文章

「Swift学习笔记」使用AV Foundation框架为APP加上背景音乐并进行简单控制

用Swift语言进行iOS开发,如需加上背景音乐并进行简单地控制可以使用AV Foundation框架,而对于压缩过的Audio文件或者超过30秒的音频文件,则使用AVAudioPlayer类. 为APP加上背景音乐 ?   首先,在ViewController.swift的文件顶部添加?行代码: import AVFoundation //引入一个新的AVFoundation框架 ?   其次,在类中定义其它实例变量的代码下?再添加?行代码: var audioPlayer: AVAudioP

AV Foundation 开发秘籍--实践掌握iOS & OS X应用的视听处理技术——互动出版网

这篇是计算机类的优质预售推荐>>>><AV Foundation 开发秘籍--实践掌握iOS & OS X应用的视听处理技术> 国内首本译著AV Foundation图书,书中源码及素材免费提供下载 内容简介 快速掌握使用AV Foundation开发iOS和OS X应用的技术如果想开发富媒体iOS或OS X应用程序,你可以使用苹果公司推出的AV Foundation框架来实现诸多神奇功能.不过AV Foundation框架基于最前沿的语言特征,极其庞大,而且相

黑马程序员-Mac iphone 使用 如何修改apple 用户名 XXX的mac Mac 与iphone如何连接 传递文件 为iphone增加铃声 iphone铃声的制作---城

1.更改mac apple id Apple ID 即用户名称,您可以将其用于与 Apple 有关的所有操作.为某个 Apple 服务(如 iCloud 或 App Store)创建帐户时即创建了 Apple ID.您可以使用同一 Apple ID 访问 Apple 的其他服务.有时候,可能我们需要更改以前注册的 Apple ID,这里给大家介绍一下,如何修改自己的 Apple ID注:某些 Apple ID(如以 @mac.com 或 @me.com 结尾的 Apple ID)无法更改.首先打

iOS AV Foundation 二维码扫描 01 使用摄像头

从这一节开始,我们使用AV Foundation制作一个条码(不仅仅是二维码)扫描程序,除了扫描二维码功能外,还具备语音合成和摄像头缩放功能. 创建名为ColloQR的单view应用程序.打开storyboard,禁用sized class.选中view controller,通过editor菜单将其放入navigation controller中.最后修改标题为ColloQR: 使用摄像头 打开ViewController.m,添加import: @import AVFoundation; 在

IOS开发之学习《AV Foundation 开发秘籍》

敲了这么久的代码,查阅了很多资料,都是网络电子版的,而且时间久了眼睛也累了,还不如看一下纸质的书籍,让眼睛休息休息. 本篇开始学习<AV Foundation 开发秘籍>,并记录对自己本人有用的一些笔记. 注意哦,有些本人觉得很熟悉的知识可能不会记录哦. 1.在Demo:"HelloAVF_Final"中,用了THSpeechController来管理语音播放的一些对象和处理它们的属性设置以及它们之间的逻辑. 并对外提供简单的接口给THViewController使用,这个

iOS AV Foundation 二维码扫描 02 扫码

AVFoundation支持以下一维和二维码的扫描: QR code Aztec EAN13 EAN8 UPC-E PDF417 Code 93 Code 39 Code 39 mode 41 QR code就是我们所熟知的二维码. 打开ViewController.m,添加以下实例变量: AVCaptureMetadataOutput *_metadataOutput; 当从视频帧中检测到元数据时,AVCaptureMetadataOutput会调用应用程序的回调函数.AV Foundatio

如何开发或者迁移iphone 来适应iphone 5 手机屏幕?

新的iPhone6采用了一个新的长宽比和新的分辨率(640×1136像素). 如何让现有的app适应这个屏幕尺寸 如何才能然搞一个app适应不同的屏幕分辨率呢?不用每次都调整? iPhone IOS屏幕分辨率与iPhone6 处理方法 1.下载并安装Xcode中的最新版本. 2.为您的应用程序中设置了一块4.7 和5,5英寸启动图像.主要是用来适应现有的屏幕高度(以前的图片不兼容). 3.设置自动调整大小,如果你的图片正确,应该不会有太大的问题. 4.如果还没有达到效果,你需要调整视图布局自动适

CSS 兼容iPhone X、iPhone XS及iPhone XR

@media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) { .ua-box .rule-box{ padding-bottom:30px !important; } } @media only screen and (device-width: 414px) and (device-height: 896px) and (-webkit-

iOS AV Foundation 二维码扫描 04 使用合成语音朗读二维码内容

前一节,我们为程序识别到的二维码提供了可视化的显示,这一节,我们使用合成语音朗读扫描到的二维码的内容. 修改ViewController.m,定义以下实例变量并进行初始化: AVSpeechSynthesizer *_speechSynthesizer; _speechSynthesizer = [[AVSpeechSynthesizer alloc] init]; 初始化语音合成器十分简单.语音合成器会控制对每个语音数据的回放和顺序.初始化完成后,Metadata output将触发语音合成器