본문 바로가기

동영상 지식/기본지식

동영상 개념잡기

동영상. 움직이는 영상이란 뜻인데, 오디오도 포괄하도록 하겠습니다.


일단, 동영상 기본 스펙에 나와있는 정보들 부터 나열해가며 설명하도록 하겠습니다.

General
FileName    : 091231.SNSD - Santa Baby&Genie&Gee@MBC 가요 대제전.60fps
Format    : Audio Video Interleave (AVI)
File size    : 418 MB
PlayTime    : 11mn 12s

Video
Codec    : h264
Bit rate    : 5000 Kbps
Width    : 1024 pixels
Height    : 576 pixels
Display Aspect raito    : 16/9
Frame rate    : 59.940 fps
Scan type    : Progressive

Audio
Codec    : AAC Low Complexity
Bit rate    : 192 Kbps
Channels    : 2 channels (L R)
Sampling rate    : 48 KHz
Resolution    : 16 bits

제가 가장 최근에 인코딩한 영상의 정보입니다. 일단 영어라고 어려워하시지 마시고, 하나하나 차근차근 설명드리도록 하겠습니다.

일단 3부분으로 나뉘어 있는데요, General은 대체적인, 즉 상세정보가 아닌 기본적인 정보입니다. 포맷은 오디오와 비디오가 서로 맞물려있는(Interleave) AVI 형식이구요,
용량은 418MB 재생시간은 11분 12초인걸 보실 수 있습니다.

이제 상세 정보에 대해서 설명드리겠습니다.
우선 비디오 부분을 살펴보시면, 코덱과 비트레이트가 있는데, 이건 뒷부분에 설명드리도록 하고 그 다음부터 보도록 하겠습니다.
바로 영상의 규모인데요, 가로 1024픽셀 세로 576픽셀 크기의 16:9인 전형적인 와이드 비율을 가지고 있는데요,
16과 9에 각각 64를 곱해주시면 가로와 세로 크기가 나오시는걸 보실 수 있을겁니다.

픽셀이 무엇인가 하면, 화면에 표시되는 가장 작은 단위로, 점 하나를 뜻합니다. 오른쪽 그림은 제가 쓰는 마우스 커서를 1000% 확대한 그림인데요, 보이시는 한칸 한칸이 1픽셀입니다.
그 다음에 프레임 레이트가 보이는데요, fps는 frames per second의 약자로 1초에 몇장의 그림이 보여지나를 나타냅니다. 1초에 보여주는 그림이 많을수록 영상이 부드러워 보입니다. 59.970fps라고 나와있는데 본래는 60fps로 미국과 한국 일본등의 국가에서 TV방송에 사용하는 방식인 NTSC방식을 사용할시 기술문제로 1000장당 1장이 영상이 아닌 다른 정보를 담고 있기 때문에 60/1.001하여서 59.9400599400599400...fps가 되는데 이것을 소숫점 3자리까지만 나타낸것입니다. 59.970fps라 쓰고 60fps라 읽습니다..(읽을때만..)
이 영상은 1024x576의 그림이 1초에 60장 나오신다고 보시면 됩니다.
스캔 타입은, 프로그레시브와 인터레이스가 있는데요, 프로그래시브는 한 프레임에(한 장에) 완전한 그림을 표시해주는것이구요, 인터레이스는 첫 프레임에 짝수항만, 두번째 프레임에는 홀수항만 영상을 표시하는 방식으로서 TV방송에 사용되고 전송률을 반으로 줄이는데 목적이 있습니다. 이 글에서는 이것에 대해 자세히 설명하진 않겠습니다.
이제 코덱에 대해서 알려드리겠습니다. 코덱(codec)은 coder(코더;코드 작성기)와 decoder(디코더;코드 해석기)의 합성어로 코드를 작성하는 것도 아니고 코드를 풀이하는 것도 아닌 코드가 작성된 방식 자체를 말하는 것입니다. 언어에 비유하자면, 한국어를 말하는 능력이 아닌 한국어를 알아듣는 능력도 아닌 한국어 그 자체를 뜻하는 것입니다. '보통 코덱이 있어야 재생이 된다', '코덱을 설치해야 영상을 볼 수 있다' 이런것들은 사실 디코더(코드 해석기)를 칭하는 것입니다. 코더(혹은 인코더)가 없어도 디코더만 있으면 영상을 볼 수 있습니다. 이 영상의 경우는 h264코덱으로 작성이 되있어서 h264 decoder가 있어야 볼 수 있습니다. encoder혹은 coder는 영상을 컴퓨터데이터코드로 만드는 작업을 하는 처리기를 말하고 decoder는 컴퓨터데이터코드로 만들어진것을 해석해서 다시 영상으로 바꿔주는 처리기를 말합니다.
그 아래에 비트레이트가 보이는데요, Kbps는 Kilo bits per second의 약자로 초당 몇 비트의 용량을 쓰는지 뜻하는 것입니다. 5000Kbps는 초당 5000키로비트를 말하는 거구요. 비트와 바이트는 다른데요, 보통 사용되는 단위는 바이트이므로 이해하기 편하시려면 변환을 해주셔야합니다. 8비트는 1바이트이니까 Kbps를 8로 나눠주시면 kb/s가 됩니다. 따라서 보통 인터넷 속도에 사용되는 형식으로 나타내면 625kb/s가 되겠네요. 그리고 키로단위를 메가로 나타내려면 1024로 나눠주셔야 합니다. 컴퓨터에서는 2의 10승인 1024마다 단위가 올라가는데요, 1024키로는 1메가, 1024메가는 1기가, 1024기가는 1테라, 1024테라는 1페타 이런 식이기 때문입니다.(하지만 하드드라이브 판매시 보면 1TB라고 써진걸 사서 장착해보면 931GB인게 1024마다 단위를 올리지 않고 SI단위인 1000마다 단위를 올렸기때문입니다.)

