제목이 좀 이상해서(인코딩글만 있는게 아닌데).. 바꿨습니다.
뭔소리인지 모르겠다 하는분들은 다 재끼고 6번부터 읽어주세요.
1. 각나라의 TV형식
이 이야기는 아날로그 시절까지 올라갑니다. 미국식으로 대변되는 NTSC와 유럽식으로 대변되는 PAL(그리고 곁다리로 낀 프랑스식 SECOM)인데요.
지금 HDTV도 유럽식, 미국식으로 나누듯.. 그시절에도 그랬습니다. -_- NTSC는 세로 525, PAL은 세로 625줄의 해상도를 가집니다.
프레임 또한 NTSC는 29.97의 프레임을 가졌고, PAL은 25프레임을 가졌죠. 해상도와 색상표현은 PAL이 좋고 움직임은 NTSC가 좋았지만 지금 시점에서보면 의미없는거라 그냥 넘어가고..
이 두개만 있으면 괜찮은데, 또 영화란 놈은 24프레임이 표준입니다.(애니메이션은 실질적으로 15프레임까지 떨어지긴 합니다만 제작사에서 알아서 24나 30에 맞춤)
이런 것들이 서로 섞고 섞이고 섞이니 프로그램이 알아서 처리하기가 어려운 경우가 생긴 것 입니다.
프레임이야 다들 알고 계시겠지만, 동영상은 정지된 사진들을 쭈르륵 훓어서 보여주는건데 이걸 초당 몇장을 보여줄까 하는 것입니다. 24프레임이면 1초당 24장의 사진을 보여준다는 것이지요.
하지만, 컴퓨터나 LCD는 아날로그 TV와 달리 영상의 프레임을 있는 그대로 보여줄 수 있으므로 이는 큰 문제가 되지 않습니다.(그래서 아날로그TV시절과 달리, 현재에는 유럽식이냐 미국식이냐에 따라 티비가 호환이 안되는경우는 없습니다.) 문제는 아래에 설명할 인터레이스영상과, TV규격에 맞추어 프레임이 변한 영상들입니다.
2. 프레임만 가지고도 골치아픈데, 인터레이스와 프로그래시브의 차이까지 있다.
인터레이스는 한국어로 번역하면 비월주사라고 합니다. 이녀석이 무엇인고 하니 다시 아날로그 시절로 돌아가서... 브라운관 티비 이야기를 해야 합니다. TV초창기 시절 브라운관TV가 30프레임을 제대로 처리를 못하였습니다.
무슨 이야기인고 하니 25나 30프레임이면 사진 한장당 1/30초동안 화면에 정지해 있어야 하는데, 성능이 좋지 못하여 그전에 사진이 없어지는겁니다.(브라운관 티비는 LCD처럼 화면을 계속 유지를 못하고 지속적으로 화면을 갱신해줘야 하는데, 이를 헤르츠라고 합니다. 60헤르츠면 초당 60번의 화면이 갱신된다는 거지요) 이렇게 되니 화면이 깜빡깜빡하면서 영상이 보이게 된겁니다. 이걸 해결하려면 프레임을 60프레임으로 늘려서 해결해야 하나, '돈'이 문제였습니다.
여기서 개발자들은 기가맥힌(...) 방법을 떠올리는데, 사진한장을 세로줄과 홀수줄로 나누어서 한번은 세로줄을 보여주고, 한번은 가로줄을 보여주는식으로 60프레임을(아날로그니 헤르츠라고 해야하지만..)만들어 버린것입니다.
예시를 들자면
1111111
2222222
1111111
2222222
사진을 이렇게 쪼개서 1/60초에는 1번사진을 보여주고, 2/60초에는 2번사진을 보여주는 겁니다. 이렇게 세로줄->가로줄(혹은 가로줄->세로줄)을 나눠서 보여준다고 하여 비월주사라고 불리웁니다. 비록 세로해상도가 반토막난다는 단점이 있었으나 쉽고, 저렴한 해결책이었습니다.
다만 문제점이 있는데 아날로그 TV야 화면의 깜빡임에 맞춰서 비월주사영상을 보여주니 사람눈에 온전한 영상으로 보이지만, LCD로 대변되는 디지털TV는 화면의 깜빡임이 없기때문에(이를 프로그래시브, 순차주사라고 합니다.) 세로줄과 홀수줄 사이에 빈공간이 그대로 남게 됩니다. 이로인하여 검은색 화면이 보이게 되는데
이러한 화면입니다.(또한 이러한 검은줄이 홀수-짝수를 번갈아 가면서 나오기 때문에 잔상도 생깁니다.) 따라서 이러한 현상을 디지털에 맞춰서 없애주는 작업을 해야하는데 이것을 디-인터레이스작업이라고 합니다.
3. PAL-NTSC-영화간의 프레임 전환
이 역시 이론적으로 디지털 TV에서는 저~언혀 문제가 되지 않는 부분입니다만, 브라운관 TV에서는 PAL-영화-NTSC간에 호환이 전혀 되지 않아서, 프레임을 변경해야 했습니다. 뭐, 지금도 방송국 영상편집, 아날로그TV호환등을 위하여 내부적으로 변경하고 있긴 합니다. 그래서 문제가 생기는 것이지요.
PAL(25프레임)에서 영화(24프레임)를 재생하는건 저렴하게 해결합니다. 바로 그냥 빨리 재생시켜버리는 것이지요(...) 그래서 PAL방식으로 상영된 영화는 실상 약간의 배속재생입니다.-_-;
하지만 PAL영상이나 영화영상을 NTSC에서 재생하는데는 문제가 있었습니다. 24프레임이나 25프레임영상을 30프레임에 맞춰야 했으니깐요. 그래서 일명 뻥카 프레임을 삽입하여 30(=60i)프레임으로 맞추게 되었는데, 이를 텔레시네, 혹은 풀다운이라고 합니다.
2:3 풀다운이라고 하기도 하는데, 두번째 프레임마다 세번보여준다는겁니다.
쉽게 얘기해서 1-2-3-4-5-6-7-8 이런식으로 나가는 프레임을 인터레이스에 맞춘다면 1-1-2-2-3-3-4-4-5-5 이런식으로 보여주게 되는데, 2:3풀다운을 적용하게 되면 1-1-2-2-2-3-3-4-4-4-5-5-6-6-6 이렇게 보여줍니다. 이렇게 되면 24*2=48프레임인데, 뻥카 프레임 12프레임이 들어가서 60프레임에 맞춰지게 됩니다.
자.. 이것이 디지털TV에서 프레임이 문제가 되지 않는다는데도 디 인터레이스보다 먼저 이야기 한 이유입니다.
현존하는 디지털 TV는 이러한 서로 다른 프레임의 재생에 있어 문제가 되지 않지만, 방송사에서는 호환성을 위하여, 규격에 맞추기 위하여 영상을 변환시키거든요.
4. 디-인터레이스
인터레이스 영상을 모니터에서 그냥 재생을 시키면 이상하게 나온다고 설명을 헀습니다. 따라서 이 영상을 컴퓨터에서 재생하기 위하여 내부적으로 변환을 하게 되는데, 이를 디-인터레이스라고 한다고 하였습니다. 이러한 디-인터레이스는 3가지 종류가 있습니다.
(1). BOB
인터레이스의 세로줄이나 가로줄중 하나를 버립니다.(안버리고 프레임을 그대로 유지해주는 방법도 있습니다.) 그리고 나머지를 늘립니다. 그리고 어색하지 않게 대충 영상을 비빕니다(...)
(2). WEAVE=BLEND
세로줄과 가로줄을 무식하게 그냥 합칩니다.
(3). IVTC
역텔레시네라고 부르며, 텔레시네 된 영상을 원본으로 되찾아 줍니다.(즉 1-1-2-2-2-3-3영상을 1-2-3이런식으로) 당연히 이 방식은 텔레시네영상에서만 쓰입니다.
보통 컴퓨터에서 영상을 볼때 1,2번이 가장 일반적인(플레이어에서 기본설정으로 잡혀있는) 방법입니다. 이러한 두가지 방법은 모두 단점을 가지고 있는데요, BOB은 써놨듯이 화질이 떨어지는 문제가 있고, WEAVE방식은 30P프로그래시브 카메라로 촬영한것이면 문제가 없지만(원본을 되찾아주는 방식이니) 인터레이스 방식 카메라로 촬영한 영상의 경우 짝수줄과 홀수줄에 시간차가 있어
이런식으로 잔상이 남게 됩니다.(글자 부분을 주목하세요) 정적인 영상에서는 괜찮으나, 동적인 영상에서는 끊김이 더 심하게 되죠.
그리고 텔레시네 영상의 경우 BOB(프레임 보존시에는 문제 없음)이나 WEAVE 모두 문제가 생기는데, 텔레시네 영상을 디인터레이스 할 경우 1-1-2-2-2-3-3-4-4-4의 프레임이 1-2-(2+3)-(3+4)-4가 되어버립니다. 화면이 더더욱 개판이 되죠.-_-
그래서 결론은 무어냐? 일일히 영상 하나하나 확인하면서 재생/인코딩하는게 가장 좋긴하지만, 가장 편한방법은 화질저하를 어느정도 감수하고, BOB방식으로 짝,홀수 프레임을 모두 간직한 60프레임영상을 만들/재생하는것을 추천합니다.
대다수의 인터레이스영상은 TV영상인데, 방송용 카메라는 프로그래시브 카메라로 촬영이 되지않고 인터레이스 카메라로 촬영이됩니다.(요즘은 프로그래시브 카메라로 촬영되는경우도 꽤 되지만..) 따라서 화질저하를 감수하고 60프레임으로 만드는것이 더 부드러운 영상을 볼 수 있고, 텔레시네 영상도 굳이 역텔레시네 하지 않아도 중복프레임이 많아진다는 단점과 24프레임의 영상미를 살리지 못한다는것(근데 이미 TV로 방송되는 이상 24프레임의 영상미는 개뿔..)만 빼면 편리합니다.
5. 영상은 생각보다 많은 정보를 가지고 있다.
동영상 플레이어에서 볼 수 있는 동영상에 대한 세부 내용입니다. 인코딩시 이러한 정보들이 동영상내에 삽입되며, 동영상 플레이어에서 재생할 때 참고하기도 합니다.
General
Complete name : D:\Docu\Docu\Bugs\MV\분홍신_아이유(IU)_FULL HD.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom
File size : 615 MiB
Duration : 8mn 27s
Overall bit rate mode : Variable
Overall bit rate : 10.2 Mbps
Encoded date : UTC 1970-01-01 00:00:00
Writing application : PotEncoder
Video
ID : 1
Format/Info : Advanced Video Codec
Format profile :
[email protected]Format settings, CABAC : Yes
Format settings, ReFrames : 1 frame
Duration : 8mn 27s
Bit rate : 10.0 Mbps
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 fps
Color space : YUV
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.161
Stream size : 606 MiB (98%)
Audio
ID : 2
Format/Info : Advanced Audio Codec
Duration : 8mn 27s
Bit rate mode : Variable
Bit rate : 152 Kbps
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 44.1 KHz
Stream size : 9.19 MiB (1%)
Encoded date : UTC 1970-01-01 00:00:00
이 영상은 벅스에서 받은 아이유 분홍신에 대한 정보입니다. 아래에서 까게 될 영상이기도 한데요.... 이걸 분석해보면
컨테이너는 MP4로 되어있고, 팟인코더로 재인코딩이 되어있고, 프레임은 30프레임. 평균 비트레이트는 10Mbps군요. 거기에 프로그래시브 스캔이라 디인터레이스가 필요없고, 1080P영상입니다. 색상은 8비트네요.
디코딩시 많은 사양을 요구하는 Cabac옵션이 켜져있고, 화질에 큰 영향을 주는 참조프레임은 1입니다.
이러한 정보가 동영상 내에 삽입되어 있기 때문에, 동영상 플레이어에서 디인터옵션이 켜져 있어도 알아서 영상종류에 따라 옵션을 주기도 빼기도 하고 하는 자동화가 이루어져 있습니다.
실질적으로 이러한 것들에 의하여 플레이어가 알아서 선택을 하기 때문에, 인코딩시라면 몰라도(인코더에서는 일일히 수동설정을 해줘야 합니다.) 우리가 선택할 부분은 디인터레이스 부분이나, 사양에 따른 디코딩코덱을 골라주는 것만 해주면 거의 문제가 없습니다.
6. 동영상플레이어에서 디인터 옵션과, 그래픽카드에 대한 옵션을 제대로 골라보자
동영상의 신 규격은 항상 나올때마다 컴퓨터의 한계를 시험하게 되었습니다. 지금은 줘도 안볼 화질을 가진 VCD(Mpeg1)조차도 당시의 CPU로는 돌리기가 너무 힘들어서 MPEG가속카드라는 녀석이 존재 했던 시절도 있었습니다.
이는 H.263이나 H.264, H.265도 마찬가지입니다. 그때와 다른점이 있다면 가속카드가 따로 존재하는것이 아니라 그래픽카드를 이용하여 동영상 가속을 이용합니다. 이 규약을 DXVA라고 합니다. 이것은 표준규격이라 모든 그래픽카드에서 대응이 가능합니다.(비록 그래픽카드에 따라 해상도, 동영상 옵션에 따라 대응이 안 될 수도 있긴하지만)
그리고 이를 이용하여 각 그래픽카드에 맞게 다시한번 최적화 시킨것이 Intel Quicksync, NVIDIA CUVID, AMD UVD입니다. 여기에 위에서 얘기한 프레임을 모두 잃지 않고 디인터레이스 하는방식을 bob이라고 했습니다. 여기에 단점으로 지목된 화질저하를 여러가지 방법으로 섞으면서 최소하한 디인터레이스 필터들이 많은데요, 이것들 중 현재 일반적으로 쓰이는 최고봉이 Yadif라는 디인터레이스필터와, 그래픽카드에서 하드웨어적으로 처리하는 하드웨어필터입니다.
다음팟 플레이어의 코덱지원은 가히 세계 최고봉이라고 불러도 손색이 없습니다. AMD UVD를 제외한 퀵싱크, CUVID, DXVA모두를 지원하고 있으니깐요.(UVD는 현재로선 어떠한 무료코덱에서도 지원하지 않고 있습니다. 파워DVD등의 유료코덱에서만 지원을 하죠..)
다만 디인터레이스부분에서는 라이센스 문제+@로 Yadif나 하드웨어 디인터를 지원하지 않습니다.(다른 방법으로 비슷하게 쓸 수는 있습니다.) 그래서 대안으로 LAV Filter를 써보도록 하겠습니다.
이렇게 설정을 해 줍니다. AMD는 Yadif로, 나머지는 하드웨어로.
이렇게 설정을 하고
부하가 많이가거나, 인터레이스 영상이 많은 코덱인 mpeg2, h.264, avc1, HEVC를 lavfilter로 재생하도록 설정을 바꿉니다.
이제 TS파일을 열어 디인터가 제대로 작동하나, 혹은 기존에 자신의 사양에서 힘겹게 돌아갔던 영상을 열어 재생이 제대로 되나 확인해줍니다.
사진처럼, 기존에는 30프레임으로 돌았던 영상이 60프레임으로 제대로 돌고 있는것을 확인 할 수 있으며, 인터레이스 카메라로 촬영한 영상이기 때문에 기존처럼 부자연스럽게 영상이 아니라 부드럽게 재생이 되는것을 확인 할 수 있습니다.
7. 공장릴과 유료영상들을 까는 이유
저는 굳 다운로더로 대변되는 공장릴(쉽게 이야기해서 예능같은거 인터넷에 올라오는 것들)과 유료영상을 싫어합니다.(보긴 보지만은-_-)
이유는.. 정말 개판으로 인코딩을 합니다. 인코딩이 안된상태, 즉 TS나 TP파일같은경우라면 재생시에 위의 방법처럼 얼마든지 정상으로 돌릴 수 있으나, 한번 인코딩을 개떡처럼 해놓은 영상은 복구할 방법이 없어요.
TV영상중 유명한 예는 영화용으로 유명한 RED로 찍은 텔레시네 영상이었던 추노가 있겠네요. 더플 프레임 디인터도 아니고, 역텔레시네도 아닌 일반 디인터를 맥여서 화면의 끊김이 심합니다. 이것말고도 하다못해 BOB으로 디인터 해야 하는 영상을 weave로 디인터하여 화면이 줄이 좍좍가는 영상도 엄청 많구요.
거기다가 벅스나 곰같은데서 파는 유료영상의 경우..
아까 제가 벅스에서 결제한 아이유 분홍신 영상이라고 했죠?
... 일반적으로 뮤비를 찍을때는 24프레임으로 찍습니다. 근데 얘는 30프레임이네요. 텔레시네 영상일까요? 아니죠.. 텔레시네 영상이라면 60프레임이어야 합니다. 심지어 팟인코더는 텔레시네 옵션이 존재하지 않습니다(...) 뭔수로, 어떻게 30프레임을 만들었는지 모르기 때문에 복구도 불가합니다.
그리고 팟 인코더는 나중에 얘기하겠지만 화질을 많이 깍아먹는, 정상적인 인코딩 프로그램이 아닙니다. 거기에 참조프레임은 달랑 "1" 화면압축이 제대로 이루어져 있지 않아 10메가 비트레이트로 인코딩이 되었어도 제대로된 영상이 아니란 이야기에요.
참고로 이야기하면 저 인코딩 옵션들은 그냥 팟인코더에서 제공하는 정상적이지 못한 프리셋.... 한곡당 2천원씩이나 하는 영상을 그냥 대충 해서 팔아먹는단 이야기 입니다.
이것은 유투브에서 받은 아이유 분홍신 영상
보다 시피 참조프레임도 훨씬 많고, H.264프로필도 high/4.0으로 훨씬 높게 인코딩 되었습니다. 결정적으로 프레임이 변하지 않아 원본이 잘 보존되었습니다.
결과적으로 이 영상은 벅스에서 결제하고 본 영상보다 용량은 작지만 훨씬 좋게 보입니다.
아무리 동영상에 대해 모르는사람이 태반이고, 비트레이트만 높고 화면만 나오면 장땡이라는 사람이 대다수라지만은 돈받고 파는 영상이라면 이러면 안되죠....... 무료영상이 훨씬 제대로 된 현실이라니요-_-
이것이 제가... 공장릴들과 유료영상들을 싫어하는 이유입니다.
요걸로 이번 강좌는 마칠께요. 다음을 기다려주세요(언제 쓸 지는 모르지만 ㅠㅠ)