[swift] Swift에서 카메라로 동영상 녹화하기
iOS 앱을 개발하다 보면 카메라로 동영상을 녹화해야 하는 경우가 있습니다. Swift에서는 AVFoundation
프레임워크를 사용하여 이를 간단하게 구현할 수 있습니다. 이 포스트에서는 Swift로 카메라로 동영상을 녹화하는 방법에 대해 알아보겠습니다.
프로젝트 설정
먼저 프로젝트에 AVFoundation
프레임워크를 추가해야 합니다. Xcode에서 프로젝트를 열고, 프로젝트 네비게이터에서 프로젝트를 선택한 후, General
탭에서 Linked Frameworks and Libraries
를 클릭합니다. +
버튼을 눌러 AVFoundation.framework
을 추가합니다.
카메라 및 녹화 세션 설정
카메라로부터 입력을 받아오고, 녹화를 수행하기 위해 AVCaptureSession
, AVCaptureDevice
, AVCaptureDeviceInput
및 AVCaptureMovieFileOutput
을 사용합니다.
import AVFoundation
class CameraViewController: UIViewController {
private var captureSession: AVCaptureSession?
private var videoInput: AVCaptureDeviceInput?
private var videoOutput: AVCaptureMovieFileOutput?
override func viewDidLoad() {
super.viewDidLoad()
setupCaptureSession()
}
private func setupCaptureSession() {
captureSession = AVCaptureSession()
guard let videoDevice = AVCaptureDevice.default(for: .video) else { return }
videoInput = try? AVCaptureDeviceInput(device: videoDevice)
if let videoInput = videoInput, captureSession?.canAddInput(videoInput) == true {
captureSession?.addInput(videoInput)
}
videoOutput = AVCaptureMovieFileOutput()
if let videoOutput = videoOutput, captureSession?.canAddOutput(videoOutput) == true {
captureSession?.addOutput(videoOutput)
}
captureSession?.startRunning()
}
}
녹화 시작 및 중지
카메라 설정이 완료되면 startRecording()
메서드를 호출하여 녹화를 시작하고, stopRecording()
메서드를 호출하여 녹화를 중지합니다.
extension CameraViewController {
func startRecording() {
guard let output = videoOutput else { return }
let videoFileURL = URL(fileURLWithPath: NSTemporaryDirectory() + "video.mov")
output.startRecording(to: videoFileURL, recordingDelegate: self)
}
func stopRecording() {
videoOutput?.stopRecording()
}
}
녹화 상태 처리
녹화 상태를 처리하기 위해 AVCaptureFileOutputRecordingDelegate
프로토콜을 채택하여 델리게이트 메서드를 구현합니다.
extension CameraViewController: AVCaptureFileOutputRecordingDelegate {
func fileOutput(_ output: AVCaptureFileOutput, didStartRecordingTo fileURL: URL, from connections: [AVCaptureConnection]) {
// 녹화가 시작되었을 때의 처리
}
func fileOutput(_ output: AVCaptureFileOutput, didStopRecordingTo fileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
// 녹화가 중지되었을 때의 처리
}
}
이제 Swift로 카메라로 동영상을 녹화하는 기본적인 방법에 대해 알아보았습니다. 원하는 추가 기능을 구현하여 iOS 앱에 동영상 녹화 기능을 통합할 수 있습니다.
참고 문헌: Apple Developer Documentation - AVFoundation