오늘의 할 일
1. setupSession 메서드 작성
2. startSession 메서드 작성
3. stopSession메서드 작성
1. setupSession메서드 작성
CaptureSession구성
- presetSetting 하기
//프리셋 - 미디어캡쳐(사진,영상촬영 할 때 먼저 맞춰주는 설정값)
- beginConfiguration
- Add Video Input
- Add Photo Output
- commitConfiguration
- presetSetting, beginConfiguration, commitConfiguration
아래 사진과 같이 프리셋을 설정하고
begin과 commit configuration 사이에 videoInput과 photoOut구성을 작성해줍니다.
- add video input
var defaultVideoDvice: AVCaptureDevice?
//videodiscoverysession을 이용해서 기기 찾기, 지난시간에 작성한 videodiscoversession 중에서 찾습니다.
guard let camera = videoDeviceDiscoverySession.devices.first else {
captureSession.commitConfiguration()
return
} //디바이스 없으면 sessionconfiguration 마무리해라
do {
let videoDeviceInput = try AVCaptureDeviceInput(device: camera)
//device인풋 만들기(객체 만들어 놔야 CaptureSession과 연결 할 수 있기 때문에)(될수도 있고 안될수도 있기 떄문에 do -try - catch문을 작성해줍니다.)
if captureSession.canAddInput(videoDeviceInput) {
//deviceinput을 session에 막 넣으면 안되고 if문을 통하여 넣을 수 있냐고 물어보고 넣어야합니다.
captureSession.addInput(videoDeviceInput)
self.videoDeviceInput = videoDeviceInput
} else {
captureSession.commitConfiguration()
return
}
} catch let error {
captureSession.commitConfiguration()
return
}
- add photo output
photoOutput.setPreparedPhotoSettingsArray([AVCapturePhotoSettings(format: [AVVideoCodecKey: AVVideoCodecType.jpeg])], completionHandler: nil)
// 어떤 세팅으로 저장할 것인지 설정해줍니다.
if captureSession.canAddOutput(photoOutput) {
captureSession.addOutput(photoOutput)
} else {
captureSession.commitConfiguration()
return
}
captureSession.commitConfiguration()
}
// photo output도 역시 if문으로 물어보고 저장해야합니다
2. startSession 메서드 작성
func startSession() {
sessionQueue.async {
if !self.captureSession.isRunning {
self.captureSession.startRunning()
//captureSession이 진행중이면 계속 러닝할 필요가 없으니까 아닌경우에만 시작하라고 명령해줍니다.
}
}
}
3. stopSession 메서드 작성
func stopSession() {
sessionQueue.async {
if self.captureSession.isRunning {
self.captureSession.stopRunning()
}
//지금진행중이면 멈추라고 멈춰있는데 멈추라고 할 필요 없으니깐 if문으로 설정 해줍니다.
}
}
설정하고 앱을 실행해보면
지난 시간 info를 이용한 사용자 권한 받는 알림이 먼저 뜨게 됩니다.
https://accompani-i.tistory.com/168?category=1002351
확인을 눌러주면 카메라가 잘 작동되는 것을 알 수 있습니다.
지난시간에 UI도 잘 들어가있는 것을 확인해 볼 수 있었습니다.
https://accompani-i.tistory.com/170?category=1002351
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] Camera App 4(Photo Capture Delegate, 저장) (0) | 2022.04.27 |
---|---|
[Swift] Camera App 3(내부,외부 카메라 toggle button) (6) | 2022.04.14 |
[Swift] Camera App 1(captureSession설정) (0) | 2022.04.08 |
[Swift] info를 이용한 사용자 권한 받기 (0) | 2022.04.07 |
[Swift] * 검색 히스토리 표시(searchHistory)/searchTerm 최신순 sorting (0) | 2022.04.06 |