과거 네이버는 네이버 블로그 동영상으로 인기 많았던 적이 있었다. 그 때는 플래시로 했었던 것 같은데, 지금 네이버는 어떻게 스트리밍을 하는지 궁금해서 인터넷을 찾아보았다.
스트리밍 방식
검색을 해보다 나무위키에서 네이버는 동영상을 Progressive Delivery(PD)와 HTTP Live Streaming(HLS)방식으로 나눠 스트리밍 한다는 말을 찾았다. 둘의 차이와 특징은 다음과 같았다.
PD: 홈페이지에서 파일을 다운로드 할 때와 비슷한 방법으로 동영상 파일을 통째로 보내는 방식이다. 파일을 통째로 보내기 때문에 파일이 스트리밍 형식에 적합하기만 하면 별도의 작업이 필요없다는 장점이 있다. 과거 유튜브가 사용하던 방식이다.
HLS: 애플이 개발한 방식. 동영상 파일(.mp4 등)을 일정한 시간 간격(약 2~5초)으로 등분하여 조각 파일로 만든다. 플레이어는 분할된 동영상을 받아와서 재생하고, 다음 장면이 시작되기 전에 필요한 파일들을 받아와서 재생한다. 파일 전체를 다운로드하는 PD와 달리, 필요한 부분들만 전송할 수 있어서, 트래픽 관리에 더 좋다.[각주:1] 파일을 분할하여 보낸다는 점에서 현재 유튜브가 사용하고 있는 방식과 유사하다.[각주:2]
요약하자면, HLS 방식은 파일을 분할하여 전송하고, 트래픽 관리가 더 용이하여 회사(네이버) 입장에서는 돈이 더 적게드는 방식이다. 그래서 HLS 방식으로 넘어간것 같다.
참고로 네이버 플레이어에서 현재 보고 있는 동영상이 어떠한 방식으로 전송되는지는 네이버 플레이어에서 오른쪽 마우스를 눌려서 확인할 수 있었다.
PD의 경우
HLS의 경우
도움말
도움말
라이센스
라이센스
Version 4.*.** (PD)
Version 4.*.** (HLS)
Build Date(**)
Build Date(**)
NAVER Corp.
NAVER Corp.
PD, HLS 동영상 파일 비교
PD와 HLS의 조각 파일들을 합친 파일은 아래와 같은 차이가 있었다.
HLS 동영상 파일을 모두 합치면 PD파일 하나 보다 조금 더 크다. 1080P 6분 동영상 기준으로 약 15메가 정도 더 컸다.
HLS 파일이 PD 파일에 비해서 프레임 수가 조금 더 많았다. 그래서 윈도우의 기본 썸네일 사진이 서로 다르다.
HLS 동영상 파일의 비트레이트가 PD 동영상 파일보다 더 컸다.
전체적으로 HLS 파일이 등분되어 있어서 그런지 양적으로 아주 조금 더 크다. 그래도 화질, 프레임 등 중요한 부분에는 큰 차이가 안 보이는 것 같다.
PD 동영상 정보
HLS 동영상 정보
General Complete name : C:\PD Naver TV 1080P.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom (isom/iso2/avc1/mp41) File size : 150 MiB Duration : 6 min 18 s Overall bit rate : 3 322 kb/s Writing application : Lavf57.25.100 Comment : EX0.6.2(0.6.4)
Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 3 Ref Frames Format settings, CABAC : Yes Format settings, ReFrames : 3 frames Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 6 min 18 s Bit rate : 3 128 kb/s Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 23.976 (23976/1000) FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.063 Stream size : 141 MiB (94%) Tagged date : UTC 2016-11-04 04:14:24
Audio ID : 2 Format : AAC Format/Info : Advanced Audio Codec Format profile : LC Codec ID : mp4a-40-2 Duration : 6 min 18 s Source duration : 6 min 18 s Bit rate mode : Constant Bit rate : 192 kb/s Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 kHz Frame rate : 43.066 FPS (1024 SPF) Compression mode : Lossy Stream size : 8.67 MiB (6%) Source stream size : 8.67 MiB (6%) Default : Yes Alternate group : 1 Tagged date : UTC 2016-11-04 04:14:24
General ID : 1 (0x1) Complete name : C:\HLS Naver TV 1080P.ts Format : MPEG-TS File size : 165 MiB Duration : 6 min 18 s Overall bit rate mode : Variable Overall bit rate : 3 659 kb/s
Video ID : 256 (0x100) Menu ID : 1 (0x1) Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 3 Ref Frames Format settings, CABAC : Yes Format settings, ReFrames : 3 frames Codec ID : 27 Duration : 6 min 18 s Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Variable Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive
Audio ID : 257 (0x101) Menu ID : 1 (0x1) Format : AAC Format/Info : Advanced Audio Codec Format version : Version 4 Format profile : LC Muxing mode : ADTS Codec ID : 15 Duration : 6 min 18 s Bit rate mode : Variable Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 kHz Frame rate : 43.066 FPS (1024 SPF) Compression mode : Lossy Delay relative to video : -42 ms
Menu ID : 4096 (0x1000) Menu ID : 1 (0x1) Duration : 6 min 18 s List : 256 (0x100) (AVC) / 257 (0x101) (AAC) Service name : Service01 Service provider : FFmpeg Service type : digital television
여담
네이버 서비스 내에서는 네이버 스포츠, 뉴스, 쥬니버 네이버 에서 HLS를 사용하였다. 네이버 블로그와 카페는 HLS 가 아닌 PD 방식을 사용했고, 네이버 TV 내부에서도 MBC나 KBS와 같은 방송사 프로그램에서는 PD 방식을 사용했다. 그리고 네이버 TV의 모바일 버전도 PD 방식을 사용한다. 언제부터 HLS 방식을 도입한 것인지는 모르겠지만, 나머지 네이버 서비스들도 HLS 방식으로 언젠간 바뀌지 않을까.
예를 들어, 사용자가 동영상을 사용자가 볼 때, PD 방식은 동영상을 일시정지를 시키든 말든, 사용자가 도중에 동영상을 안보고 나갈 예정 이더라도, 동영상 파일 전체를 계속해서 끝까지 받는다. 반면에, HLS는 사용자가 일시정지를 하면 동영상을 더 이상 받지 않고, 동영상 재생에 필요한 앞 30초 부분 정도만 다운로드 한다. [본문으로]