저번엔 동영상의 아주 기본적인 요소들과 오디오 비트에 대해 자세히 살펴봤구요

오늘은 좀더 파일 구성에 대해 살펴본뒤
쓸데없는 긴 비디오 비트에 대한 개념을 설명하겠습니다...








이 블로그까지 오셨다면 평소에 mkv 파일이나 wmv파일은 다들 한번쯤 보셨겠죠?

avi , mkv , wmv , flv 등등 다 똑같은 동영상 들인데 왜이렇게 확장자가 다를까요

일단 이런것들을 컨테이너 라고 부릅니다






avi 부터 설명할께요
이건 동영상 초기부터 지금까지 쭉 쓰일정도로 단순하면서도 동영상 기능이 충실히 담긴 컨테이너 입니다

거의 모든 코덱으로 압축한 영상과 음성이 파일안에 들어갈수 있으며

파일 첫부분 에는 당연히 이 파일을 디코딩(재생) 하기 위한 비디오와 오디오에 대한 기본적인 정보들이 담겨있습니다 다른것들도 마찬가지죠



mkv는 뭐가 다를까요? avi보다 화질이 좀더 좋을까요?

일단 mkv는 avi보단 거의 최근에 나온 포멧이긴한데 (2003년?)

아무튼 화질은 같답니다 담는 방법이 다를뿐
(아주 정확하게 말하자면 avi 와는 담는방법이 다르기에 같은 동영상을 넣어도 용량이 1%쯤 줄어들기도 합니다 avi가 오디오 병합시에 방법때문에 용량이 약간 더 늘어나는 거라고 하네요)

화질은 인코딩때 코덱에서 결정되고 영상,음성이 담긴 방법만 다를뿐이죠

당연히 새로나온 놈인 만큼 avi의 모든 기능을 할수있고

추가로
장면에 따라 프레임레이트를 바꿀수 있다던지,
인코딩된 화면 해상도와 재생시 해상도를 다르게 할수도 있고,
dvd처럼 챕터를 나눌수 있는 기능, 오디오를 여러개 넣고, 파일안에 자막파일을 넣을수 있는 등 다양한 기능이 있습니다




그럼 wmv는 뭘까요
windows media video 의 약자로 마이크로 소프트 전용.... 독자적인 방식입니다

wmv 파일 에는 wmv1 / wmv2 / wmv3 코덱
(각각 윈도우 미디어플레이어 버전에따라 wmv7 /wmv8 /wmv9 라고 부르기도 합니다)

처럼 마이크로 소프트 자기네들 코덱만 담을수 있습니다

이것도 1개의 동영상 파일안에서 프레임을 변화시킬수 있는 가변 프레임레이트가 가능하고

DRM 이라고 해서 영상을 재생시키기 위해서 인증을 받아야하는..... 무시무시한 절차를 넣을수 있습니다
(아직 뚧는방법이 없다고하죠.. 성공했다고 간간히 기사가 나오기도 하는데 떠들석하지 않은거 보면 업데이트되면 막히는것 같습니다)

주로 인터넷 강의 동영상에도 사용되고 특정기종의 pmp안에서만 작동가능하게 해놓기도 합니다... 물론 사용하려면 라이센스 비를 지불해야 되는걸로 알고 있구요

마찬가지로 windows media audio, wma 의 확장자를 가진 음악파일도 DRM 가능합니다



flv
플래시 비디오 파일입니다 플래시용으로 사용될 동영상을 담을 목적으로 만들어졌기에
사용할 수 있는 코덱에 제약이 좀 있습니다

엠x 캐스트 처럼 동영상 서비스 하는 곳들에서 사용하는데요

플래시로 구동 가능한점,
플래시 비디오용 코덱(vp)이 압축효율이 좋은점,
wmv보다 싸게 먹히는점?..
등등
에다 인터넷들이 발달해서 급속하게 동영상 서비스 하는곳들이 늘어났죠

이런 사이트들에 동영상을 올리게되면
플래시 비디오 코덱들로 해상도나 비트레이트를 바꿔 자기네들 마음대로 재 인코딩해서 flv파일로 고치고 올라가게 됩니다












여기 까지 파일포멧에 대해 알아둬야 할것만 대충 다 설명했네요

흠 파일 앞부분엔 파일을 재생시키기 위한 기본적인 정보도 담겨있다고 설명했는데요
잠시 거기에 대해 다시 구체적으로 설명하겠습니다

동영상 파일을 재생시키기 전에 그 파일이 어떤 코덱으로 인코딩 되었는지 알아야 그 코덱으로 디코딩해서 재생을 하겠죠?

