레이블이 encoding인 게시물을 표시합니다. 모든 게시물 표시
레이블이 encoding인 게시물을 표시합니다. 모든 게시물 표시

2009년 2월 23일 월요일

인코딩 용어 설명 - 코덱, 비트레이트, 키프레임

초보자가 동영상 인코딩을 처음 접하면, 모르는 용어가 많아서 혼란스러운 경우가 많습니다.

이러한 어려움을 줄이고자 동영상 인코딩시 알아야할 용어들을 정리해 봅니다.

* 코덱
동영상 파일은 음성과 영상 데이터로 이루어 지며, 파일의 크기를 줄이기 위해서 이 데이터를
압축하여서 저장하게 됩니다. ( 압축을 하지 않을 경우 최대 100배 정도 파일 크기가 커집니다. )
인코딩시 압축(COding)을 하고, 재생시 압축을 푸는(DECoding) 모듈을 합쳐서 코덱(CODEC)이라고 부릅니다.
영상 코덱은 MPEG4, XVID, DIVX, WMV 등이 많이 사용되며, 음성 코덱은 MP3,WMV,AAC 등이
보통 많이 사용됩니다.

* 비트레이트
동영상 인코딩시 사용되는 압축 방식은 손실압축입니다. 데이타의 양은 줄어들지만 원본의 데이타를 100% 보존하는것이 아니라 손실시키면서 줄이는 방식이므로 압축을 많이 할수록 화질/음질이 많이 떨어지게 됩니다.
비트레이트는 1초간의 영상/음성을 얼마만큼의 데이타를 차지하게 압축을 할것인지를 지정하는 단위 입니다.
비트레이트가 높을수록 압축율이 떨어지면서 화질/음질이 좋게 되고 비트레이트가 낮으면 인코딩된 파일의 크기는 줄어들지만 그만큼 화질/음질도 나빠지게 됩니다.
비트레이트의 정확한 단위는 BITS PER SECOND 이며 8BIT 는 1BYTE 이므로 800kbps 로 인코딩
된 동영상은 재생시간 1초당 100kbytes 의 크기를 가지게 됩니다.

* 키프레임
초기의 영상 코덱은 화면 한장 한장을 jpeg 처럼 이미지 파일로 압축하여 저장하는 방식을 사용 하였습니다.
이런방식은 구현하기 매우 쉽다는 장점이 있지만, 화면이 전혀 움직이지 않는 경우에도 많은 데이타를 사용하여야 하기 때문에 압축율을 높이기가 쉽지 않게 됩니다. 이러한 단점을 극복하기 위해서 mpeg 코덱부터는 영상의 변화율을 감지하여서 변화된 부분의 데이타만을 저장하는 방식으로 압축 효율을 높이기 시작하였습니다.
이러한 방식의 문제점은, 데이타가 화면의 변화된 내용만을 담고 있으므로 동영상 재생시 중간으로
점프하고자 할 경우 처리가 매우 어려워 지기 때문에 중간 중간에 키프레임이라는 영상의 모든 정보를 가지고 있는 부분을 만들어 두는 방식을 사용하게 됩니다.
보통의 경우 키프레임은 5~10초에 하나씩 만들게 되며 특수한 경우 1초 정도로 짧게 설정하여야 할
경우도 있습니다.
( 키프레임의 짧게 설정하면 탐색시 유리하지만, 용량대비 화질이 나빠지는 단점이 있습니다. )

비트레이트 개념의 이해

동영상 파일은 내부적으로 음성 데이타 + 영상 데이타 두가지로 이루어 진다.

동영상 파일의 크기는 이 두가지 데이타를 합한 크기와 같게 되는데, 이때 어떠한 데이타가

얼마만큼의 크기를 차지하는가를 표현하는 방법이 비트레이트라는 개념이다.


비트레이트의 단위는 BITS PER SEC (bps) 이며, 음성이든 영상이든 1초동안 재생하는데 필요한

데이타의 크기를 의미한다.

예를 들자면 128kbps MP3 오디오 데이타의 재생시간이 3분 이라면 128kbits*60*3 이

해당 데이타의 크기인 것이다.

다시 계산하자면, 8bits 는 1BYTE 이기 때문에 128*1024*60*3/8 = 2.8MBytes 가 된다.

이 계산 방식은 영상에도 동일하게 적용된다.

영상이 1.5mbps, 음성이 128k 인 1시간짜리 동영상의 크기는

(1.5*1024+128)*1024*60*60/8 = 731MBytes 로 계산이 된다.