이제 오디오 부분을 살펴봅시다. AAC(Advanced Audio Coding; 발전된 오디오 코드방식)의 코덱을 사용했고 비트레이트는 192Kbps(24kb/s)네요.
채널
은 2채널인데 L과 R즉 좌측과 우측 2개의 각각 독립된 채널이 있어서 두가지 소리를 좌 우로 동시에 재생한다는 것입니다. 가끔 2.1채널 스피커가 있는걸 보실 수 있는데요, 이 .1은 베이스를 뜻합니다. 낮은음으로 둥둥 울려줘서 웅장함이 느껴지게 만드는 역할을 합니다. 이건 오디오에 독립된 채널로 포함되어있진 않구요, 베이스 부분만 추출해서 베이스스피커로 재생해줄 뿐입니다. 다음으로 중요한 샘플링 레이트와 비트에 대해서 설명드리겠습니다.
샘플링 레이트는 hz로 나타내는데 이것은 초당 진동 횟수를 말합니다. 44100hz면 초당 4만4천1백번 진동한다는 뜻이지요. 진동 횟수가 높을수록 실제 소리와 비슷하게 구현됩니다. 비디오의 경우 fps와 비슷한 개념이지요. 여기선 1khz가 1000hz입니다. hz는 컴퓨터에서 만들어진 단위가 아니라 본래 물리진동을 나타내는 단위기때문에 SI단위 그대로 쓰입니다.
bit는 음량을 얼마나 세분화해서 표현하나를 말하는 것인데요, 16bit의 경우 0%~100%음량을 16bit로 나눠서 표현하고 8bit의 경우 음량을 8bit로 나눠서 표현하는 것입니다. bit가 높을수록 정확한 음량이 표현이 가능하고 이것도 역시 높을수록 실제와 비슷한 소리의 구현이 가능하겠지요.

이건 이해를 쉽게 해드리기에 위해 준비한 그림인데요, 44100hz 오디오의 0.0009초를(-_-;;) 확대한 것입니다..
hz는 그래프 가로부분에 영향을 주고 bit는 세로부분에 영향을 줍니다.
bit의 변화의 경우 별로 확연히 변하지 않는게 보이실텐데요, 실제로 들어본 결과 역시 그닥 차이가 별로 나지 않았습니다.. 아주 미세하게 칼랑칼랑(?)한게 없는듯한 느낌이들 뿐 음질 변화가 거의 느껴지지 않았습니다.
하지만 hz의 변화의 경우 그래프가 매우 단조롭게 변하시는게 보일겁니다. 44100hz를 반인 22050hz로 줄였으니 그만큼 뭉그러지고 약간 답답한 음질이 나오게 됩니다.

