이전글에서 우리는 Full HD/8bit/30FPS 영상과 Full HD/10bit/30FPS 영상이
어떤 과정으로 1.5Gbps, 1.9Gpbs의 비디오 용량을 가지게 되는지 설명 드렸습니다.
오늘은 다양한 압축 규격과 왜 각각의 압축 규격들이 그 비디오 대역폭, 몇 그 비디오 용량 가지게 되었는지 그 과정을 설명드리겠습니다.
*이번글에서는 1920X1080 해상도를 갖는 10비트, 30FPS 영상을 기준으로
‘원본의 영상 품질과 최대한 비슷할 것’이라는 전제조건으로 설명드리겠습니다.
글의 순서
- 1. 비디오 데이터를 YUV값으로 저장하는 이유
- 2. JPG 압축방식을 적용한 MPEG-2
- 3. MPEG-2/100Mbps로 줄여보자.
- 4. MPEG-2/20Mbps로 줄여보자.
- 5. H.264/10Mbps로 줄여보자.
- 6. H.265/5Mbps로 줄여보자.
- 7. 비디오 대역폭에 따른 비디오 용량
1. 비디오 데이터를 YUV값으로 저장하는 이유
사람의 눈은 의외로 색깔을 구분하는 능력이 떨어집니다.
사람의 눈이 밝기에는 민감하지만 색상에는 좀 둔감하게 설계되었기 때문입니다.
그런데, RGB로 만들어진 비디오 데이터는 색상 데이터로만 이루어져 있습니다.
그러니까 사람이 구분할 수도 없는 영역의 데이터들까지 같이 저장되기 때문에
이 부분이 없어도 우리가 영상을 보는 데는 큰 지장이 없다는 것입니다.
그래서 우리는 세 가지의 RGB라는 컬러 값 대신
‘1개의 흑백 신호’와 ‘2개의 색상 차이 데이터’만 가지고 영상을 다시 저장하게 되면 데이터 용량을 많이 줄일 수가 있습니다.
이렇게 만들어진 색 공간을 ‘YUV 색 공간‘이라고 지칭합니다.
그래서 보통 비디오 데이터들은 RGB가 아닌 YUV 값으로 데이터를 저장하게 됩니다.
RGB와 YUV는 간단하게 상호 변환이 가능합니다.
이 과정에서 데이터 손실이 어느 정도 일어나기는 하지만 인간의 눈으로 구분하기는 굉장히 힘들기 때문에
무시할 수 있는 수준이라고 보통 이야기들을 합니다.
YUV라는 것은 원래 흑백 TV와 컬러 TV와의 호환성을 위해서 만들어진 규격인데
비디오 용량의 절감을 위해서 아직까지도 쓰이고 있는 개념입니다.
이렇게 RGB 데이터를 YUV로 바꾸게 되면 데이터 용량을 무려 33%나 줄일 수 있게 됩니다.
그래서 우리는 1.9Gbps를 차지하는 비압축 데이터 HD 영상을 YUV로 변환해서 1.33Gbps 정도로 줄일 수가 있습니다.
*무손실과 무압축의 개념
–무압축(비압축)은 말 그대로 압축을 하지 않았다는 개념입니다. 보통 ‘비압축’이라는 말로 사용됩니다.
–무손실 압축은 ‘압축을 하기는 하는데 인간의 눈으로 구분할 수 없을 정도의 화질 손실만 있다’라고 하면 우리가 보통은 ‘무손실 압축’이다라고 이야기를 합니다.
2. JPG 압축방식을 적용한 MPEG-2
1.33Gbps라는 비디오는 압축되지 않은 원본을 뜻합니다.
정지 이미지로 계산을 하자면 BMP 파일이나 PNG 파일 정도가 됩니다.
그런데 실제로 우리가 많이 사용하고 있는 정지 이미지 포맷은 JPG 파일을 제일 많이 씁니다.
용량이 작기 때문입니다.
JPEG 압축은 보통 중복되는 데이터를 삭제하는 방식으로 이루어집니다.
한 가지 예로 만약에 반에서 아이들의 성씨를 조사한다고 해봅시다.
1번 박 씨, 2번 김 씨, 3번 박 씨, 4번 박 씨, 5번 이 씨…
이런 식으로 몇 백 명의 데이터를 기록해놓고 보면 데이터 용량이 굉장히 많을 겁니다.
그런데 이것을 김 씨 100명, 이씨 50명, 박 80명 이런 식으로 정리한다면 단 몇 줄만으로 보고서를 쓸 수가 있을 겁니다.
이렇게 중복되는 데이터를 압축해서 저장하는 것이 JPG의 특징입니다.
그래서 이 JPG의 압축 기법을 그대로 동영상에 적용한 것이 바로 ‘MPEG-2’가 됩니다.
3. MPEG-2/100Mbps로 줄여보자.
MPEG-2의 첫 번째 특징은 압축률을 조정할 수가 있다는 겁니다.
많이 압축할 것이지 적게 압축할 것인지를 조정할 수가 있는 특징을 가지고 있습니다.
두 번째 특징은 MPEG은 손실 압축이라는 겁니다.
왜냐하면 JPG 자체가 손실 압축 방식이기 때문에 JPG를 사용한 MPEG 동영상 압축은 기본적으로 손실 압축일 수밖에 없습니다.
하지만 일반적인 사람의 눈으로 보기에는 그 차이를 구분하기는 쉽지 않습니다.
현재 우리들이 집에서 보고 있는 HD 방송도 MPEG-2 압축방식을 이용해서 전송이 되고 있습니다.
그리고 예전에 자주 사용됐었던 HDV라는 규격이 있습니다.
바로 HDV도 MPEG-2 압축방식으로 저장이 되는 영상 데이터입니다.
그리고 현재 라이브 전송 프로토콜로 가장 많이 사용되고 있는 NDI도 MPEG-2를 기반으로 동작을 하게 됩니다.
이렇게 MPEG-2를 사용을 하면 압축되지 않은 YUV 비디오가 1.33bps 정도인데 이것을 MPEG-2로 바꾸게 되면 약 100Mbps 정도로
즉 1/13 정도로 압축을 할 수 있게 됩니다.
이게 바로 NDI의 대역폭입니다.
다시 말해, NDI는 모든 프레임들이 I 프레임, 즉 ‘진짜 이미지들’로 이루어져 있습니다.
쉽게 말해서 비디오를 열어보면 각 프레임들이 모두 다 JPG로 압축된 이미지들로 이루어져 있다고 보시면 됩니다.
4. MPEG-2/20Mbps로 줄여보자.
그러면 여기서 ‘영상의 모든 프레임들이 다 진짜 프레임이지 가짜 프레임이 있을 수 있겠냐?’라고 의문을 가질 수도 있을 겁니다.
실제로 가짜 이미지를 넣어서 비디오를 만들기도 합니다.
정확하게 말하자면 이미지가 아니라 ‘이미지의 움직이는 값’들만 저장하는 방식인데
이렇게 되면 비디오 용량을 엄청나게 줄일 수가 있습니다.
앞에서 얘기한 것처럼 NDI는 MPEG-2에 100Mbps를 이용해서 모든 이미지들을 ‘진짜 이미지’, I 프레임으로 저장을 하게 됩니다.
그런데 여기에 짝퉁 이미지들을 좀 섞어서 집어넣게 되면
우리가 표준 MPEG-2라고 불리는 IBP 프레임 구조를 사용하게 됩니다.
이렇기만 돼도 데이터 용량을 1/5 정도 더 줄일 수가 있습니다.
그래서 표준 MPEG-2코덱을 사용하는 FUll HD 비디오는 약 20Mbps로 용량이 줄어들게 됩니다.
이것이 바로 우리가 보고 있는 HD 방송의 품질입니다.
HD 방송의 표준 대역폭은 19.8Mbps, 즉 20Mbps 정도가 됩니다.
5. H.264/10Mbps로 줄여보자.
그런데 사실 이 20Mbps도 큰 편입니다.
요즘은 집에서 보통 IPTV를 이용해서 방송을 보실 겁니다.
BTV나 Olleh TV, LG Uplus TV…이런 것들은 다 IPTV들입니다.
이렇게 인터넷 데이터를 통해서 방송 송신을 하는 경우에 20Mbps는 결코 작은 대역폭이 아닙니다.
데이터 용량을 더 줄여야 통신사에서 수지타산을 맞출 수가 있기 때문입니다.
그래서 MPEG-2에서 2배 정도 데이터를 더 압축해서 만들어 놓은 비디오 규격이 바로 H.264라는 규격입니다.
MPEG-2를 H.264로 바꾸게 되면 약 2배 정도 데이터를 더 압축할 수 있기 때문에
20Mbps인 MPEG-2 기반의 HD 방송을 H.264로 바꾸게 되면 약 10Mbps로 만들 수 있습니다.
그래서 실제로 여러분들의 가정에서 보고 있는 IPTV들의 대역폭이 보통 8Mbps에서 10Mbps 정도로 잡히게 되는 겁니다.
이런 과정을 거쳐 우리가 원래 만들었던 2Gbps 정도의 비압축 데이터가 지금은 10Mbps로 줄었으니까 200배가 줄어든 셈입니다.
6. H.265/5Mbps로 줄여보자.
H.264가 압축률이 좋기는 한데 이것을 4k로 만들면 이야기가 또 달라집니다.
4k는 HD 데이터의 4배 용량이 필요합니다..
H.264를 가지고 4k로 만들게 되면 10Mbps가 아니라 40Mbps가 나오게 되는 겁니다.
이 40Mbps라는 용량은 전송용으로 쓰기엔 굉장히 큰 용량입니다.
이렇게 H.264에서 조금 더 많이 압축을 하려고 만들어진 규격이 H.265/HEVC라는 코덱입니다.
H.265/HEVC로 변환하게 되면 4Mbps~5Mbps까지 데이터 용량을 줄일 수 있게 됩니다.
안타깝게도 HEVC는 복잡한 라이센스 규격 때문에 아직도 다양하게 쓰이지 못하고 있는 현실이기도 합니다.
대신에 비슷한 압축률을 가진 AV1이나 VP9같은 비디오 코덱들을 실제로 유튜브나 넷플릭스에서 사용되고 있습니다.
7. 비디오 대역폭에 따른 비디오 용량
1920×1080 해상도를 갖는 Full HD, 30FPS 영상을 RGB/10bit로 샘플링을 하면 1.9Gbps를 갖게 됩니다.
이것을 YUV로 변환하면 1.33Gbps가 나오게 됩니다.
이것을 진짜 이미지, I 프레임 Only MPEG-2로 변환하면 100Mbps로 줄어들게 됩니다.
IBP 프레임 구조로 적용을 하면 20Mbps로 줄어들게 됩니다.
여기서 H.264로 변환하면 10Mbps~8Mbps 정도가 나오게 됩니다.
여기서 HEVC/H.265를 쓰게 되면 4Mbps~5Mbps까지 줄일 수가 있게 됩니다.