SRT VTT 변환, 차이점과 3가지 방법

손에 든 SRT 파일을 웹페이지에서 재생하거나 WebVTT만 받는 플랫폼에 올리려면 막히게 됩니다. 두 형식은 확장자만 다른 것처럼 보이지만, 실제로는 헤더 정보, 시간코드 표기 방식, 스타일 지원이 모두 다릅니다. 차이를 먼저 이해하고 방법을 고르면 시행착오를 크게 줄일 수 있습니다.

이 문제는 해외 배포 상황에서 특히 자주 발생합니다. 같은 완성본을 웹과 로컬 플레이어 양쪽에 올려야 한다면, 두 형식을 모두 준비해 두어야 합니다.

SRT와 VTT는 무엇이 다를까

둘 다 순수 텍스트 기반의 큐 단위 자막입니다. 다만 VTT에는 SRT에 없는 몇 가지 특징이 있습니다.

  • 파일 헤더: VTT의 첫 줄은 반드시 WEBVTT여야 합니다. SRT에는 이런 요구가 없습니다
  • 시간코드 구분자: SRT는 밀리초를 쉼표 ,로 구분하고(예: 00:00:01,000), VTT는 마침표 .를 사용합니다(예: 00:00:01.000)
  • 스타일과 위치: VTT는 <c> 색상, <b> 굵게 같은 인라인 태그와 큐별 위치 지정을 지원하지만, SRT는 사실상 순수 텍스트만 담습니다
# SRT
1
00:00:01,000 --> 00:00:02,500
오늘은 세 가지 이야기를 합니다

# VTT
WEBVTT

00:00:01.000 --> 00:00:02.500
오늘은 세 가지 이야기를 합니다

VTT도 큐 사이를 빈 줄로 구분하지만, 번호는 선택 사항입니다. 규격 자체가 1, 2, 3을 요구하지 않습니다. .srt 파일의 확장자만 .vtt로 바꾸면 대부분 사용할 수 없습니다. 플레이어가 헤더 부재와 시간코드 형식 불일치를 이유로 오류를 내기 때문입니다.

또 하나 놓치기 쉬운 지점이 있습니다. 일부 플랫폼은 VTT를 지원한다고 표시해 두었지만 실제로는 특정 표기만 받아들이거나, 큐마다 번호를 요구하거나, 일부 인라인 스타일을 거부합니다. 업로드 오류가 나면 먼저 "형식이 잘못된 것"인지 "스타일이 지원되지 않는 것"인지 확인하세요. 전자만 변환 문제이고, 후자는 플랫폼 제약입니다. 플랫폼 쪽 스타일 제한을 변환 실패로 오해하지 않도록 주의하세요.

방법 1: 온라인 변환(가장 간편)

소프트웨어를 설치하고 싶지 않고 가끔 한 번씩만 변환한다면 온라인 도구가 가장 편합니다. SmileSub의 SRT-VTT 변환 도구를 예로 들면, 로그인 없이 다음 순서로 진행합니다.

  1. SRT 파일 업로드
  2. 파싱과 변환이 끝나기를 기다림
  3. VTT 파일 다운로드, 큐 수와 타임라인은 그대로 유지

변환은 형식만 손대고 내용은 건드리지 않으므로, 원래의 중국어나 영어 텍스트가 그대로 보존됩니다. 무료 사용량은 파일당 1MB 이하, 500개 큐 이하이며 도구별로 IP당 하루 3회입니다.

만약 자막에 스타일을 더하거나 화면의 특정 위치에 배치해야 한다면, 그건 이미 SRT의 능력 범위를 넘은 것이므로 VTT가 아니라 SRT-ASS 변환 도구가 필요합니다.

방법 2: 플레이어에 바로 연결

많은 웹 플레이어(그리고 브라우저 기본 <video> + <track>)는 VTT만 받습니다. 단지 웹페이지에서 자막을 보여주고 싶다면 원본 파일을 여기저기 변환할 필요가 없습니다.

  • HTML에서 <track>으로 VTT 파일을 가리킴
  • 또는 VTT를 독립 트랙으로 해당 기능을 지원하는 플랫폼에 업로드

이 경로의 전제는 플랫폼 자체가 VTT를 받는다는 것입니다. 클라이언트에 납품할 파일이 .srt라면 결국 파일 변환은 해야 합니다.

하드자막과 소프트자막을 포함한 더 완전한 자막 형식 선택 가이드는 SmileSub 블로그의 다른 글에서 확인할 수 있습니다.

방법 3: 명령어 일괄 처리

같은 배치의 영상 수십~수백 개 자막을 변환해야 한다면 명령어가 더 안정적입니다. 흔히 쓰는 방법은 ffmpeg 한 줄로 컨테이너를 바꾸는 것입니다.

ffmpeg -i input.srt output.vtt

이 명령도 마찬가지로 WEBVTT 헤더를 붙이고 쉼표를 마침표로 바꿉니다. 다만 명령어는 입력 파일의 형식 요구가 더 엄격합니다. 원본 SRT에 큐 겹침, 번호 뒤섞임 같은 문제가 있으면 변환된 VTT에도 같은 문제가 그대로 남습니다. 변환 전에 자막 규격 검사 도구로 한 번 점검하는 것을 권합니다.

덧붙여 강조하면, ffmpeg 변환은 원본 파일 자체의 문제를 고쳐주지 않습니다. 형식을 옮겨 담을 뿐입니다. 원본 SRT에 오류 데이터가 있으면 먼저 정리하고 변환해야 결과가 깨끗합니다.

세 가지 방법 비교

상황 권장 방법 주요 비용
가끔 한 번씩, 설치 없이 온라인 도구 거의 없음
웹에서 표시, 플랫폼이 VTT 지원 플레이어 연결 플랫폼 지원 필요
수십~수백 개 일괄 명령어 기본 명령어 숙지, 원본 파일 정리 필요

한 줄로 요약하면: 온라인 변환은 임시·소량에, 플레이어 연결은 웹 표시에, 명령어는 일괄 처리와 자동화에 적합합니다.

비용이 가장 적은 방법부터 시작하고 부족하면 올라가는 것이 더 안정적인 페이스입니다.

자주 묻는 질문

확장자만 바꾸면 바로 쓸 수 있나요?

거의 불가능합니다. VTT에는 WEBVTT 헤더가 빠지고 시간코드도 여전히 쉼표 구분이라, 대부분의 플레이어가 무시하거나 오류를 냅니다. 이런 차이는 실제 변환으로 채워야 합니다.

변환했는데 자막 위치가 바뀌었어요

SRT에는 위치 정보가 없으므로 VTT로 변환한다고 위치가 생기지 않습니다. 자막 위치가 이상하다면 보통은 플레이어 자체의 기본 스타일이 원인이지 변환 탓이 아닙니다. 위치를 정밀하게 제어하려면 ASS를 써야 합니다.

온라인 변환하면 텍스트 내용이 바뀌나요?

바뀌지 않습니다. 변환은 형식 레이어(헤더, 시간코드 구분자, 선택적 번호)만 다루고 텍스트는 그대로 보존됩니다. 텍스트 자체의 번역이나 교정은 별개의 작업이며, 그건 번역류 도구의 영역입니다.