[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 애플리케이션에서 비디오 캡처 및 레코딩을 쉽게 구현할 수 있습니다. 위 예제를 통해 간단한 캡처 및 레코딩 기능을 추가할 수 있습니다.

위 코드를 이용하여 앱에 캡처 및 레코딩 기능을 추가하고, 사용자들이 더욱 풍부한 미디어 경험을 할 수 있도록 지원해보세요!

참고