사전

Duration이란?

재생 시간은 오디오 또는 비디오 파일의 전체 재생 시간을 말합니다. 파일이 이 값을 어떻게 저장하는지, 그리고 왜 두 프로그램이 서로 다른 숫자를 표시할 수 있는지에 대해 설명합니다.

duration

Duration은 어떤 것이 지속되는 시간을 나타냅니다. 미디어 파일에서 duration은 전체 재생 시간을 의미합니다. 비디오 duration은 동영상이 처음부터 끝까지 재생되는 시간이고, 오디오 duration은 노래나 녹음 파일에 대해 같은 의미입니다.

이 숫자는 보통 미디어 플레이어에서 전체 시간으로 표시됩니다. 메타데이터에서는 같은 정보가 Duration라는 필드에 들어 있습니다.

어떤 파일에 포함되어 있는지

Duration은 시간이 흐르며 재생되는 파일, 즉 오디오 및 비디오 파일에 있습니다. 일반적으로 정지 사진과 텍스트 문서는 duration 필드를 가지지 않습니다.

애니메이션 이미지는 예외적인 경우입니다. GIF 파일은 각 프레임의 지연 시간만 저장하고 전체 시간을 저장하지 않습니다. 그래도 ExifTool은 애니메이션을 한 번 재생하는 Duration을 보고합니다.

값이 어디에서 오는지

일부 형식은 길이를 직접 저장합니다. 다른 형식은 길이를 계산하는 데 사용하는 값들을 저장합니다.

  • MP4 및 MOV: 무비 헤더에 time scale과 duration이 저장됩니다. time scale은 초당 시간 단위 수이고, duration은 이 단위의 개수를 셉니다.
  • MKV 및 WebM: 세그먼트 정보에 선택적인 Duration 요소를 틱(tick) 단위로 저장할 수 있습니다. 기본적으로 틱 1개는 1밀리초입니다.
  • MP3: ID3 태그에는 길이를 밀리초 단위로 저장하는 TLEN 프레임이 있을 수 있습니다. ExifTool은 파일 크기와 비트 전송률 같은 다른 값으로 길이를 계산합니다.
  • FLAC: 파일에 전체 샘플 수와 샘플 레이트를 저장합니다. 소프트웨어는 이 두 값을 사용해 길이를 계산하며, 합계가 0이면 길이를 알 수 없다는 뜻입니다.
  • WAV: ExifTool은 초당 평균 바이트 수와 파일 크기에서 길이를 계산합니다.

값이 어떻게 표시되는지

같은 길이라도 파일을 읽는 프로그램에 따라 다른 형태로 표시될 수 있습니다.

  • 00:05:15: 시, 분, 초입니다. 이 파일은 5분 15초 동안 재생됩니다.
  • 15.23 s: 초 단위이며, 단위가 함께 표시됩니다.
  • 200.541000: 단위가 없는 숫자입니다. FFmpeg 프로젝트의 ffprobe 프로그램은 duration을 이 형식으로, 소수점 이하 6자리까지 출력합니다. 이 숫자는 200.541초, 약 3분 21초를 의미합니다.
  • N/A: 기본 출력 형식에서 duration이 없으면 ffprobe는 이렇게 출력합니다. JSON 및 XML 출력 형식에서는 duration 필드 자체를 생략합니다.

단위가 없는 숫자가 항상 초를 의미하는 것은 아닙니다. TLEN 프레임은 밀리초를 세고, ffprobe의 duration_ts 값은 스트림의 time base 단위를 셉니다. 이 숫자가 어느 필드에서 나왔는지 확인하세요.

프로그램마다 재생 시간이 다르게 표시되는 이유

서로 다른 프로그램이 같은 파일에 대해 서로 다른 duration을 표시할 수 있으며, 둘 다 틀리지 않을 수 있습니다. 그 이유는 다음 4가지입니다.

  • 반올림: 초 단위만 표시하는 플레이어는 200.541을 올림 또는 내림으로 반올림합니다.
  • 별도 트랙: 영상과 음성은 각각 별도의 트랙을 가지며, 각 트랙마다 자체 duration이 있습니다. MOV 파일에서는 무비 duration이 가장 긴 트랙에 맞춰집니다.
  • 시작 시각: 각 스트림마다 자체 시작 시각이 있을 수 있습니다. FFmpeg는 가장 이른 시작부터 가장 늦은 종료까지를 기준으로 측정하므로, 늦게 시작하는 스트림이 전체 시간을 더 길게 만들 수 있습니다.
  • 추정값: 파일에 비트 전송률은 있지만 duration은 없을 수 있습니다. 이 경우 FFmpeg는 비트 전송률과 파일 크기에서 duration을 추정하고, 결과가 정확하지 않을 수 있다고 경고합니다.

왜 중요한지

Duration을 보면 재생하지 않고도 파일을 확인할 수 있습니다. 5분 15초짜리 클립을 기대했는데 15.23 s가 보인다면, 이 파일은 예상한 파일이 아닐 수 있습니다.

Duration은 다른 값들과도 연결됩니다. FFmpeg는 파일 크기와 duration에서 전체 비트 전송률을 계산할 수 있습니다.

메타 키