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 개발자 문서를 참고하시기 바랍니다.