[swift] Swift에서 카메라로 스마트폰 스크린 녹화하기
1. AVCaptureSession 설정
먼저, AVCaptureSession을 설정하여 오디오 및 비디오 입력을 처리할 수 있도록 해야 합니다.
import AVFoundation
let captureSession = AVCaptureSession()
guard
let videoDevice = AVCaptureDevice.default(for: .video),
let videoInput = try? AVCaptureDeviceInput(device: videoDevice),
captureSession.canAddInput(videoInput)
else { return }
captureSession.addInput(videoInput)
let audioDevice = AVCaptureDevice.default(for: .audio)
let audioInput = try? AVCaptureDeviceInput(device: audioDevice)
if captureSession.canAddInput(audioInput) {
captureSession.addInput(audioInput)
}
2. AVCaptureMovieFileOutput 설정
이제, AVCaptureMovieFileOutput을 설정하여 녹화된 비디오를 저장할 파일을 관리합니다.
let movieFileOutput = AVCaptureMovieFileOutput()
if captureSession.canAddOutput(movieFileOutput) {
captureSession.addOutput(movieFileOutput)
let connection = movieFileOutput.connection(with: .video)
if connection?.isVideoStabilizationSupported == true {
connection?.preferredVideoStabilizationMode = .auto
}
captureSession.startRunning()
}
3. AVCaptureVideoPreviewLayer 추가
마지막으로, 녹화된 내용을 화면에 보여주는 AVCaptureVideoPreviewLayer를 추가합니다.
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = .resizeAspectFill
previewLayer.frame = view.layer.bounds
view.layer.addSublayer(previewLayer)
이제 스마트폰에서 화면 녹화가 가능하며, 녹화된 비디오를 관리하기 위한 추가적인 로직을 구현할 수 있습니다.
참고 자료: