2013-03-31 74 views
6

我想檢查iPhone用戶是否支持全高清視頻捕捉。我發現,我應該問的AV會話,如果canSetSessionPreset:AVCaptureSessionPreset1920x1080在iPhone 4上返回'yes'

avSession = [[AVCaptureSession alloc] init]; 
    [avSession beginConfiguration]; 
    if ([avSession canSetSessionPreset:AVCaptureSessionPreset1920x1080]) { 
     avSession.sessionPreset = AVCaptureSessionPreset1920x1080; 
     NSLog(@"FULLHD"); 
    } else { 
     avSession.sessionPreset = AVCaptureSessionPreset1280x720; 
     NSLog(@"HDREADY"); 
    } 
    [avSession commitConfiguration]; 

這適用於iPhone 5(這的確支持全高清拍攝)的罰款,但在iPhone 4上嘗試過設置預置,但顯然失敗。我究竟做錯了什麼?

由於提前, 馬蒂亞斯

+2

同樣的問題在這裏。這樣做:if [[CaptureSession canSetSessionPreset:AVCaptureSessionPreset1920x1080] == YES){[captureSession setSessionPreset:AVCaptureSessionPreset1920x1080]; [0124]其他{ }其中{captureSession setSessionPreset:AVCaptureSessionPresetPhoto]; }適用於我的iPhone 5,但是在我的iPhone 4上運行時,它會嘗試將其設置爲1929X1080,並且會話不顯示任何內容。如果我強制使用照片預設,那麼它可以在iPhone 4上運行。任何人? – zumzum

回答

15

你叫canSetSettingPreset輸入添加到捕獲會話後?

[captureSession addInput:captureInput]; // <--- you should add an input before canSetSessionPreset 
[captureSession addOutput:captureOutput]; 


if([captureSession canSetSessionPreset:AVCaptureSessionPreset1280x720] == YES) { 
    captureSession.sessionPreset = AVCaptureSessionPresetiFrame1280x720; 
} else { 
    captureSession.sessionPreset = AVCaptureSessionPreset640x480; 
} 
+1

是的,這是解決方案。現在不能投票,以較少的聲譽:( – mattem86

+1

@ user2228816沒關係,我的答案幫助你:)祝你有美好的一天。 – alones

+0

你認爲接受這個答案@ user2228816?它有助於建立社區。 :) – grapeot

相關問題