따라서 인코딩된 동영상파일의 크기는 [비트레이트*재생 시간] 에 비례하며, 영상의 크기,프레임수,

원본의 크기 와 같은 다른 요소는 전혀 영향을 끼치지 못한다.



이와 관련된 질문과 답변을 정리하면,

질문 1) 원본파일은 100MB 인데, 인코딩하니까 200MB가 되었네요.
: 비트레이트 설정을 원본보다 높게 설정하면 오히려 파일의 크기가 커진다. 하지만 절대로 화질이 더 좋아지거나 하는일은 없다.

질문 2) 이 프로그램은 저 프로그램에 비해서 인코딩하면 화질은 좋은데, 파일이 커져요
: 프로그램과 상관없이 인코딩 설정에서 비트레이트를 동일하게 맞추면 동일한 크기의 파일이 생성된다. 따라서, 파일 크기가 다른 동영상의 화질 비교는 의미가 없으며, 동일한 설정으로 동일한 크기로 생성된 파일의 화질을 비교하여야 한다.

질문 3) 동영상의 해상도가 커지면 파일도 커지는것 아닌가요?
: 동영상의 해상도,프레임수는 파일의 크기와 전혀 상관없다. 인코딩 설정에서 비트레이트를 고정하면 해상도와 프레임수를 바꾸어도 결과물의 파일 크기는 동일하게 나온다.
따라서, 원하는 동영상의 해상도와 프레임수에 따라서 적절한 최상의 비트레이트의 값을 알고 있어야 효율적인 동영상 인코딩이 가능해 진다.

키프레임 간격 설정이란?

동영상 파일은 키프레임이라고 하는, 동영상 재생시 이정표와 같은 역할을 하는 프레임이 몇초마다 하나씩 존재합니다.

키프레임을 길게 설정할 경우, 같은 화질일 경우 동영상 파일의 크기가 작아진다는 장점이 있지만,
동영상 재생 프로그램에서 탐색 기능을 이용할 경우 탐색 시간이 느려진다는 단점이 발생하며,

반대로 키프레임을 짧게 설정할 경우( 5초 이하 )는 이와로 반대로 파일의 크기가 약간 더 커지는 대신
탐색기능이 빠르게 작동하는 장점이 있습니다.

보통 PC에서는 성능이 빠르기 때문에 키프레임의 간격이 10초 이상 되어도 별다른 문제가 없지만,
휴대용 기기의 경우 5초 이하로 짧게 설정해 주는것이 좋습니다.

2007년 6월 5일 화요일

비트 레이트 (CBR, VBR, ABR, SBC), 샘플 레이트, 사운드의 샘플링 개념

1. 비트 레이트(Bit Rate)
비트 레이트는 비트(bit) + 레이트(rate, 비율)의 합성어로, 정보의 비율을 뜻하는 것으로 1초에 얼마나 많은 데이터들이 흘러가는 가를 나타내는 것이다. 데이터 량이 많을 수록 즉, 숫자가 커질 수록 소리는 원음에 가깝다. 하지만 비트 레이트를 많이 집어 넣으면 넣을 수록 비트의 수는 그만큼 커지게 되므로 용량 또한 더 커지게 된다. 비트 레이트는 고정(CBR)과 가변(VBR)으로 나뉜다.

- CBR(Constant Bit Rate) - 고정 전송률
이 방식은 고정 비트 레이트로써 처음부터 끝까지 고정된 비트 레이트를 사용해서 압축을 한다. 보통 VCD(Video CD)의 경우가 그런데 이것은 초당 1150 kbit를 사용해서 모든 프레임을 압축한다. 이 방식의 장점은 인코딩(Encoding)을 하는데 걸리는 시간이 짧은 반면 처음부터 끝까지 항상 고정된 비트레이트 만을 사용하기 때문에 움직임이 많은 곳에서는 화질 저하가 생긴다. 그러므로 움직임이 많은 동영상(스포츠, 액션 영화 등)에는 사용상 부적절함이 있다.
Divx 3.x 4.x 코덱은 CBR이 아닌 VBR 방식을 사용하고 있다.

