低AVCaptureSessionPreset我幾乎下面這一個同樣的問題:的iOS拍攝高分辨率的照片,而使用視頻輸出
Switching AVCaptureSession preset when capturing a photo
然而,問題是,(個體經營)答案不幫助我一點。我想知道是否有人知道如何做到這一點。
我捕獲的視頻幀,所以我可以處理它們,並與他們做些事情。爲此,我使用的是AVCaptureSessionPrese640x480
,因爲我需要獲得所需的所有幀速率,同時獲得適合計算的體面幀。現在,當用戶想要拍攝照片時,我希望他能夠以最高分辨率拍攝照片。爲此,我不贊成:
[captureSession beginConfiguration];
captureSession.sessionPreset = <some_preset>
[captureSession commitConfiguration];
我試過這個,我在某些情況下得到一個錯誤;但由於某種原因屏幕上仍然存在一定的滯後,我不再相信這一點。
當以非常低的分辨率(例如640x480)捕獲視頻輸出時,是否有確定的方式從相機獲取高分辨率圖像?
您可能想嘗試將一些工作放到單獨的線程中。 commitConfiguration可能會由於設備同步而暫停線程,如果可能的話將其放入單獨的線程(可能工作或不工作)。無論如何,在調用此方法後,您應該期望下一幀仍可能處於低分辨率狀態,因此您需要檢查每幀的樣本。一旦你收到一個高分辨率的樣本,你應該再次使用一個單獨的線程來生成圖像或你正在做的任何事情,也可能鎖定「拍照」按鈕/觸發器。 –
感謝您的建議,但這將是可怕的應用程序。配置也重新聚焦,所以我永遠不會讓用戶專注和點擊。我想知道是否有一種標準的做事方式,因爲很多人可能都需要這樣做。 – p0lAris
我相信在這一點上你已經走到了盡頭(儘管我可能是錯的)。也許如果可能的話,您可以簡單地捕獲高分辨率採樣,然後在將它們提供給視頻輸入之前自行降採樣。爲了獲得一些性能,你可以嘗試把它放到GPU上,但不能保證它會獲得任何性能。我希望你找到一個好的解決方案,並在這裏發佈。 –