모바일 및 데스크탑 환경에서 비디오 재생 기능은 사용자 경험의 중요한 부분입니다. 하지만 Apple의 AVFoundation은 MKV, FLAC 파일과 다양한 자막 포맷을 지원하지 않으며, RTSP, SMB, UPnP와 같은 네트워크 프로토콜도 지원하지 않습니다. 이러한 한계를 극복하고자 개발된 SwiftVLC 프로젝트가 주목받고 있습니다. SwiftVLC는 libVLC를 기반으로 한 현대적인 Swift 래퍼로, iOS, macOS, tvOS 및 Mac Catalyst에서 활용할 수 있습니다.

이 글에서는 SwiftVLC의 주요 기능과 설치 방법, 기본 사용법을 소개하여, 개발자가 실제로 이 라이브러리를 활용할 수 있도록 안내하겠습니다.

SwiftVLC의 주요 기능

SwiftVLC는 다음과 같은 다양한 기능을 제공합니다:

  • @Observable 플레이어: 상태, 현재 시간, 지속 시간, 트랙 및 볼륨을 SwiftUI와 직접 연결합니다.
  • VideoView(player): 단일 SwiftUI 뷰에서 렌더링 라이프사이클을 처리합니다.
  • 타입 오류 처리: throws(VLCError)를 통해 오류를 타입 안전하게 처리합니다.
  • 비동기 미디어 파싱: try await media.parse()를 사용하여 미디어 파일을 비동기적으로 파싱할 수 있습니다.
  • 10밴드 이퀄라이저: libVLC의 내장 프리셋을 사용하여 오디오 환경을 조정합니다.
  • A-B 루프 및 재생 속도 조절: 자막 및 오디오 지연을 조정할 수 있는 기능을 제공합니다.
  • PIP(그림 속 그림): 전체 재생 컨트롤이 포함된 PIP 기능을 지원합니다.
  • 네트워크 탐색: LAN, SMB, UPnP 미디어 소스, Chromecast 및 AirPlay 렌더러를 지원합니다.
  • 360도 비디오: 시점 제어(요, 피치, 롤 및 시야각)를 통해 360도 비디오를 재생할 수 있습니다.
  • 비동기 썸네일 생성: 임의의 타임스탬프에서 썸네일을 비동기적으로 생성합니다.
  • MediaListPlayer: 재생 목록 기능을 제공하며, 반복 및 루프 모드를 지원합니다.
  • 설치 방법

    SwiftVLC를 설치하는 과정은 간단합니다. Xcode에서 다음 단계를 따르면 됩니다:

    1. Xcode에서 File → Add Package Dependencies를 선택합니다.
    2. 아래의 URL을 붙여넣고 최신 릴리스를 선택합니다:
    3.    https://github.com/harflabs/SwiftVLC.git

      기본 사용법

      SwiftVLC를 사용하여 간단한 비디오 플레이어를 구축해보겠습니다. 아래 코드는 SwiftUI를 활용한 비디오 재생 예제입니다.

      import SwiftUI
      import SwiftVLC
      
      struct ContentView: View {
          @State private var player: VLCPlayer = VLCPlayer()
          
          var body: some View {
              VideoView(player: player)
                  .onAppear {
                      let media = VLCMedia(url: URL(string: "https://www.example.com/video.mp4")!)
                      player.media = media
                      try? player.play()
                  }
                  .frame(width: 300, height: 200)
          }
      }
      
      @main
      struct MyApp: App {
          var body: some Scene {
              WindowGroup {
                  ContentView()
              }
          }
      }

      위 코드를 통해, VideoView를 사용해 간단한 비디오 플레이어를 만들 수 있습니다. URL에 비디오 파일의 링크를 설정하고, 플레이어 객체를 초기화하여 비디오를 재생합니다.

      실무에서의 활용 시나리오

      SwiftVLC는 다양한 비디오 재생 기능을 제공하기 때문에, 여러 가지 시나리오에서 활용할 수 있습니다. 예를 들어, 멀티미디어 콘텐츠를 제공하는 앱을 개발할 때, 사용자가 다양한 비디오 포맷을 원활하게 재생할 수 있도록 지원할 수 있습니다. 또한, 비디오 스트리밍 서비스나 교육용 앱에서도 효과적으로 사용할 수 있습니다.

      비슷한 도구와의 비교

      SwiftVLC와 유사한 도구로는 VLCKit가 있습니다. VLCKit은 Objective-C로 작성되었으며, Swift와의 브리징이 필요하지만, SwiftVLC는 Swift를 직접 사용하여 더 현대적인 방식으로 개발되었습니다. SwiftVLC는 Swift 6의 특성을 활용하여 더 나은 상태 관리 및 비동기 처리를 지원합니다.

      FeatureSwiftVLCVLCKit
      LanguageSwift 6Objective-C
      BindingsDirect C → SwiftC → Objective-C → Swift bridging
      State management@ObservableKVO & Delegates
      Concurrencyasync/awaitManual Thread Dispatch
      Video renderingVideoView(player)Manual UIView Setup

      추천 대상

      SwiftVLC는 다음과 같은 개발자에게 추천합니다:

    4. 다양한 비디오 포맷을 지원하는 앱을 개발하고자 하는 iOS/macOS 개발자
    5. SwiftUI를 활용하여 현대적인 UI를 구현하고자 하는 개발자
    6. 고급 비디오 기능(예: PIP, 360도 비디오 등)을 필요로 하는 프로젝트를 진행하는 개발자

비디오 재생 기능이 필요한 프로젝트에서 SwiftVLC를 사용해보세요. 더 많은 정보는 SwiftVLC GitHub 페이지를 방문하여 확인하실 수 있습니다.