[swift] Swift에서 카메라로 골프 촬영하기
Swift를 사용하여 iOS 앱을 개발하고 있고, 골프 스윙 동작을 촬영하고 싶다면 이 기술블로그가 도움이 될 것입니다. 이 기술블로그에서는 Swift를 사용하여 카메라를 제어하고 골프 스윙 동작을 촬영하는 방법에 대해 다룰 것입니다.
카메라 액세스 권한 요청
우선 앱이 카메라에 액세스할 수 있는 권한을 얻어야 합니다. Info.plist 파일에 카메라 액세스에 대한 설명을 추가해야 합니다. 추가적으로 AVCaptureSession
을 사용하여 앱에서 카메라에 접근할 수 있습니다.
import AVFoundation
AVCaptureDevice.requestAccess(for: .video) { success in
if success {
// 카메라 액세스 승인됨
} else {
// 카메라 액세스 거부됨
}
}
카메라 미리보기
카메라를 통해 미리보기를 제공하려면 AVCaptureVideoPreviewLayer
를 사용하여 카메라 화면을 보여줄 수 있습니다.
import AVFoundation
import UIKit
class CameraViewController: UIViewController {
var previewLayer: AVCaptureVideoPreviewLayer?
override func viewDidLoad() {
super.viewDidLoad()
let captureSession = AVCaptureSession()
guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return }
let videoInput: AVCaptureDeviceInput
do {
videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice)
} catch {
return
}
if (captureSession.canAddInput(videoInput)) {
captureSession.addInput(videoInput)
} else {
return
}
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer?.videoGravity = .resizeAspectFill
previewLayer?.frame = view.layer.bounds
view.layer.addSublayer(previewLayer!)
captureSession.startRunning()
}
}
동영상 녹화
카메라에서 동영상을 녹화하려면 AVCaptureMovieFileOutput
을 사용하여 동영상을 캡처할 수 있습니다.
import AVFoundation
class CameraViewController: UIViewController {
var captureSession: AVCaptureSession!
var videoOutput: AVCaptureMovieFileOutput!
// ...
func startRecording() {
let outputURL = // 저장할 파일 URL
videoOutput.startRecording(to: outputURL, recordingDelegate: self)
}
func stopRecording() {
videoOutput.stopRecording()
}
}
요약
Swift를 사용하여 카메라를 제어하고 골프 스윙 동작을 촬영하는 방법에 대해 알아보았습니다. 카메라 액세스 권한을 요청하고, 카메라로부터 미리보기를 제공하며, 동영상을 녹화하는 방법을 다뤘습니다.
더 많은 자세한 정보는 Apple 공식 문서를 참고하세요.