[swift] CoreMedia 캡처 및 레코딩 기능
CoreMedia 라이브러리는 iOS 애플리케이션에서 미디어 관련 작업을 수행할 수 있는 중요한 도구입니다. 여기에는 사진, 비디오 캡처 및 레코딩이 포함됩니다.
이 문서에서는 Swift를 사용하여 CoreMedia 라이브러리를 이용해 iOS 애플리케이션에서 비디오 캡처 및 레코딩하는 방법을 안내하겠습니다.
CoreMedia 라이브러리 추가
CoreMedia 라이브러리는 iOS 프로젝트에 직접 추가해야 합니다. Xcode의 프로젝트 내비게이터에서 프로젝트 파일을 선택한 후, Build Phases > Link Binary With Libraries를 클릭합니다. 여기에 CoreMedia.framework를 추가합니다.
카메라 및 비디오 캡처 구현
import UIKit
import AVFoundation
class CameraCaptureViewController: UIViewController, AVCaptureFileOutputRecordingDelegate {
let captureSession = AVCaptureSession()
var videoOutput: AVCaptureMovieFileOutput?
override func viewDidLoad() {
super.viewDidLoad()
// 카메라 입력
guard let device = AVCaptureDevice.default(for: .video) else { return }
do {
let input = try AVCaptureDeviceInput(device: device)
captureSession.addInput(input)
} catch {
print("Error setting camera input: \(error.localizedDescription)")
}
// 비디오 출력
videoOutput = AVCaptureMovieFileOutput()
if captureSession.canAddOutput(videoOutput) {
captureSession.addOutput(videoOutput)
}
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = .resizeAspectFill
previewLayer.frame = view.frame
view.layer.insertSublayer(previewLayer, at: 0)
captureSession.startRunning()
}
// 레코딩 시작
func startRecording() {
let filePath = NSTemporaryDirectory() + "video.mp4"
let fileUrl = URL(fileURLWithPath: filePath)
videoOutput?.startRecording(to: fileUrl, recordingDelegate: self)
}
// 레코딩 종료
func stopRecording() {
videoOutput?.stopRecording()
}
// 레코딩 완료시 호출
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
if let error = error {
print("Video recording error: \(error.localizedDescription)")
} else {
// outputFileURL을 이용해 비디오를 사용할 수 있음
}
}
}
요약
CoreMedia 라이브러리를 사용하면 iOS 애플리케이션에서 비디오 캡처 및 레코딩을 쉽게 구현할 수 있습니다. 위 예제를 통해 간단한 캡처 및 레코딩 기능을 추가할 수 있습니다.
위 코드를 이용하여 앱에 캡처 및 레코딩 기능을 추가하고, 사용자들이 더욱 풍부한 미디어 경험을 할 수 있도록 지원해보세요!