iOS에서 동영상 스트리밍을 위한 기술 OverView
AVFoundation
https://developer.apple.com/av-foundation/
AVFoundation - Apple Developer
Find presentations, documentation, sample code, and development resources for using AVFoundation. The AVFoundation framework APIs provides essential services for working with time-based audiovisual media on Apple platforms.
developer.apple.com
AVFoundation is the full featured framework for working with time-based audiovisual media on iOS, macOS, watchOS and tvOS. Using AVFoundation, you can easily play, create, and edit QuickTime movies and MPEG-4 files, play HLS streams, and build powerful media functionality into your apps.
- Apple 플랫폼(iOS, macOS, watchOS, tvOS)에서 시간 기반 오디오·비디오 콘텐츠를 다루는 멀티미디어 프레임워크
- 미디어의 재생, 녹화, 편집, 스트리밍을 구현할 수 있으며, HLS(HTTP Live Streaming) 및 FairPlay DRM도 지원
HLS: HTTP Live Streaming
https://developer.apple.com/streaming/
HTTP Live Streaming (HLS) - Apple Developer
Find presentations, documentation, sample code, and development resources for using HTTP Live Streaming (HLS).
developer.apple.com
Send live and on‐demand audio and video to Apple devices and PCs with HTTP Live Streaming (HLS) technology from Apple. Using the same protocol that powers the web, HLS lets you deploy content using ordinary web servers and content delivery networks. HLS is designed for reliability and dynamically adapts to network conditions by optimizing playback for the available speed of wired and wireless connections.
참고
https://brunch.co.kr/@musicman/3
우리가 스트리밍 영상을 보는 방법 - HLS가 뭐야?
우리가 영화를 10초씩 건너뛰고, 버퍼링 없이 영화를 볼 수 있는 방법. | 90년대 후반부터 2000년대 초반까지, 초고속 인터넷 보급이 확대되면서 인터넷에서 동영상이라는 것들이 조금씩 확산되기
brunch.co.kr
https://medium.com/@hongseongho/introduction-to-hls-e7186f411a02
Introduction to HLS
HLS(HTTP Live Streaming)를 제대로 파고들어야 겠다고 쿠팡플레이에 합류하기 전부터 생각했었는데 계속 미루다가 발표를 하게 되어서 드디어 조사하게 되었습니다. HLS의 모든 부분을 알기는 어렵겠
medium.com
- Apple의 HTTP 라이브 스트리밍(HLS) 기술을 사용하여 Apple 디바이스와 PC에 라이브 및 온 ‐ 요구 오디오 및 비디오를 전송
- 웹에 전원을 공급하는 동일한 프로토콜을 사용하여 HLS를 사용하면 일반 웹 서버와 콘텐츠 전송 네트워크를 사용하여 콘텐츠를 배포할 수 있음
- 인터넷을 통해 실시간으로 비디오 컨텐츠를 제공할 때 사용
- HLS는 신뢰성을 위해 설계되었으며 유선 및 무선 연결의 사용 가능한 속도에 맞춰 재생을 최적화하여 네트워크 조건에 동적으로 적용
- 애플이 개발한 비디오 스트리밍 프로토콜
- 비디오를 작은 조각으로 나누어 전송하는 방식
- 비디오 파일을 여러 개의 작은 미디어 세그먼트(Media Segment)로 분할해 전송하며, 이를 .m3u8 형식의 플레이리스트(Playlist) 파일로 관리
- 네트워크 속도에 따라 화질을 다르게 내보낼 수 있는 "Adaptive Streaming"을 지원하는 프로토콜
- 라이브 스트리밍과 주문형 비디오(VOD) 모두 구현할 수 있다
- HLS의 최종 파일은 m3u8 형태
- m3u8: 플레이어가 재생할 비디오 URL의 경로가 담긴 파일
- 일반 텍스트 파일과 동일
- CDN(Content Delivery Network)을 활용해 대규모 사용자에게 안정적으로 콘텐츠 전달
- HTTP 기반: 방화벽과 프록시를 쉽게 통과하며, 별도의 전용 프로토콜이 필요하지 않음
- 다양한 플랫폼 지원: iOS, macOS는 물론 Android와 Web에서도 재생 가능
DRM (Digital Rights Management)
https://www.fasoo.com/glossary/d/digital-rights-management-drm
DRM (Digital Rights Management) | Fasoo
Digital Rights Management (이하 DRM)는 파일을 자동으로 암호화하고, 정형화되지 않은 데이터의 접근 권한을 동적으로 제어하는 도구와 시스템, 데이터 중심의 프로세스를 설명합니다.
www.fasoo.com
- 디지털 콘텐츠의 무단 복제 및 불법 사용을 방지하기 위한 기술 및 정책의 집합
- 영상, 음악, 전자책, 소프트웨어 등 디지털 자산의 저작권 보호를 목적으로 하며, 콘텐츠의 접근·재생·배포를 제한
- Digital Rights Management(DRM)는 파일을 자동으로 암호화하고, 정형화되지 않은 데이터의 접근 권한을 동적으로 제어하는 도구와 시스템, 데이터 중심의 프로세스를 설명
- DRM은 데이터를 저장 중, 사용 중, 전송 중 모두 보호하며, 소비자 분야에서는 저작권이 있는 자료 (예: 컴퓨터 소프트웨어 및 멀티미디어 파일)의 사용, 수정, 배포를 제어
- 기업 환경에서는 Enterprise DRM 을 통해 IT 경계 내외 및 공급망 전체에서 문서와 데이터를 보호해, 내부자의 도난이나 오용, 외부의 무단 접근으로부터 민감한 정보를 지키는 역할
동작 과정
- 콘텐츠 암호화
- 제작된 미디어(영상·음악)를 암호화 알고리즘(AES-128, AES-CTR 등)으로 암호화
- 라이선스 발급
- 사용자가 콘텐츠 요청 시, 인증 후 라이선스 키(복호화 키)를 발급
- 재생 및 접근 제어
- 승인된 사용자만 암호 해독을 수행해 콘텐츠를 재생
- 기기·지역 제한, 유효 기간 설정 등 접근 정책 적용
iOS에서는 FPS(FairPlay Streaming)으로 DRM을 지원
안드로이드, 크롬: Widevine DRM
Windows, Xbox, Edge: PlayReady
FPS(FairPlay Streaming)
https://developer.apple.com/streaming/fps/
FairPlay Streaming - Apple Developer
FairPlay Streaming Secure the delivery of streaming media to devices through the HTTP Live Streaming (HLS) protocol. Using FairPlay Streaming (FPS) technology, content providers, encoding vendors, and delivery networks can encrypt content, securely exchang
developer.apple.com
https://www.vdocipher.com/blog/fairplay-drm-ios-safari-html5/
Apple FairPlay DRM: Video Protection on iOS & Safari in 2025
Apple Fairplay DRM is a technology used to stream content securely and prevent downloads on iOS apps, iOS Safari, macOS Safari, and TV OS.
www.vdocipher.com
- Apple이 개발한 디지털 저작권 관리(DRM) 기술
- HTTP Live Streaming(HLS) 프로토콜을 통해 iOS 기기, Apple TV, macOS의 Safari 브라우저 등에서 스트리밍 미디어 콘텐츠를 안전하게 전달하고 재생하도록 설계
- AVFoundation의 AVContentKeySession을 사용해 키 관리
FairPlay 흐름
클라이언트(사용자 기기)와 콘텐츠 제공자의 서버 간의 상호작용을 통해 암호화된 콘텐츠의 안전한 전달과 재생을 보장
- 콘텐츠 요청 및 암호화된 미디어 전송
- 사용자가 특정 미디어 콘텐츠를 재생하려 하면, 클라이언트는 콘텐츠 제공자의 서버에 해당 콘텐츠를 요청
- 서버는 AES 암호화된 미디어 세그먼트와 함께 암호화 키의 위치를 지정하는 키 파일을 클라이언트에 전달
- 콘텐츠 키 요청 생성 및 전송
- 클라이언트는 암호화된 콘텐츠를 재생하기 위해 콘텐츠 키가 필요하다. 이를 위해 SPC(Server Playback Context) 메시지를 생성
- SPC 메시지는 클라이언트의 고유 식별자와 콘텐츠 정보를 포함하며, 이를 콘텐츠 제공자의 키 서버에 전송
- 키 서버의 응답 및 키 제공
- 키 서버는 수신한 SPC 메시지를 검증하고, 해당 클라이언트와 콘텐츠에 대한 라이선스 정책을 확인
- 정상적인 요청으로 판단되면, 키 서버는 CKC(Content Key Context) 메시지를 생성하여 클라이언트에 반환. 이 CKC 메시지는 콘텐츠 키를 포함하며, 클라이언트가 이를 사용하여 미디어 콘텐츠를 복호화할 수 있도록 함
- 콘텐츠 복호화 및 재생
- 클라이언트는 수신한 CKC 메시지를 통해 콘텐츠 키를 추출하고, 이를 사용하여 암호화된 미디어 세그먼트를 복호화
- 복호화된 콘텐츠는 사용자에게 재생되며, 이 과정에서 AVFoundation 프레임워크와 같은 Apple의 미디어 재생 기술이 활용
Chromecast SDK
https://developers.google.com/cast?hl=ko
Cast | Google for Developers
Google Cast를 사용하여 Cast 지원 기기 간에 간편하게 미디어를 전송하세요
developers.google.com
참고
- Google이 제공하는 Google Cast 플랫폼을 기반으로, 모바일 기기(iOS/Android)나 웹에서 TV, 스피커 등 Cast 디바이스로 멀티미디어 콘텐츠를 전송(캐스팅)할 수 있도록 지원하는 개발 도구
- iOS에서는 Google Cast iOS SDK를 활용해, AVPlayer로 재생 중인 미디어를 Chromecast 지원 기기로 전송하거나 멀티스크린 환경을 구축할 수 있다.
- iOS 기기가 직접 미디어를 스트리밍하지 않음. Chromecast 기기가 서버에서 직접 콘텐츠를 가져와 재생한다.
- YouTube, Netflix 등 주요 서비스에서 기본적으로 Chromecast 지원
- OTT 서비스, VOD 플랫폼, 라이브 스트리밍 구현에 필요
- 비디오 스트리밍, 실시간 미디어, HLS 콘텐츠 제공 시 AVPlayer와 결합해 TV로 콘텐츠를 손쉽게 전송할 수 있음
동작 원리
- Sender (송신자)
- iOS 앱(또는 Android, 웹)에서 사용자가 Chromecast로 보낼 콘텐츠 선택
- Google Cast SDK를 통해 Cast 요청 전송
- Receiver (수신자)
- Chromecast 디바이스에서 Receiver 앱이 실행됨
- 콘텐츠 스트리밍을 시작하고 디스플레이에 미디어 재생
오프라인 재생
- AVFoundation의 AVAssetDownloadTask를 활용
- 오프라인 콘텐츠 관리 및 복호화 처리
- DRM 적용된 콘텐츠 오프라인 재생 구현
성능 최적화 및 디버깅
- AVPlayer 로깅 및 오류 처리
- 미디어 로딩/재생 성능 분석 및 최적화 (Xcode Metrics 활용)
- 메모리 사용량: Instruments → Allocations
- CPU 성능: Time Profiler
- AVPlayer 로깅: AVPlayerItem.accessLog()로 재생 품질 확인
- 배터리 소모 최적화 및 메모리 관리 전략
- 비디오 프레임 제한: preferredForwardBufferDuration을 설정해 메모리 절약
- 적응형 비트레이트: 네트워크 품질에 맞게 preferredPeakBitRate 조절
- 재생 중단 시 리소스 해제
'iOS' 카테고리의 다른 글
[iOS] App Life Cycle (0) | 2025.03.25 |
---|---|
[iOS] WebKit - WKNavigationDelegate (1) | 2025.02.23 |
[iOS] WebKit - WKScriptMessageHandler, WKScriptMessageHandlerWithReply (0) | 2025.02.22 |
[Swift] Ping 로직 (0) | 2024.05.10 |
메모리 최적화 - iOS Memory Deep Dive (1) | 2024.02.23 |