[swift] Swift에서 카메라로 녹음하기

최근에는 Swift를 사용하여 iOS 앱에서 카메라로 비디오를 녹화하는 기능을 구현하는 것이 보다 간단해졌습니다. 아래에서는 Swift를 사용하여 카메라로 녹화하는 방법에 대해 살펴보겠습니다.

카메라 액세스 권한

먼저, 카메라 액세스 권한을 얻기 위해 Info.plist 파일에 NSCameraUsageDescription 키를 추가하여 사용자에게 권한을 요청해야 합니다.

예시:

<key>NSCameraUsageDescription</key>
<string>카메라 액세스 권한이 필요합니다.</string>

카메라 뷰 생성

다음으로, 카메라 뷰를 생성하고 녹화 버튼을 추가해야 합니다. 이를 위해 AVCaptureSession, AVCaptureDeviceInput, AVCaptureMovieFileOutputAVCaptureVideoPreviewLayer 등의 클래스를 사용하여 카메라 뷰를 설정합니다.

예시:

// 카메라 뷰 생성
let captureSession = AVCaptureSession()
let videoDevice = AVCaptureDevice.default(for: .video)
let videoInput = try? AVCaptureDeviceInput(device: videoDevice!)
captureSession.addInput(videoInput!)

// 카메라 프리뷰 생성
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.view.layer.addSublayer(previewLayer)
previewLayer.frame = self.view.frame

// 녹화 버튼 추가
let recordButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
recordButton.setTitle("녹화", for: .normal)
recordButton.addTarget(self, action: #selector(self.record), for: .touchUpInside)
self.view.addSubview(recordButton)

비디오 녹화

마지막으로, 녹화 버튼을 누르면 비디오가 녹화되도록 해야 합니다. AVCaptureMovieFileOutput 클래스를 사용하여 비디오를 저장할 경로 및 설정을 지정하여 녹화를 시작하고 멈출 수 있습니다.

예시:

// 비디오 녹화 시작
@objc func record() {
    if !movieOutput.isRecording {
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        let fileURL = documentsURL.appendingPathComponent("video.mov")
        movieOutput.startRecording(to: fileURL, recordingDelegate: self)
    } else {
        movieOutput.stopRecording()
    }
}

요약

Swift를 사용하여 카메라로 비디오를 녹화하는 방법을 살펴 보았습니다. 카메라 액세스 권한을 얻고, 카메라 뷰를 설정하고, 비디오를 녹화하는 방법에 대해 알아보았습니다.

참고하여 직접 앱에 적용해 보세요!

참고 자료