2017-11-23 18 views
0

비디오 미리보기 레이어를 만들려고 시도 중이지만 제대로 작동하는 것 같지만 화면에 아무 것도 나타나지 않습니다.카메라 미리보기 레이어가로드되지 않습니다.

var captureSession = AVCaptureSession() 
var backCamera: AVCaptureDevice? 
var frontCamera: AVCaptureDevice? 
var currentCamera: AVCaptureDevice? 

var photoOutput: AVCapturePhotoOutput? 

var cameraPreviewLayer: AVCaptureVideoPreviewLayer? 
//UIOutlets 
@IBOutlet weak var cameraView: UIView! 
@IBOutlet weak var captureImageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view 

    self.cameraSetupSession() 
    self.setupDevice() 
    self.setupInputOutput() 
    self.setupPerviewLayer() 
    self.startRunningCaptureSession() 

} 

func cameraSetupSession() { 
    print("1") 
    captureSession.sessionPreset = AVCaptureSession.Preset.photo 

} 

func setupDevice() { 
    print("2") 
    let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [AVCaptureDevice.DeviceType.builtInWideAngleCamera], mediaType: .video , position: .unspecified) 

    let devices = deviceDiscoverySession.devices 

    for device in devices{ 

     if device.position == .back{ 

      backCamera = device 

     }else if device.position == .front{ 

      frontCamera = device 

     } 

    } 
    currentCamera = backCamera 
} 

func setupInputOutput() { 
    print("3") 
    do{ 

     let captureDeviceInput = try AVCaptureDeviceInput(device: currentCamera!) 
     captureSession.addInput(captureDeviceInput) 
     photoOutput?.setPreparedPhotoSettingsArray([AVCapturePhotoSettings(format:[AVVideoCodecKey:AVVideoCodecType.jpeg])], completionHandler: nil) 

    }catch{ 

     displayAlert(title: "Error", message: "There was an error acseesing your camera feed.", okMessage: "Okay") 
    } 

} 

func setupPerviewLayer() { 
    print("4") 
    cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
    cameraPreviewLayer?.videoGravity = .resizeAspectFill 
    cameraPreviewLayer?.masksToBounds = true 
    cameraPreviewLayer?.connection?.videoOrientation = .portrait 
    self.view.layer.insertSublayer(cameraPreviewLayer!, at: 0) 


} 

func startRunningCaptureSession() { 
print("5") 
    self.captureSession.startRunning() 
    print(self.captureSession.isRunning) 
}` 

이 중 내 로그 출력은 :

1

2

2017년 11월 23일 12 : 36 : 여기에 사용 된 코드는 04.042296-0500 인스 타 그램 클론 [ 353 : 15568] [MC] systemgroup.com.apple.configurationprofiles 경로의 시스템 그룹 컨테이너는 /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles입니다.

2017-11-23 12 : 36 : 04.043014-0500 Instagram Clone [353 : 15568] [MC] 공개 효과적인 사용자 설정 읽기. 내가 가진 유일한 긍정적 인 신호의

5

사실

4

3

내가 삭제하고 응용 프로그램을 청소 때 카메라를 사용할 수있는 권한을 요청 않는다는 것입니다. 제발, 모든 아이디어와 도움이 대단히 감사합니다.

답변

0

코드가 누락 된 것을 볼 수있는 한 가지는 미리보기 레이어에 세션을 연결하지 않는다는 것입니다. 부가 setupPerviewLayer()에 다음

시도

cameraPreviewLayer?.session = captureSession