2010-09-07 57 views
3

我目前正在開發一款具有相機功能的應用程序,具有自定義相機屏幕,具有預覽屏幕和疊加層。AVFoundation相機預覽屏幕給出錯誤的變焦

我使用的AVFoundation類和方法根據UIScreenCapture根除。

我遇到的問題是,我從AVCaptureSession獲得的預覽數據過於放大。如果我用該屏幕拍攝一張照片,另一張使用iPhone的默認相機應用程序,而不移動iPhone,則變焦的差異是太多了。

我需要我的應用程序的縮放與iPhone相機應用程序的默認相同。

我試着改變AVCaptureVideoPreviewLayer.videoGravity,它的任何3個可能的值,無濟於事。

請真誠讚賞這個問題的任何線索。

回答

1

原來是一個解決問題。 它固定使用

myCaptureSession.sessionPreset = AVCaptureSessionPreset640x480 

注意的iPhone 3G不支持,所以你要問wheter設備支持它

[[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo] supportsAvCaptureSessionPreset:AVCaptureSessionPreset640x480] 
0

預覽窗格的縱橫比是否與攝像頭捕捉數據的縱橫比相同?如果沒有,操作系統可能會改變縮放比例以適合您要求的寬高比。

2

Arcantos的解決方案大多是正確的。假設你使用的是iPhone 3G(或任何支持640x480相機的設備),這種方法可行。 iPhone 4可能會遇到一些問題。

更正確的方法是將測試的可用性和應用此預設:

captureSession.sessionPreset = AVCaptureSessionPresetPhoto; 

這將使用原始相機數據,無論是原始分辨率。