그 어떤 코덱인지에 대한 정보가

파일 제에에에에일 앞머리에 간단한 몇글자로 새겨져 있습니다

이걸 FOURCC 라고 하는데요

Divx 코덱은 dx50
Xvid는 XVID
x264는 avc1

하는 식으로 약속이 되있는데 음... 좀더 자세한건 이 홈페이지에 구토가 나올정도로 상세히 나와 있습니다
http://www.fourcc.org/codecs.php

FOURCC 아셨죠?














자 이제부터는 어렵고 중요한 YUV 서브샘플링에 대해 적습니다...


비디오 비트에 대한 설명인데요

저도 이거 정말 적기 싫습니다

어려운 정도에 비하면 쓸데없기도 하지만... 인코딩때 너무 자주 나오니까 여러분들 이거보고 겁먹지 마라고 가르쳐 드리는 거니까
다음에 오셔서 봐도 되는거니 이해가 가면 끄덕이고 넘어가시길 바랍니다

일단 뭐에 대해 배울지 보여 드리겠습니다
http://www.fourcc.org/yuv.php


이거 숫자들 다 외워야 되나구요?

네 다 외워오시면 욕해드릴 겁니다
이쪽 관련 프로그래밍을 하지 않는이상 저런 어려운걸 알필요는 없죠



우리가 배울건 저중에 대표적인 몇가지와 기본개념입니다

근데 그 기본개념을 제가 지금 설명 할텐데 제 설명이 너무 어렵다 하시면 다른 사이트 설명도 둘러 보세요...








먼저 RGB에 대한 기초적인것 부터 설명하겠습니다

RGB는 상대적으로 쉬운데요..




흠... 그림 파일에 있어 무압축이라 하면 뭘까요

bmp 파일이 막 떠오르지 않나요?

24비트 비트맵 파일에 대해 알아보겠습니다


24비트란.... 갯수로 치자면 16777216색 인데요



그래서 왜 24비트 이냐하면

RGB 레드 그린 블루 각각에 8,8,8 비트를 분배해서 그렇습니다 (24비트 RGB를 RGB888 라고도 부릅니다)


8비트란 0과1이 표시되는 칸8개로 표현 가능한 숫자, 즉 256 가지니까

빨강 초록 파랑 의 각 성분을 256 단계로 정하고 그 원소 단계 조합으로 256 x 256 x 256 = 16777216 색깔이 나온다는 소리죠

또 제어판에 모니터 디스플레이 설정 처럼 ARGB 32비트 하는것도 있는데 그건 8비트 A를 더 추가한거죠 A는 알파 라고해서 튜명한 정도를 저장해두는 값입니다

이정도는 이미 알고 계셨나요?


이게 우리가 보통 알고 있는 컴퓨터 색깔 표현 입니다








그럼 이제 본격적으로.... YUV에 대한 설명을 하겠습니다

RGB는 레드그린블루 였는데 YUV는 뭘까요
 
이 YUV의 탄생이유에 대해 배우기 전에 더 앞서 중학교 과학시간으로 거슬러 올라가 봅시다....



사람이 물체를 볼수 있는 이유는 뭘까요? 빛이 눈으로 들어오기 때문입니다
빨간색 물체가 보이는 이유는 뭘까요? 그물체가 빨간색빛을 반사해 눈으로 빨간빛이 들어오기 때문입니다

그럼 우리가 눈으로 볼수 있는 색깔의 범위는 어떻게 될까요??



흠................ 이유는 잘 모르겠지만

과학자들이 밝혀낸 바로는.. 생물시간에 외운 바로는...
눈속 망막엔 빛을 감지하는 원추세포와 간상세포라는게 있는데

원추세포는 빛의 강도에 아주 민감하게 반응하고...!!
간상세포는 어두운곳이나 색깔에 반응한다고 합니다...!!!


(간상세포가 색깔에 어떻게 반응하느냐 하면 빨간색, 초록색, 파란색 파장에 반응한다고 하죠
결국 빛의 3원색은 RGB 이지만 이건 지금 YUV 설명과 관계가 없습니다
또 미술시간엔 색의 3원색에 검정을 더해서 CMYK 라고 사이안 마젠타 옐로우 검정 이렇게도 배우는데
(정확한 색은 프린터기의 3색 칼라잉크와 검정잉크가 지향하는 색깔입니다)
이런건 지금 잡소리에 불과하고....)





중요한점은 간상세포 보다 원추세포가 더 빛에 민감하게 반응한다는 점이죠

즉 뭔가를 볼때 색깔보다는 밝기변화를 더 잘 알아 차린다는 겁니다




