2012-03-17 103 views
1

是否有人知道如何使用AVFoundation(AVCaptureStillImageOutput)在自定義iOS相機中設置自定義分辨率?AVCaptureSession指定自定義分辨率

我知道你可以使用AVCaptureSession來選擇一個預置,但是我需要920x920的輸出分辨率(不是由預置提供)。目前我使用AVCaptureSessionPresetHigh並調整了UIImage的大小,但似乎很愚蠢,而且還有很多額外的不必要的處理。

+1

有沒有辦法在一個自定義分辨率據我所知捕捉。您將不得不自己縮放,然後以目標格式對其進行編碼。 – 2012-03-23 00:37:58

回答

0

請檢查我自己回答的一箇舊問題,它可能會幫助你。

Capture picture from video using AVFoundation

+0

謝謝,我已經閱讀,但不幸的是它並沒有幫助我;沒有預設我需要的分辨率。 – Dick 2012-03-18 19:36:50

0

你不能,但你可以做的是通過所有的AVCaptureDeviceFormat正在找一個更接近你的分辨率迭代。 要獲得所有可用格式的完整列表,只需使用屬性-formats查詢捕獲設備。
從蘋果這個例子說明了如何挑選最好的幀速率:

- (void)configureCameraForHighestFrameRate:(AVCaptureDevice *)device 
{ 
    AVCaptureDeviceFormat *bestFormat = nil; 
    AVFrameRateRange *bestFrameRateRange = nil; 
    for (AVCaptureDeviceFormat *format in [device formats]) { 
     for (AVFrameRateRange *range in format.videoSupportedFrameRateRanges) { 
      if (range.maxFrameRate > bestFrameRateRange.maxFrameRate) { 
       bestFormat = format; 
       bestFrameRateRange = range; 
      } 
     } 
    } 
    if (bestFormat) { 
     if ([device lockForConfiguration:NULL] == YES) { 
      device.activeFormat = bestFormat; 
      device.activeVideoMinFrameDuration = bestFrameRateRange.minFrameDuration; 
      device.activeVideoMaxFrameDuration = bestFrameRateRange.minFrameDuration; 
      [device unlockForConfiguration]; 
     } 
    } 
} 
+0

這個問題是關於尺寸,而不是幀率。 – Emiswelt 2017-03-05 20:14:11

+0

@Emiswelt率和分辨率是連接的,張貼的片段只是一種獲取設備格式的方式。 OP所要求的是,如果他可以做一個自定義大小的解決方案,答案是否定的。 – Andrea 2017-03-05 20:44:07