OKfmt

WebVTT 자막 구문 상세 가이드: 타임스탬프부터 스타일링까지 개발 및 디버깅 가이드

본 문서는 WebVTT의 핵심 구문 규칙을 설명하며 주석, 타임스탬프, 인라인 태그, CSS 스타일링, 메타데이터 등 8가지 핵심 모듈을 다루어 프론트엔드 개발자가 웹 자막을 디버깅하는 데 도움을 줍니다.

2026-08-11에 업데이트됨

기본 파일 구조: 헤더 및 주석 블록

표준 WebVTT 파일의 첫 번째 줄은 반드시 WEBVTT 선언이어야 합니다. 선언 뒤에 공백과 파일 설명 텍스트를 추가할 수 있으며, 서로 다른 구조 블록은 빈 줄로 구분됩니다. 대부분의 HTML5 플레이어는 WEBVTT 헤더가 포함되지 않은 파일을 올바르게 파싱할 수 없습니다.

NOTE 주석 블록은 개발 주석 또는 자막 설명을 추가하는 데 사용되며 단일 행 또는 여러 행 콘텐츠를 지원합니다. 이것은 플레이어에서 렌더링되거나 표시되지 않습니다. 개발 및 디버깅 과정에서 수정이 필요한 자막 문단을 표시하기 위해 NOTE 블록을 사용할 수 있으며 최종 재생 결과에 영향을 주지 않습니다.

큐 타임스탬프 규칙

각 자막 큐는 타임스탬프와 표시 텍스트로 구성됩니다. 타임스탬프 형식은 밀리초 구분자로 점과 쉼표 두 가지 스타일을 지원합니다. 대부분의 최신 브라우저는 점 표기법만 지원합니다.

타임스탬프에서 시 필드는 옵션입니다. 총 재생 시간이 1시간 미만인 자막은 시 필드를 생략할 수 있으며 그 결과 형식은 MM:SS.sss가 됩니다. 전체 형식은 HH:MM:SS.sss입니다. 시작 시간과 종료 시간은 --> 기호로 구분됩니다.

타임스탬프 예시유효성 참고사항
00:01.234 --> 00:04.567유효하며 시 필드가 생략되었고 밀리초를 점으로 구분함
00:00:01,234 --> 00:00:04,567호환되지 않으며 Chrome 등 주요 브라우저가 쉼표를 인식하지 못함
01:12:34.456 --> 01:12:38.789유효하며 시 필드가 포함된 전체 형식

인라인 텍스트 스타일 태그

WebVTT는 부분 텍스트의 표시 스타일을 수정하기 위한 6가지 표준 인라인 태그를 지원합니다. 이 중 b, i, u는 각각 굵기, 기울임꼴, 밑줄에 해당하며 해당 HTML 태그와 동일한 규칙을 따릅니다. 개발자는 수동 작성 시 이를 직접 사용할 수 있습니다.

ruby 태그는 병음 주석에 사용되고 lang 태그는 다른 언어의 텍스트를 표시하는 데 사용되며 voice 태그는 화자를 표시하는 데 사용됩니다. 이러한 태그는 주로 메타데이터 분류에 사용되며 플레이어는 이를 기반으로 차별화된 렌더링을 구현할 수 있습니다.

  • <b>Bold text</b>: 브라우저에서 기본적으로 굵게 표시됨
  • <i>Italic text</i>: 브라우저에서 기본적으로 기울임꼴로 표시됨
  • <ruby>汉<rt>hàn</rt></ruby>: 한자에 대한 병음 주석 형식

스타일링 및 영역 설정

::cue 가상 요소는 WebVTT 자막을 위해 제공되는 전용 CSS 가상 요소입니다. 개발자는 이 가상 요소를 사용하여 웹 페이지의 모든 자막의 기본 스타일을 수정할 수 있으며 color, font, background 등 일반적인 CSS 속성을 지원합니다.

STYLE 블록은 WebVTT 파일 내에서 전역 또는 큐별 스타일을 정의하는 데 사용됩니다. REGION 블록은 자막 렌더링 영역을 정의하는 데 사용되며 여러 영역에 동시에 다른 자막을 표시하는 것을 지원하므로 다국어 자막을 나란히 표시하는 경우에 흔히 사용됩니다.

HTML5 통합 규격

HTML5 track 요소는 외부 WebVTT 자막 파일을 가져오는 데 사용됩니다. track 요소의 kind 속성은 자막 유형을 정의하며 가능한 값은 subtitles, captions, descriptions, chapters, metadata 다섯 가지입니다.

이 중 subtitles는 일반 번역 자막에 해당하고 captions는 환경음 주석을 포함하는 난청 사용자용 자막에 해당하며 chapters는 챕터 탐색에 해당하고 metadata는 페이지 메타데이터를 저장하며 표시되지 않습니다. 플레이어마다 kind 속성에 대한 처리가 다릅니다.

자주 묻는 질문

WebVTT와 SRT 자막 형식의 차이점은 무엇인가요?

WebVTT는 스타일링, 메타데이터 및 영역 설정을 지원하며 HTML5에서 기본적으로 직접 파싱하여 사용할 수 있습니다. SRT는 기본 타임스탬프와 텍스트만 지원하며 주로 로컬 비디오 재생 시나리오에서 사용됩니다.

모든 브라우저가 WebVTT의 ::cue 가상 요소를 지원하나요?

Chrome 29 이상, Firefox 35 이상, Safari 6.1 이상이 이 기능을 지원합니다. 모든 버전의 IE는 네이티브 WebVTT 파싱을 지원하지 않습니다.

WebVTT에 HTML 태그를 임베드할 수 있나요?

사용자 정의 HTML 태그는 허용되지 않습니다. 규격에 정의된 6가지 인라인 태그만 허용됩니다. 정의되지 않은 태그는 브라우저에서 일반 텍스트로 출력되어 표시됩니다.