#!if 넘어옴1 != null
''''''{{{#!if 넘어옴2 == null
{{{#!if 넘어옴1[넘어옴1.length - 1] >= 0xAC00 && 넘어옴1[넘어옴1.length - 1] <= 0xD7A3
{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴1[넘어옴1.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴1[넘어옴1.length - 1] < 0xAC00 || 넘어옴1[넘어옴1.length - 1] > 0xD7A3
은(는)}}}}}}{{{#!if 넘어옴2 != null
, ''''''{{{#!if 넘어옴3 == null
{{{#!if 넘어옴2[넘어옴2.length - 1] >= 0xAC00 && 넘어옴2[넘어옴2.length - 1] <= 0xD7A3
{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴2[넘어옴2.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴2[넘어옴2.length - 1] < 0xAC00 || 넘어옴2[넘어옴2.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴3 != null
, ''''''{{{#!if 넘어옴4 == null
{{{#!if 넘어옴3[넘어옴3.length - 1] >= 0xAC00 && 넘어옴3[넘어옴3.length - 1] <= 0xD7A3
{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴3[넘어옴3.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴3[넘어옴3.length - 1] < 0xAC00 || 넘어옴3[넘어옴3.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴4 != null
, ''''''{{{#!if 넘어옴5 == null
{{{#!if 넘어옴4[넘어옴4.length - 1] >= 0xAC00 && 넘어옴4[넘어옴4.length - 1] <= 0xD7A3
{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴4[넘어옴4.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴4[넘어옴4.length - 1] < 0xAC00 || 넘어옴4[넘어옴4.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴5 != null
, ''''''{{{#!if 넘어옴6 == null
{{{#!if 넘어옴5[넘어옴5.length - 1] >= 0xAC00 && 넘어옴5[넘어옴5.length - 1] <= 0xD7A3
{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴5[넘어옴5.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴5[넘어옴5.length - 1] < 0xAC00 || 넘어옴5[넘어옴5.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴6 != null
, ''''''{{{#!if 넘어옴7 == null
{{{#!if 넘어옴6[넘어옴6.length - 1] >= 0xAC00 && 넘어옴6[넘어옴6.length - 1] <= 0xD7A3
{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴6[넘어옴6.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴6[넘어옴6.length - 1] < 0xAC00 || 넘어옴6[넘어옴6.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴7 != null
, ''''''{{{#!if 넘어옴8 == null
{{{#!if 넘어옴7[넘어옴7.length - 1] >= 0xAC00 && 넘어옴7[넘어옴7.length - 1] <= 0xD7A3
{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴7[넘어옴7.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴7[넘어옴7.length - 1] < 0xAC00 || 넘어옴7[넘어옴7.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴8 != null
, ''''''{{{#!if 넘어옴9 == null
{{{#!if 넘어옴8[넘어옴8.length - 1] >= 0xAC00 && 넘어옴8[넘어옴8.length - 1] <= 0xD7A3
{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴8[넘어옴8.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴8[넘어옴8.length - 1] < 0xAC00 || 넘어옴8[넘어옴8.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴9 != null
, ''''''{{{#!if 넘어옴10 == null
{{{#!if 넘어옴9[넘어옴9.length - 1] >= 0xAC00 && 넘어옴9[넘어옴9.length - 1] <= 0xD7A3
{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴9[넘어옴9.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴9[넘어옴9.length - 1] < 0xAC00 || 넘어옴9[넘어옴9.length - 1] > 0xD7A3
은(는)}}}}}}}}}{{{#!if 넘어옴10 != null
, ''''''{{{#!if 넘어옴10[넘어옴10.length - 1] >= 0xAC00 && 넘어옴10[넘어옴10.length - 1] <= 0xD7A3
{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) == 0
는}}}{{{#!if ((넘어옴10[넘어옴10.length - 1] - 0xAC00) % 28) != 0
은}}}}}}{{{#!if 넘어옴10[넘어옴10.length - 1] < 0xAC00 || 넘어옴10[넘어옴10.length - 1] > 0xD7A3
은(는)}}}}}} 여기로 연결됩니다. #!if 설명 == null && 리스트 == null
{{{#!if 설명1 == null
다른 뜻에 대한 내용은 아래 문서를}}}{{{#!if 설명1 != null
{{{#!html 시스템의 처리 속도 부족으로 발생하는 '프레임 드롭'}}}에 대한 내용은 [[처리지연]] 문서{{{#!if (문단1 == null) == (앵커1 == null)
를}}}{{{#!if 문단1 != null & 앵커1 == null
의 [[처리지연#s-|]]번 문단을}}}{{{#!if 문단1 == null & 앵커1 != null
의 [[처리지연#|]] 부분을}}}}}}{{{#!if 설명2 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단2 == null) == (앵커2 == null)
를}}}{{{#!if 문단2 != null & 앵커2 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단2 == null & 앵커2 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명3 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단3 == null) == (앵커3 == null)
를}}}{{{#!if 문단3 != null & 앵커3 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단3 == null & 앵커3 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명4 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단4 == null) == (앵커4 == null)
를}}}{{{#!if 문단4 != null & 앵커4 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단4 == null & 앵커4 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명5 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단5 == null) == (앵커5 == null)
를}}}{{{#!if 문단5 != null & 앵커5 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단5 == null & 앵커5 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명6 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단6 == null) == (앵커6 == null)
를}}}{{{#!if 문단6 != null & 앵커6 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단6 == null & 앵커6 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명7 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단7 == null) == (앵커7 == null)
를}}}{{{#!if 문단7 != null & 앵커7 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단7 == null & 앵커7 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명8 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단8 == null) == (앵커8 == null)
를}}}{{{#!if 문단8 != null & 앵커8 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단8 == null & 앵커8 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명9 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단9 == null) == (앵커9 == null)
를}}}{{{#!if 문단9 != null & 앵커9 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단9 == null & 앵커9 != null
의 [[#|]] 부분을}}}}}}{{{#!if 설명10 != null
, {{{#!html }}}에 대한 내용은 [[]] 문서{{{#!if (문단10 == null) == (앵커10 == null)
를}}}{{{#!if 문단10 != null & 앵커10 == null
의 [[#s-|]]번 문단을}}}{{{#!if 문단10 == null & 앵커10 != null
의 [[#|]] 부분을}}}}}}#!if 설명 == null
{{{#!if 리스트 != null
다른 뜻에 대한 내용은 아래 문서를}}} 참고하십시오.#!if 리스트 != null
{{{#!if 문서명1 != null
* {{{#!if 설명1 != null
시스템의 처리 속도 부족으로 발생하는 '프레임 드롭': }}}[[처리지연]] {{{#!if 문단1 != null & 앵커1 == null
문서의 [[처리지연#s-|]]번 문단}}}{{{#!if 문단1 == null & 앵커1 != null
문서의 [[처리지연#|]] 부분}}}}}}{{{#!if 문서명2 != null
* {{{#!if 설명2 != null
: }}}[[]] {{{#!if 문단2 != null & 앵커2 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단2 == null & 앵커2 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명3 != null
* {{{#!if 설명3 != null
: }}}[[]] {{{#!if 문단3 != null & 앵커3 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단3 == null & 앵커3 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명4 != null
* {{{#!if 설명4 != null
: }}}[[]] {{{#!if 문단4 != null & 앵커4 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단4 == null & 앵커4 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명5 != null
* {{{#!if 설명5 != null
: }}}[[]] {{{#!if 문단5 != null & 앵커5 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단5 == null & 앵커5 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명6 != null
* {{{#!if 설명6 != null
: }}}[[]] {{{#!if 문단6 != null & 앵커6 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단6 == null & 앵커6 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명7 != null
* {{{#!if 설명7 != null
: }}}[[]] {{{#!if 문단7 != null & 앵커7 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단7 == null & 앵커7 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명8 != null
* {{{#!if 설명8 != null
: }}}[[]] {{{#!if 문단8 != null & 앵커8 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단8 == null & 앵커8 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명9 != null
* {{{#!if 설명9 != null
: }}}[[]] {{{#!if 문단9 != null & 앵커9 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단9 == null & 앵커9 != null
문서의 [[#|]] 부분}}}}}}{{{#!if 문서명10 != null
* {{{#!if 설명10 != null
: }}}[[]] {{{#!if 문단10 != null & 앵커10 == null
문서의 [[#s-|]]번 문단}}}{{{#!if 문단10 == null & 앵커10 != null
문서의 [[#|]] 부분}}}}}}1. 개요
NTSC의 소숫점 프레임의 영상의 타임코드를 맞추기 위해 타임코드 속 프레임의 (HH:MM:SS;ff 가 있을 때 ff부분) 일부를 버리는 것을 말한다.NTSC의 Fractional Frame과 타임코드의 Drop Frame은 서로 밀접한 관계에 있고 애초에 NTSC의 특유의 1000/1001 프레임을 위해 사용되고 있고 사실상 NTSC만을 위해 사용하고 있는 관계로 사실상 같은 단어를 쓴다. 하지만 타임코드와 프레임레이트의 드롭 프레임은 서로 다른 개념을 가지고 있으므로 구별을 요한다.
2. 역사
흑백TV 시절 초당 프레임은 유럽식이 25/미국식이 30프레임이었다. 그러나 컬러방송 시대가 다가오며 미국은 데이터 압축률을 높이고 흑백TV와의 하위호환을 보장하기 위해 기존의 흑백 텔레비전 규격 CCIR 시스템 M에 컬러 관련 기능을 추가시키는 쪽을 택했다. 당시 NTSC의 개발진들은 컬러 신호를 따로 전송하기보다는 휘도 신호가 거의 점유하지 않는 대역 속에 넣어서 주파수를 절약하고자 했다. 하지만 기존 흑백 TV 신호에 조건에 맞는 컬러 신호[1]를 추가하면 컬러 신호와 오디오 신호의 고조파[2]들이 서로의 영역을 침범하며 상호 변조를 이르켜 화질과 음질이 떨어지는 문제가 생겼다. 개발진들은 고조파들이 상호변조를 이르키지 않도록 오디오 신호나 색차 신호의 주파수를 약간 이동시켜 했다. 오디오 신호는 기존의 흑백 TV 표준에서 조금만 벗어나도 수신률이 급격히 떨어지는 문제가 있었다. 색차 신호를 이동시키는 경우 색차신호가 수평주파수의 1/2배의 정수배가 되어야 한다는 조건에 따라 수평주파수를 약간 낮춰야 했다. 하지만 오디오 신호와 다르게 영상 신호에는 수직 동기화 신호가 포함되어 있어 기존 수상기에서도 별 문제 없이 타이밍을 복원할 수 있었다. 개발진들은 오디오 신호 대신 색차 신호와 수평주파수를 이동하기로 결정했고 이러한 배경에서 NTSC에서는 원래 30프레임/s이던 주파수를 29.97프레임(0.1%감소)으로 약간 떨어뜨리게 되었다.하지만 알다시피 1초에 29.97프레임을 찍을 수는 없다. 마지막 30번째 프레임을 찍다 말 수는 없는 노릇 아니겠는가. 쉽게 말해 PAL 방식은 100초에 2500장, 영화는 2400장을 찍듯, NTSC방식은 100초에 2997장을 찍는 것과 같다. 즉 29.97fps는 1시간(3600초)동안 107,892장의 장면을 찍는 것을 의미한다. 그런데 기존에 사용하던 타임코드(30프레임이 될 때마다 1초씩 카운트)를 그대로 쓰려니 문제가 생겼다. 이 논드롭(Non-Drop) 프레임 타임코드로 1시간은 총 108,000프레임으로 이루어져 있다. 29.97fps로는 1시간 방송을 하고나면 시간이 3.6초가 남아있는 것이다. 그리고 무엇보다 편집은 초단위로 하는데 100초에 2997프레임 같은 단위를 쓸 수는 없었다. 그래서 NTSC관계자들은 00, 10, 20, 30, 40, 50분을 제외한 매 분마다 2프레임씩을 건너뛰기로 결정했다.
28프레임-29프레임-02프레임-03프레임 순으로 00프레임(30프레임)-01프레임을 드롭하고 2프레임을 건너뛰었다. 이렇게 프레임을 카운트하면 1시간은 원래보다 108프레임이 모자란 107,892프레임으로 딱 맞다. 많은 사람들이 착각하는게 프레임을 건너뛴다고, 멀쩡한 프레임을 빼거나 재생하지 않는 것이 아니다. 29.97fps는 1시간 동안 촬영한 총107,892프레임을, 방송에서 1시간 동안 빠짐없이 출력한다.
동일한 이유로, 60fps의 경우에는 59.94fps를 적용한다. NTSC 아날로그 방송이 종료된 지 10년이 지났지만 여전히 일부 컴퓨터 모니터에서 이 규격을 지원하고 있다.
3. 윤년과 윤일을 통한 이해
더 쉬운 이해를 위해서 추가하자면 타임코드는 우리가 1년이 정확히 365일이 아니라 약 365.25일이라 4년마다 돌아오는 윤년마다 2월 29일(윤날)을 더하는 것처럼, 1년을 364.75일로 가정할 때 4년마다 12월 31일(윤날)을 빼는 것과 같다.실제로 지구가 태양을 도는 시간은 365.25일
365.25+365.25+365.25+365.25=1461일=4년
우리가 생각하는 1년=365일
365+365+365+365=1460일---! 하루의 오차가 발생
그러나 윤날을 추가하면..
365+365+365+366(2월29일 하루 추가)=1461일---실제 지구의 공전 시간과 일치.
이를 바탕으로 드롭 프레임 타임코드를 이해하자면..
지구의 공전시간을 364.75일(29.97fps마냥 왠지 모자란 일수)로 가정할 때
364.75+364.75+364.75+364.75=1459일=4년
29.97프레임x3600초=107,892프레임
우리가 생각하는 1년=365일
365+365+365+365=1460일---! 하루의 오차가 발생
30프레임x3600초=108,000프레임---! 108프레임의 오차가 발생
그러나 윤날을 빼면..
365+365+365+364(12월31일 삭제)=1459일---가정한 지구의 공전 시간과 일치.
108,000-108(10분 단위를 제외한 매 분마다 2프레임)=107,892프레임
즉 드롭프레임 타임코드에서 프레임을 건너뛰는 것은 지구의 공전 시간을 364.75일로 가정할 때, 12월 31일(윤날)을 빼는 것과 같다고 생각하면 이해하기 쉽다.
4. 여담
유럽의 경우 컬러로 전환하며 흑백수상기의 지원을 신경쓰지 않고 넘어감으로써 25, 50프레임과 같이 정수로 떨어지는 프레임을 지원하게 된 반면[3], 미국의 경우 컬러 송출을 지원하면서 구형 흑백 수상기의 호환성까지 잡으려고 시도했던 배경을 가진 기술적 잔재이며 특히나 디지털 시스템과 같이 디지털로 타임싱크가 관리되는 현대 환경에서는 아날로그와 달리 전혀 필요가 없는 기술이다.문제는 이로 인해 영화마저 텔레시네의 편의성을 위한 23.97, 타 영상의 경우 59.94 프레임과 같은 식의 실수 프레임과 DCI 규격의 24, 60 정수 프레임이 혼용되는 결과를 낳았으며 드롭 프레임의 경우 완성된 딜리버리에서는 크게 문제가 되지 않지만 영화와 같이 푸티지의 편집이 잦고 특히 VFX와 같이 프레임단위로 작업되는 환경에서는 싱크 문제가 발생하는 이유로 차세대 규격에서는 이 드롭 프레임 지원을 없애라는 요구가 있다. # 다만 경로의존성 문제하고 드롭 프레임으로 찍어놓은 옛날 영상이 워낙 많았던 고로 쉽사리 사라지기는 어려울 것으로 보인다.[4]
컨슈머 장비들의 대부분 소숫점 자리를 반올림 해서 실제로는 23.976fps, 29.97fps, 59.94fps인 드랍 프레임 임에도 불구하고 NTSC 환경이면 각각 24fps, 30fps, 60fps 같이 정수로 퉁치고 넘어가는 경우가 있다. 그에 비해 편집 환경이나 촬영, 특히 시네마카메라들의 경우 이 드랍프레임의 유무를 칼같이 구분하며, 실제로 이 둘을 뒤섞는 경우 싱크 또는 풀다운 문제로 지터 등이 발생한다.
이 문제가 실제로 발생하는 경우로 24프레임으로 촬영된 영상과 23.97프레임으로 촬영된 영상을 서로 같은 타임라인에 올렸을 때, 시간이 지날수록 오디오 뿐만 아니라 영상또한 미세하게 밀리거나 매 10초 마다 풀다운으로 인한 지터가 발생한다.
이렇게 서로 다른 프레임으로 촬영된 영상을 단순 B-Roll 같이 짧게 쓰는 경우는 크게 상관 없으나 멀티캠으로 촬영했을 때 이 Fractional Frame으로 인한 오차가 지속적으로 누적되어 문제가 생긴다. 아니면 간혹 영상을 10% 빠르거나 느리게 재생시켜 동기화 시키기도 한다.
[1] 수평주파수의 1/2의 정수배에 해당하는.[2] 원래 없는 것이 정상이지만 전기회로의 비이상성에 의해 매우 쉽게 발생한다.[3] 그래서 브라질은 CCIR M 국가 중 유일하게 30, 60프레임 같은 정수 프레임으로 떨어진다.[4] 실제로 NHK는 하이비전 고안 당시 HD 영상의 주사율로 NTSC의 59.94i가 아닌 60i를 밀었고 SMPTE 240M 초안에도 60hz(30p)같은 정수 프레임만 포함되어 있었으나 기존 SD 영상과의 변환 용이성이 떨어지는 문제 때문에 결국 뜻을 접고 후속 기술인 ISDB부터 실수 프레임인 59.94(29.97)로 회귀할 수 밖에 없었다.