그런 이유로 눈이 잘못보는곳 때문에 자원을 허비하지 않도록 YUV 를 사용합니다

자 그럼 드디어 YUV가 뭐냐하면 Y는 휘도성분 U는 파란색 색차 성분 V는 빨간색 색차 성분 입니다

Y는 밝기에 대한 정보 (흑백화면을 생각하시면 이해하기 쉽습니다)
U와 V에는 색상에 대한 정보가 담겨있습니다


그럼 Y 에는 많은 비트를 할당해서 세분화 시키고 U, V에는 색깔 갯수를 줄이나요?

라고 생각 하신분은 정말 똑똑하지만 반 맞고 반 틀렸습니다...



그렇게 색깔의 단계를 조절한건 아니고

색상 정보를 저장하는 픽셀의 갯수를 조절 합니다






일단 이름들 부터 소개하겠습니다

YUV 4:4:4
YUV 4:2:2
YUV 4:1:1
YUV 4:2:0

무슨소린가 하면 YUV 4:2:2 는
y가 4개 들어갈때 u성분은 2개 v성분도 2개 그런 소리입니다


음 설명하기 어렵네요
그림으로 보시면 쉽겠죠?

4 x 1 픽셀을 한 세트로 생각 하면 이해하기 쉬울거 같아 그렸습니다

그림 잘 이해가 가시나요? 4:4:4의 경우 매 픽셀마다 Y신호와 색차 신호가 박혀있죠?
RGB를 이런식으로 표시해본다면 R1G1B1 그 오른쪽칸엔 R2G2B2  ,  R3G3B3  ,  R4G4B4
이런식으로 4:4:4 와 비슷할텐데 안그려넣었네요...


4:2:2 는 가로로 두개의 Y신호에 공통된 U,V 색차신호를 가집니다
4:1:1 은 가로 네개의 Y에 U,V 가 공통되고
4:2:0은 2x2 칸을 공통으로 가지는거 보이시죠? (채도 부분만 해상도가 떨어진다고 생각하시면 쉬울지도)

yuv 4:2:2 는 주로 yuy2 라고 불립니다
yuv 4:2:0 은 주로 yv12 라고 불립니다 (메모리에 yuv 데이터를 정렬하는 방법에 따라서도 이름이 바뀝니다 생긴건 같고 이름은 yv12, nv12 ... 등등)
4:1:1 은 옛날에 비디오쪽에서만 쓰였고 거의 안쓰입니다

4:4:4 의 경우 y에8 u에8 v에8    8+8+8=24bit 고
4:2:2 역시 y8 u8 v8 이지만 u와 v가 갯수가 반으로 줄었으니   8+4+4=16bit 입니다
4:2:0 은 12bit 쉽죠?


http://hruj.tistory.com


비트수는 절반으로 줄었지만

화질차이는 1픽셀짜리 날카로운 선들이 색상별로 막 엉켜있는 인위적인 영상만 아니면 거의 같습니다
yuv가 더 효율적이고 좋아 보이시나요?


어... 막상 설명 적고보니 yuv에 대한 내용이 그리 어렵지는 않네요 내가 그림을 너무 잘 그려 넣어서 그런가











끝으로 알아두실것,


  • 비디오계 에서 YUV 4:2:2 무압축은 화질 열화가 없는 무손상으로 정의합니다
    (그만큼 화질차이가 잘 안보입니다)
  • 엄밀하게 말하자면 u의 파란색성분 v의 빨간색성분 이라고 말할때 파란색 빨간색은
    RGB의 블루 레드 도 아니고 CMYK의 사이안 마젠타도 아닙니다 포토샵에 나오는 Lab 와도 개념이 흡사하지만 역시 색깔은 다르다고 합니다
  • 제가 설명할때도 YUV라고 설명 했지만 인코딩에서 YUV는 사실은 잘못된 용어이고 YCbCr 가 맞습니다 하지만 대부분 인코딩 프로그램에선 YUV로 나오니 헛갈리지 마세요




또 RGB와 YUV에 대해 긴 이야기 하나더 늘어놓자면....

제가 왜 이걸 쓸데없이 복잡다고 몰라도 된다고 했게요?

몰라도 되고 쓸데가 없으니까.......



RGB 24비트짜리부터
YUV 12비트까지 쭉 배웠지만
실제 YV12 동영상은 RGB888 동영상에 절반 용량일까요???

전혀 아닙니다
워낙 코덱들이 좋아서 인코딩 하게되면 용량차이는 간에 기별도 안갑니다...
지금 YV12와 RGB는 그저 무압축때 이동되는 자료량의 대역폭을 줄여주는 역할밖에 없습니다
컴퓨터 좋은 지금 시대엔 쓸데 없다는거죠