이제 영상과 오디오 스펙에 관해서 설명을 드렸는데요, 어느정도 뭐가 뭘 뜻하는지 개념이 잡히셨으면 좋겠네요..
영상 코덱에 대해 더 추가하자면, 코덱 외 모든 조건이 같다면, 화질 순서는 mpeg2->divx->xvid->h264가 되겠습니다.
오디오 코덱의 음질 순서는 ac3->mp3->wma->aac가 되겠습니다.

h264와 aac는 각각 현존 가장 좋은 퀄러티를 자랑하는 영상코덱과 음성 코덱입니다.



여기까지 파악하셨으면 이제 렌더러(Renderer; 염색기)의 존재에 대해 알려드리겠습니다.
염색기라는 뜻을 가지고 있고 사실상 영상 혹은 소리를 사람이 보고 들을수 있도록 구현해 주는 것입니다.





제가 인코딩한 영상을 GSpot이란 프로그램으로 분석해 본것인데요. 영상을 재생하기까지의 처리과정을 나타낸것입니다.
소스(Src; Source)를 MPC Avi Splitter(분리기)로 영상과 오디오를 잡아빼죠,
그리고 영상은 CoreAVC Video Decoder(해석기)로 해석을 해서 영상으로 만들고요, 그것을 화면에 나타낼수있도록 Video Renderer가 화면에 염색을 시킵니다.
오디오의 경우 CoreAAC Audio Decoder로 해석해서 오디오로 만들고 그것을 디폴트 다이렉트 사운드 디바이스(기본값 다이렉트 소리장치)에서 소리를 내게 됩니다.
비디오 렌더러와 사운드 렌더러는 지금 기본값으로 나와있는데요, 이대로 쓰고 있는건 아닙니다. 저는 영상 렌더러로는 색감이 좋고 스샷을 찍기 편한 Haali's Video Renderer를 쓰고 있구요 오디오 렌더러로는 저희집 사운드카드 드라이브인 IDT Audio1이 음질이 더 좋아서 이것을 쓰고 있습니다. 하지만, Haali's Video Renderer는 단점이 CPU점유율이 높아 HD영화같은 CPU점유율이 높을때는 그냥 Video Renderer를 씁니다. 그리고 IDT Audio1의 경우는 사운드카드에서 소리를 직접 렌더 하는걸로 보이는데 때문에 음질이 아주 양호하구요, 단점이 이 렌더러로는 하나의 소리밖에 재생을 못합니다.. 즉 영상을 두개를 재생하면 나중에 킨 영상은 소리가 안나온다는거지요..

순서가 좀 바뀐것 같지만 Splitter라고 부르기도 하고 Demux라고 부르기도 하는 일단 요녀석으로 칭하도록 하고 요녀석에 대해 설명드리도록 하겠습니다. 요녀석의 존재에 대해서도 알아두실 필요가 있는데요, 요녀석은 꼭 정해진건 아니지만 avi파일의 경우 Avi Splitter가 쓰이고 mp4파일의 경우 Mp4 Splitter가 대체로 쓰이고 있습니다. 요녀석이 없으면 설사 코덱이 있더라도 동영상을 재생하지 못합니다. 동영상 플에이어에서 동영상을 열었을때 오디오는 어디있고 비디오는 어디있는지 컴퓨터가 알지를 못한다는 것입니다. 아니, 내가 지금 열고있는 이것이 동영상 파일인지 아닌지도 알지를 못합니다. 요녀석을 설치를 해야만 일단 파일을 열 수가 있습니다. 저의 경우는 mkv reader를 설치 안했는데요, 하지만 동영상 볼때 KMP를 쓰는데 KMP에 mkv reader가 내장되어 있어서 잘 재생이 되더군요, 하지만 다른 플레이어에서는 이게 뭔 파일인지 재생을 하지 못합니다..

여기까지 동영상의 개념에 대해 설명해 드렸는데요. 도움이 되었다면 좋겠습니다.
동영상 정보를 봤을때 이게 뭐하는거고 왜 필요한지 딱 아셨으면 해서 써본 글인데 아침에 일어나서 몇시간 썼네요.... 블로그 괜히시작했나.......ㄷ........