정확한 비디오 프레임 시간 계산법: 29.97 FPS와 59.94 FPS

김포프 2023-02-24

real-time 그래픽은 보통 모든 것을 밀리 초(ms) 단위로 측정합니다. 그래서인지 그래픽 프로그래머들이 처음 29.97이나 59.94 FPS 비디오를 마주치면 다소 당황스럽죠. 보통 이런 의문을 가지게 됩니다.

대체 각 프레임의 시작시간이 어떻게 되는 거지?

29.97 FPS 및 59.94 FPS 스펙이 나온 이유는 이 글에서 자세히 설명하지 않겠습니다. 그냥 이러한 프레임 속도가 NTSC와 같은 특정 동영상 형식에서 사용된다는 점은 기억하세요.

그 대신 이 글에서는 각 프레임의 정확한 타이밍(=시작시간)을 계산하는 방법에 초점을 맞추겠습니다.

우선 동영상의 각 프레임을 밀리 초 단위로 특정하는 것에서 프레임 색인(frame index)으로 특정하는 것으로 사고방식을 바꿔야 합니다. 동영상의 첫 번째 프레임은 frame 0, 두 번째 프레임은 frame 1, 세 번째 프레임은 frame 2 등으로요. 이렇게 하면 각 프레임의 타이밍을 계산하는 건 매우 쉬워집니다.

29.97 FPS 동영상의 경우 1,001ms 동안 30개의 프레임이 있습니다. (이에 비해 30 FPS 비디오는 1,000ms 동안 30개의 프레임이 있으므로 초당 30 프레임으로 변환됩니다.) 이 지식을 사용하면 29.97 FPS 비디오에서 각 프레임의 타이밍을 계산하는 다음 공식을 만들 수 있습니다.

Frame timing = (frame index / 30) * 1001

예를 들어 프레임 인덱스가 25이면 해당 프레임의 타이밍은 00:00:00.833이 됩니다

Frame timing = (25 / 30) * 1001
Frame timing = 0.8333 * 1001
Frame timing = 833.33 milliseconds
Frame timing = 00:00:00.833

프레임 인덱스가 2000이면 해당 프레임의 타이밍은 00:01:06.708이 됩니다.

Frame timing = (2000 / 30) * 1001
Frame timing = 66.6667 * 1001
Frame timing = 66,707.99 milliseconds
Frame timing = 00:01:06.708

동영상이 59.94 FPS인 경우 각 프레임의 타이밍을 계산하는 공식은 29.97 FPS와 약간 달라집니다.

59.94 FPS 동영상의 경우 1,001ms 동안 60개의 프레임이 존재합니다. 따라서 59.94 FPS 동영상에서 각 프레임의 타이밍을 계산하는 공식은 다음과 같습니다.

Frame timing = (frame index / 60) * 1001

29.97 및 59.94 FPS 동영상에서 각 프레임의 타이밍을 이해하는 것은 동영상 제작 및 포스트 프로덕션에 중요합니다. (현재 제가 POCU 아카데미에서 자동 편집기능을 만들 때 필요한 일이기도 하죠.) 위에 제공된 공식을 사용하면 각 프레임의 타이밍을 정확하게 계산하고 동영상을 올바르게 동기화시킬 수 있습니다.

img

제대로 대우받는 개발자 | 부족한 컴공지식 배우기 | MIT급 컴공인강

최저임금으로 고통받는 일회성 프로그래머는 그만! POCU 아카데미가 올해 연봉협상을 책임지겠습니다!