[swift] Swift에서 카메라로 스포츠 촬영하기

스포츠를 즐기는 사람이라면, 특별한 순간을 기록하고 싶을 때가 많을 겁니다. Swift로 카메라 앱을 만들어서 스포츠 촬영을 쉽게 해볼까요?

필요한 기능

  1. 카메라 접근: 사용자의 카메라에 접근해서 실시간으로 화면을 보여줍니다.
  2. 사진 촬영: 버튼을 누르면 현재 화면을 촬영하여 저장합니다.
  3. 비디오 녹화: 버튼을 누르고 있는 동안 화면을 녹화하여 저장합니다.

카메라 접근 및 화면 표시

import UIKit
import AVFoundation

class CameraViewController: UIViewController, AVCapturePhotoCaptureDelegate {

  var captureSession: AVCaptureSession!
  var stillImageOutput: AVCapturePhotoOutput!

  override func viewDidLoad() {
    super.viewDidLoad()

    captureSession = AVCaptureSession()
    captureSession.sessionPreset = .photo

    guard let backCamera = AVCaptureDevice.default(for: .video) else { return }

    do {
      let input = try AVCaptureDeviceInput(device: backCamera)
      stillImageOutput = AVCapturePhotoOutput()

      if captureSession.canAddInput(input) && captureSession.canAddOutput(stillImageOutput) {
        captureSession.addInput(input)
        captureSession.addOutput(stillImageOutput)
        setupLivePreview()
      }
    } catch let error  {
      print("Error Unable to initialize back camera: \(error.localizedDescription)")
    }
  }

  func setupLivePreview() {
    // 기기의 화면을 보여주기 위한 코드
  }
}

사진 촬영

@IBAction func capturePhoto(_ sender: Any) {
  let settings = AVCapturePhotoSettings()
  stillImageOutput.capturePhoto(with: settings, delegate: self)
}

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
  guard error == nil else { return }
  guard let imageData = photo.fileDataRepresentation() else { return }
  let image = UIImage(data: imageData)
  // 촬영한 이미지를 저장하거나 다른 작업 수행
}

비디오 녹화

비디오 녹화에 대한 코드는 조금 더 복잡합니다. 관련 자료를 참고하시기 바랍니다.

마치며

이렇게 Swift로 간단한 카메라 앱을 만들고, 스포츠 촬영을 할 수 있게 되었습니다. 앱을 더 발전시켜서 필요한 기능을 추가해보세요. 재미있는 스포츠 촬영이 되길 바라겠습니다!

참고: Apple Developer Documentation