요즘은 Internet Video가 대세입니다. SmartTV, SmartPhone, SmartPad(iPad, GalaxyTab) 등 어느 디바이스로도 Internet과 연결하여 Video를 시청할 수 있으며 이를 Multi-Screen 서비스라 부릅니다(Any Device, Any Where). 그래서 이번에는 Internet Video Streaming 기술 중 하나인 Microsoft사의 Silverlight Smooth Streaming(SSS)에 대해서 알아 보도록 하겠습니다.
Internet을 통한 Video Streaming이므로 HTTP 프로토콜을 사용하구요. (인터넷은 HTTP가 대세이므로...)
기존 streaming 프로토콜과 구별되는 가장 큰 차이점은 2가지가 있는데요.
첫째, 영상 데이터를 2초짜리로 조각내어 단말로 전달한다는 것입니다. 이 2초짜리 영상 데이터를 Chunk(청크)라고 부릅니다.
둘째, 이 2초짜리 영상 데이터는 다양한 resolution으로 encoding되어 streaming 서버에 저장이 되고, 네트워크 상황과 단말 부하 상황에 따라 adaptive하게 서로 다른 resolution의 데이터(Chunk)를 단말로 전달한다는 것입니다. 이와 같은 기술을 ABR(Adaptive BitRate) Streaming이라 부릅니다.
예를 들어 설명 드리면요,
(1) Encoder가 "쿵푸펜더2" 영상을 아래와 같이 3가지 resolution으로 encoding하여 streamer(video를 단말로 전달하는 장비/서버)에 저장시킵니다.
- resolution3: 1280 x 720 (2,750,000 bps)
- resolution2: 640 x 480 (1,200,000 bps)
- resolution1: 320 x 176 (350,000 bps)
(2) 단말이 streamer에게 "쿵푸펜더2"를 요청하면 streamer는 단말에게 위 3가지 resolution 정보를 전달하구요.
(3) 단말은 일단 가장 작은 resolution1 (320 x 176)을 streamer에게 요청하여 2초짜리 chunk를 하나 받아 play 합니다.
(4) 단말이 이 가장 작은 resolution 영상을 play하는데 문제가 없다고 판단하면(단말 부하도 괜찮고 네트워크 상황도 좋고) 이번에는 이 보다 하나 더 좋은 resolution2 (640 x 480)에 해당하는 2초짜리 영상을 요청하여 받아 play합니다.
(5) 역시 아무 문제 없이 play가 되면 이번에는 더 좋은 resolution3 (1280 x 720)을 요청하고 이를 받아 play합니다.
(6) 이제 사용자는 고성능의 단말과 좋은 네트워크 상황으로 가장 좋은 resolution3의 "쿵푸펜더2"를 감상하게 됩니다.
(7) 아! 그런데 갑자기 옆집에 있는 놈이 P2P를 막 땡기기 시작했고, 그러면서 네트워크 상황이 안좋아 졌습니다. (네트워크 상황이 안좋아졌다는 것은 delay 발생, loss 발생 등이 될 수 있겠죠) 이를 인지한 단말은 현재 resolution보다 하나 작은 resolution2 (640 x 480)을 streamer에게 요청하여 이를 받아 play합니다.
(8) 이후 네트워크 상황이 더 안좋아지면 resolution1을 요청하게 되고, 만약 상황이 좋아지면 resolution3를 요청하겠죠.
이런식으로 Microsoft Silverlight Smooth Streaming은 단말과 네트워크 상황에 adaptive하게 대처하여 "사용자에게 끊김없는 영상을 제공"할 수 있는 기술입니다. 이런 기술은 Microsoft만 가지고 있는 건 아닙니다. 나중에 소개드리겠지만 Adobe와 Apple 역시 이와 매우 유사한 ABR streaming 기술을 가지고 있습니다.