Time Base는 스트림이 시간을 세는 단위입니다. 타임스탬프를 초 단위로 저장하는 대신, 미디어 파일은 자체 시계의 틱(tick) 수로 시간을 세고, Time Base는 틱 1개가 얼마 동안 지속되는지 나타냅니다. 초 단위의 분수로 표기됩니다.
어떤 파일이 이를 포함하며 값은 어디에서 오는지
Time Base 값은 미디어 파일 안의 개별 스트림, 즉 MP4, MOV, MKV, WebM, AVI, MPEG 전송 스트림의 영상, 음성, 자막 스트림과 단일 오디오 파일 등에서 확인할 수 있습니다. 각 스트림마다 고유한 Time Base가 있으므로, 한 파일 안에서도 일반적으로 오디오와 비디오가 서로 다른 단위로 시간을 셉니다.
값은 인코더나 파일을 만든 프로그램이 결정합니다. 일부 컨테이너 포맷은 특정 Time Base를 요구하고 이를 고정합니다. 포맷에서 선택을 허용하는 경우, 기록하는 프로그램이 콘텐츠에 맞는 값을 선택하며, 파일은 그 프로그램의 기본값을 그대로 사용할 수도 있습니다.
값이 어떻게 보이는지
항상 분수 형태이며, 분모는 1초 동안의 틱 개수를 의미합니다:
1/1000- 틱당 1밀리초, Matroska 및 WebM 파일에서 일반적으로 사용되는 값1/90000- MPEG 전송 스트림에서 오래전부터 사용되어 온 값1/48000- 오디오 스트림은 보통 샘플 수로 시간을 세므로, Time Base가 샘플링 주파수와 일치합니다1/12800- MP4 파일의 비디오 스트림에서 자주 보이는 값
타임스탬프를 초로 바꾸려면, 해당 값에 분수를 곱하면 됩니다. Time Base가 1/12800인 스트림에서 표시 타임스탬프가 12800이면 정확히 1초 위치입니다. Time Base가 1/1000인 경우, 타임스탬프 3500은 3.5초 위치입니다. 보고서의 원시 타임스탬프 값이 매우 큰 수처럼 보이는 이유가 여기에 있습니다. 이 값들은 초가 아니라 틱 개수입니다. 이전 세대 앱은 여기에 더해 Codec Time Base라는 별도의 행을 함께 출력하기도 합니다.
왜 중요한지
미디어 파일 안에서 일어나는 일은 모두 정수 개수의 틱에 맞춰지므로, Time Base는 스트림이 표현할 수 있는 가장 세밀한 타이밍을 결정합니다. 프레임이나 샘플이 두 틱 사이에 걸치면, 그 타임스탬프는 반올림해야 하고 이 과정에서 생기는 오차가 누적됩니다.
Time Base는 프레임 레이트가 정수가 아닐 때 실제 문제를 일으킵니다. 예를 들어 1001초 동안 30000프레임을 송출하는 방송 레이트에서는, 프레임 하나가 약 33밀리초보다 조금 더 길지만 정확히 떨어지는 밀리초 값이 아니므로, 밀리초 단위 Time Base로는 어떤 프레임도 정확히 배치할 수 없습니다. 1초당 더 많은 틱을 가지는, 즉 분모가 더 큰 Time Base는 모든 프레임 경계에 정확히 맞출 수 있습니다. 이 때문에 인코더가 단순 밀리초 대신 1/12800 또는 1/90000과 같은 값을 선호합니다.
이로 인한 문제는 단일 프레임에서 눈으로 보이는 것이 아니라 타이밍 오류로 나타납니다. 예를 들어 소리가 화면과 서서히 어긋나거나, 프레임 간 간격이 고르지 않거나, 컷 편집이나 탐색 결과가 약간 어긋나는 식입니다. 서로 다른 Time Base를 사용하는 스트림이 들어 있는 파일들을 이어 붙이면, 모든 타임스탬프를 다시 스케일해야 하고, 이 변환 과정에서 동기화 버그가 자주 발생합니다. 이 필드는 자체적으로 영상이나 음질에 영향을 주지 않으며, 개인 정보도 포함하지 않습니다.