你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iPhone 6和iPhone 6 plus的AV Foundation框架特性

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

編輯:IOS開發基礎

QQ截圖20150202140713.jpg

本文由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項目

021.png

Figure 2  Supported AVCaptureDeviceFormat's for the back camera.

022.png

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved