시작하기에 앞서

메구이의 one-click 인코딩 기능을 이용한 hdtv 60 프레임 인코딩 방법을 업데이트했습니다

기존에 나온 다른 어떤 방법보다 확실하고 간단하다고 자신있게 말할수 있습니다

많이 봐주세요 ^^;;

2010/05/25 - hdtv 60프레임 인코딩 메구이 megui 원클릭 인코딩 for 일반인









일단 영상에서 순차주사(프로그레시브 progressive)와 비월주사(인터레이스 interlace)에 대해 아셔야합니다

간단하게 설명하자면 인터레이스는

인간의 착시 현상을 이용해서 한화면을 반만 번갈아 가면서 뿌려주는거고 (브라운관 tv)

프로그레시브는

정직하게 전체를 뿌려주는 겁니다 (PDP or LCD tv or 컴퓨터모니터)

더욱 자세하게 알고 싶으시면 아래 링크를 한번 읽어보시기 바랍니다

http://ko.wikipedia.org/wiki/%EB%B9%84%EC%9B%94_%EC%A3%BC%EC%82%AC_%EB%B0%A9%EC%8B%9D



hdtv방송 송출은 mpeg2 압축에 1920*1080i 30프레임입니다

1080은 세로해상도를 의미하구요(실재로는 1088를 보냅니다 위아래 4*2=8 픽셀은 그냥 검은 화면)

i 는 인터레이스입니다

얼핏보면 30프레임이니깐 1초에 30장의 영상을 보내는것 같지만 사실은 그게 아닙니다


처음 1/60초 동안에 1920*1080 해상도의 화면을 카메라가 잡아냅니다

여기서 가로줄 1080개 중에 홀수줄(1 3 5 7 .... 1077 1079)만 남겨서

이걸 필드 0번에 저장합니다(짝수줄은 버립니다)

그다음 1/60초 동안에 1920*1080 해상도의 화면을 카메라가 잡아냅니다

여기서 가로줄 1080개 중에 짝수줄(2 4 6 .... 1078 1080)만 남겨서

이걸 필드 1번에 저장합니다(역시 홀수줄은 그냥 버립니다)

이제 필드 0번과 필드 1번을 합쳐서

2*1/60=1/30초 동안의 영상이 담긴 프레임 0번이 탄생합니다


1초에 30장의 영상을 보내는게 아니라

인터레이스 영상의 한 프레임 안에는

서로 다른 시각에 찍힌 영상정보를 동시에 저장해서 보내기 때문에

1초에 60장의 영상을 절반의 해상도로 2장씩 겹쳐서 보내는 것이 되는 겁니다



우리가 이 인터레이스 hdtv영상을 볼때는

우리가 보는 모니터는 프로그레시브 화면이기때문에

인터레이스 영상을 프로그레시브 영상으로 변환해야하는 과정이 필요합니다

이과정을 디인터레이싱(=잔상제거)이라고 하며

디인터레이싱에는 여러가지가 있는데

그냥 있는 그대로 홀수선과 짝수선을 그냥 짜맞춰서 내보내는

weave (사실상 디인터레이스처리를 하지 않은 것이죠)

1st 1/60초와 2nd 1/60초가 합쳐서 나옵니다





짝홀수선을 그냥 섞어서 하나의 프레임을 만들어 버리는

blend

1st 1/60초와 2nd 1/60초가 합쳐서 뭉게진 상태로 나옵니다





필드를 프레임으로 확장시키고 (프레임을 2배)

다음 필드가 들어가야할 빈공간에 현재 필드를 복사해서 넣어줘서
(540개의 가로선을 1080개의 가로선으로 만들어 줌으로서)

가로해상도를 그대로 유지하지만 화질은 1/2이 되는 (가로로 2배 확대한거나 마찬가지)

bob

1st 1/60초가 가로확대되서 나오고 다음 프레임에 2nd 1/60가 가로확대되서 나옵니다
따로 따로 나오기 때문에 움직임이 부드럽습니다


(이거 외에도 위브와 블렌드를 적절히 쓰는 혼합모드에
움직임을 예상해서 적절하게 채워주는 움직임예측법등등 여러가지 방법이 있지만
이 3가지에서 발전한거니 일단 요거만 알아도 충분합니다)



실시간으로 hdtv영상을 보거나 tp로 녹화한 걸 볼때는

컴퓨터에 깔린 mpeg2 코덱이 디인터레이싱을 해줍니다

하지만 인코딩을 할때는 코덱의 디인터레이싱=잔상처리가 작동되지 않고

원래 화면(weave)그림을 가지고 인코딩을 하게 됩니다

하지만 대부분의 사람들이 인코딩후에 가로줄=잔상을 인식하지 못하는 것은

인코딩을 하면서 작은 화면으로 리사이즈로 같이 하기 때문입니다
(1280*720=720p or 640*480 등등)

리사이즈를 함으로서 blend방식으로 디인터레이스하는 효과를 얻을수 있고

이 blend방식의 디인터레이싱은 필드 분리가 없기 때문에

움직임의 표현력이 코덱에서 bob해서 보는 것(60fps)보다 1/2로 줄어들지만(30fps)

적당히 빠른 화면과 느린 화면에서는 그럭저럭 괜찮은 화면을 보여주기 때문에

대부분 그냥 넘어가게 됩니다



하지만 빠른 움직임의 스포츠영상(ex 김연아 피겨 영상)이나

현란한 카메라워크, 전신율동으로 이루어진 가수들의 무대영상에서는

이 blend는 뚝뚝 끊어지고 부자연스러운 모습을 보여주는데

그 이유는 위에서 언급한것처럼 다른시각에 촬영된 필드를 하나의 프레임으로 합쳐서 보여주기 때문입니다



그래서 움직임을 최대한 살려야하는 hdtv 녹화영상을 인코딩시에는 60프레임 인코딩이 필수가 됩니다

인코딩하는 방법은 간단하게 인코더 옵션에서 프레임수 60으로 늘려가지고는 안되구요

avisynth를 이용한 영상 전처리 과정이 필요합니다

제가 쓴 에어인코더 팁을 참고하시거나

megui같은 다른 고급툴 사용법을 검색해보셔야합니다

2010/05/25 - 간단하게 tp파일 h264 60프레임 mkv 인코딩 에어인코더 키라라인코더



* 참고 *

hd규격에는 1080i 외에도 720p도 있습니다

세계 대부분의 방송사가 1080i로 찍어서 송출을 하지만

미국의 abc fox espn은 720p로 찍어서 내보낸다고 합니다(fps는 당연히 60프레임이구요)

혹시라도 미국espn에서 방송한 김연아 피겨스케이팅 hd녹화영상을 인코딩할 일이 생기시면

귀찮고 복잡한 디인터레이스 과정없이 그냥 인코딩하시면 되겠습니다




% 주의 %

hdtv 방송소스 중에 영화나 미국드라마는 위의 방법을 사용해서는 안됩니다

왜냐면 이것들의 원본은 24프레임 프로그레시브 소스기 때문입니다

텔레시네라는 방법으로 24p소스를 60i(=60필드=30프레임)로 변환해서 방송으로 내보내는데

이 과정에서 일부 프레임은 2번씩 쓰이는 경우가 있습니다

그냥 bob처리로 인코딩하게되면 역시 문제가 생기겠죠?

그래서 이와같은 영화나 미드영상들은 역텔레시네로 중복영상을 제거한후

원래 24p로 복원을 해준다음에 인코딩을 해줘야합니다





혹시 tp파일을 제대로 60프레임으로 보고 싶으신분이 이글에 들어오신거라면

아래 링크를 참고하시기 바랍니다

2009/05/07 - hdtv mpeg2 1080i tp영상 곰플레이어 버리고 ffdshow 가지고 제대루 보기



Posted by 아싸좋구나
,