- VBR (Variable Bit Rate) - 가변 전송률
이 방식은 크게 세가지 방식으로 압축을 행하는데 Average(보통), Max(최대), Min(최소)으로 나뉜다. 평상시에는 보통(Average)의 비트만을 사용하다가 움직임이 빠른 곳에서는 최대(Max) 비트를 사용하고 움직임이 없는 곳에서는 가장 낮은 최소(Min) 비트만을 사용해서 압축을 한다. 그러므로 경우에 따라서 CBR 방식에 비해 더 작은 용량에 더 좋은 화질을 만들어 내므로 더 효율적이라고 볼 수 있다. 하지만 VBR방식은 압축할려는 비디오 전체를 한번 읽고 처음부터 다시 압축을 행하기 때문에 CBR 방식에 비해 보통 압축하는데 걸리는 시간이 두배 이상 걸리게 된다.
Divx 코덱은 기본적으로 모두 VBR을 사용하고 있다.

- ABR(Average Bit Rate) - 평균 전송률
VBR 방식이 평균(Average), 최대(Max), 최소(Max)를 사용자가 지정해서 압축을 한다면 ABR 방식은 평균이 되는 수치만을 적용해 주면 자동으로 그 변동폭을 조절하여 압축을 하는 방식이다. 이 방식은 주로 DivX 코덱의 VBR 방식과 유사하며, 그런 이유(비트 레이트의 변동폭이 크지 않기 때문에)로 요즘은 DivX 코덱의 VBR 방식을 개선하여 SBC라는 인코딩 방식을 통해 압축을 하기도 한다.
이런 방법은 주로 MP3 오디오 인코딩에 적용된다.

- SBC(Smart Bitrate Control)
Virtual Dub의 변형인 Nandub 이나 Gordian Knot을 사용해 좀 더 정교하게 DivX(버전 3.11 Alpha) 인코딩을 하는 방식을 말한다. 그러므로 CBR 이나 VBR에 대응하는 전혀 새로운 방식의 인코딩 방식이 아닌 DivX 코덱을 사용해서 최대한 용량 대비 화질을 구현하기 위해 만들어진 인코딩 방법이다. 요즘 인터넷 등에서 떠도는 DVDRip(DVD에 있는 영화를 추출한다는 의미)의 DivX 영화를 보면 일반적인 DivX 영화가 있고 최근에 들어선 SBC DivX 영화라고 되어 있는 것들이 있는데 이런 영화들이 바로 이 방식을 사용해서 압축되어진 영화라는 뜻이다. 하지만 SBC 방식의 인코딩법은 보통 한번의 가상 인코딩 과정을 거친 후에 실제 인코딩이 시작되기 때문에 보통 일반적인 DivX 인코딩 보다 약 2배 이상의 시간이 소비되고 프로그램의 사용법 또한 쉽지 않기 때문에 전문적인 지식이 없는 일반인들이 쉽게 제작하기에는 다소 어려운 점이 있다.

2. 샘플 레이트
샘플 레이트는 아날로그 음성 데이터를 디지털로 변환할 때 1초 동안 나타낼 수 있는 음의 샘플링 비율 단위로 수치가 높을 수록 원음에 가깝다.

3. 사운드의 샘플링 개념
소리 신호는 아날로그 신호이므로, 컴퓨터에서 소리 신호를 효과적으로 처리하기 위해서는 아날로그 신호를 디지털 신호로 변조하는 일이 필요하다. 사운드 카드에서 처리하는 사운드는 디지털 데이터로 샘플링 된 것이다. 여기서 샘플링을 한다는 것은 신호를 짧은 일정 시간 간격으로 연속적으로 측정하여 각각의 진폭을 숫자로 표현하는 것을 말한다. 따라서 주기를 얼마나 크게 하느냐, 즉 얼마나 샘플링을 자주 하는 가에 따라 원래의 아날로그 신호를 얼마나 정확하게 표현할 수 있는지의 여부가 달려 있다.

사운드 샘플링의 대표적인 방법인 PCM 방식으로 설명을 하면 이렇다.
PCM 방식으로 디지털화 하는데 고려할 중요한 사항은 샘플링 비율과 샘플의 크기 표현이다. 샘플링 비율은 시간 폭을 말하는데 헤르쯔(Hz) 단위로 나타내며 일반적으로 샘플링 될 주파수의 2배 이상의 샘플링 비율을 가져야만 음의 표현이 가능하다. 예를 들어 11.025KHz라 하면 1초에 11,025개의 작은 시간 단위로 나누었다는 의미이다.

샘플의 크기 표현은 소리의 크기를 몇 비트의 크기로 표현하는가 하는 문제이다. 8비트는 256가지로 소리의 크기를 구분할 수 있으며, 16비트는 65,536가지로 소리의 크기를 구분할 수 있다. 16비트로 표현하면 더욱 정확한 소리의 표현이 가능하나 저장 공간이 커지는 단점이 있다.


출처:http://cafe.naver.com/devctrl.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4113