[swift] Swift에서 카메라로 동영상 편집하기

Swift를 사용하여 iOS 앱을 개발하다 보면 카메라로 동영상을 찍고 편집하는 기능을 추가하고 싶을 수 있습니다. 이 기능을 구현하기 위해 AVFoundation 프레임워크를 사용하여 카메라로 동영상을 촬영하고 편집하는 방법에 대해 알아보겠습니다.

AVFoundation 프레임워크

AVFoundation은 오디오 및 비디오 미디어를 처리하기 위한 프레임워크로, iOS와 macOS 앱에서 미디어 캡처, 재생 및 편집 기능을 제공합니다. 카메라로 동영상을 촬영하고 편집하기 위해서는 AVFoundation의 클래스 및 메서드를 사용해야 합니다.

카메라로 동영상 촬영

AVFoundation을 사용하여 카메라로 동영상을 촬영하려면 AVCaptureSession, AVCaptureDevice, AVCaptureInput, AVCaptureOutput 등의 클래스를 사용합니다. 아래는 간단한 예제 코드입니다.

import AVFoundation

let captureSession = AVCaptureSession()
let captureDevice = AVCaptureDevice.default(for: .video)

do {
    let input = try AVCaptureDeviceInput(device: captureDevice!)
    captureSession.addInput(input)

    let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
    previewLayer.videoGravity = .resizeAspectFill
    previewLayer.frame = view.layer.bounds
    view.layer.addSublayer(previewLayer)

    captureSession.startRunning()
} catch {
    print(error)
}

이 코드는 카메라로부터 영상을 캡처하여 화면에 표시하는 기본적인 동작을 구현합니다.

동영상 편집

동영상을 편집하기 위해서는 AVAsset, AVMutableComposition, AVAssetTrack, AVVideoComposition 등의 클래스를 사용합니다. 이를 통해 동영상을 자르거나 필터를 적용하는 등의 작업을 수행할 수 있습니다.

import AVFoundation

let asset = AVAsset(url: videoURL)
let composition = AVMutableComposition()

if let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid) {
    if let assetTrack = asset.tracks(withMediaType: .video).first {
        do {
            try videoTrack.insertTimeRange(CMTimeRange(start: .zero, duration: asset.duration), of: assetTrack, at: .zero)
        } catch {
            print(error)
        }
    }
}

// Add video filters or perform other editing operations

let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
exportSession?.outputURL = outputURL
exportSession?.outputFileType = .mp4

exportSession?.exportAsynchronously {
    // Handle export completion
}

위 코드는 동영상을 불러와서 새로운 조합을 만들고, 필요에 따라 필터를 적용한 후 새로운 동영상을 내보내는 예제입니다.

AVFoundation을 사용하여 iOS 앱에서 카메라로 동영상을 촬영하고 편집하는 과정은 상당히 복잡할 수 있지만, 위에서 소개한 기본적인 예제를 바탕으로 원하는 기능을 추가해 나갈 수 있을 것입니다. AVFoundation을 이용한 동영상 편집에 대한 자세한 내용은 Apple 개발자 문서를 참고하시기 바랍니다.