인코딩에선 특히나 더 몰라도됩니다




그럼 왜 굳이 YUV 라는걸 사용하게 됬을까요??

우리 눈이 받아들이는 빛의 3원색은 RGB인데 RGB로 표시해야 훨씬더 정확할꺼같지 않나요?
거기다 요즘 흔히 쓰이는 LCD모니터들의 발광 방식도 RGB광원인데도 말이죠???



이 이야기는 사실 19xx년대 티비라는 매체가 과연 대중화 될수있을까를 논하던 시대까지 거슬러 올라갑니다...

그때 당시에는 티비들이 흑백 티비고 흑백방송을 했기 때문에 방송때 흰색과 검은색 화면
YUV 의 Y신호처럼 보냈었습니다

그리고 또 시간이 흘러 칼라 텔레비전들이 나오기 시작 했는데요
방송국에서 어떻게 신호를 보내서 방송해야
흑백 티비도 잘 나오고 칼라 티비도 잘 나올수 있을까요?... 쉽죠?


그래서 덜컥 쭉 여기까지 와버린게 YUV입니다...

흑백 티비는 Y만 받아 표시하고 UV는 버리고
칼라 티비는 YUV를 모두 사용하면 되니까






그럼 오늘은 여기까지 적습니다
사실 오늘글은 어디서 틀렸을꺼같은 느낌이 막 드는데 인터넷을 뒤져봐도 자료가 없어서 잘 모르겠습니다

다음 시간엔 이걸 알아야 인코딩 70% 먹고 들어가는...
이걸 모르면 인코딩을 하는게 아닌...
특히 다들 어려워하고 피해갈 수 없는...

인터레이스 영상에 대해 알아보겠습니다

Posted by hruj

댓글을 달아 주세요

  1. hruj 2008.02.19 14:39 신고  댓글주소  수정/삭제  댓글쓰기

    아맞다 mkv가 화질이 좋은이유가 생각이 난김에 말해 드릴께요
    mkv는 나온지 얼마 안되서 지원 프로그램이 적죠
    megui나 MKVmerge나 버추얼덥 모드를 사용해서 만든건데
    그정도 아는사람은 이미 고수고 영상에 대해 해외를 헤엄쳐 본..??
    고수일 가능성이 높기 때문에 mkv가 화질이 좋습니다
    이 확률이 국내에선 어느정도 통합니다

  2. dbspark 2008.04.28 14:14 신고  댓글주소  수정/삭제  댓글쓰기

    잘 읽었습니다.

    RGB YUV에 대한 자료를 찾던 도중 들렀는데..
    이해하기 쉬운 설명 감사드립니다..^^

  3. aht 2008.10.13 17:44 신고  댓글주소  수정/삭제  댓글쓰기

    RGB 설명에서..
    3 x 256 = 16777216 <- 좀 아닌듯 싶습니다..
    256 x 256 x 256 = 16777216 <- 이게 맞는거 같네요.

  4. 안감독 2008.12.28 17:20 신고  댓글주소  수정/삭제  댓글쓰기

    잘 봤습니다.

    감사해요~

  5. 흔한이름 2010.06.15 17:15 신고  댓글주소  수정/삭제  댓글쓰기

    진짜 감사해요~ 영상관련 일을 하고 있지만, 꼭 실전에 필요한 부분만 어깨너머로 알게된터라 늘 답답한 기분이 들었거든요..
    어디서도 이런 정보를 배울 수가 없었는데.. 우연히 흘러 들어와 잘 읽고 있습니다. 정말정말정말 감사합니다~~~!(꾸벅)

  6. 성연석 2010.06.26 22:11 신고  댓글주소  수정/삭제  댓글쓰기

    휴 윈도우모바일 공부중인학생이라 YUV에 대해서 열심히 공부하고있는데

    YV12값으로 추출되는 윈모에서 값을 UV값을 뺀 Y값만을 뽑아내려고 하는데

    어렵네요;; 방법이 있을까요^^?

    bostarbo@nate.com 메일 부탁드릴게요 ㅜ_ㅜ

  7. 유대선 2012.01.19 11:49 신고  댓글주소  수정/삭제  댓글쓰기

    처음부터..끝까지..상세히..알켜 주시니..감사합니다...
    계속..공부 하겟읍니다...^*^

  8. 톈진난만 2017.09.09 14:48 신고  댓글주소  수정/삭제  댓글쓰기

    YUV 네가지 방식에 대한 그림 설명이 매우 좋네요. ㅎㅎ