동영상 자막 SRT ↔ WebVTT 변환 및 싱크 보정기

HOT

SubRip(.srt)과 WebVTT(.vtt) 자막 파일 상호 변환, 순수 대본 텍스트 추출 및 전체 타임코드 싱크(+/- 초) 일괄 보정

ADVERTISEMENT · TOP BANNER

Responsive 728x90 / 320x100 Ad Slot

(CLS Prevention Active · Zero Shift)
100% 브라우저 연산 (서버 전송 없음, 개인정보 안전)
Interactive Client Mode
변환할 포맷:
싱크 오프셋 (초):
감지된 큐(Cue): 4개
ADVERTISEMENT · HIGH CTR IN-FEED

Native In-Feed / High Viewability Ad Slot

(CLS Prevention Active · Zero Shift)

동영상 자막 SRT ↔ WebVTT 상호 변환 및 타임코드 싱크(Offset) 일괄 보정기

유튜브(YouTube), 넷플릭스, 웹 비디오 플레이어(HTML5 `<track>`) 및 영상 편집 소프트웨어(프리미어 프로, 파이널 컷 등)는 저마다 요구하는 자막 파일 포맷이 다릅니다. 특히 가장 대중적인 SubRip(`.srt`) 파일과 웹 표준인 WebVTT(`.vtt`) 파일은 밀리초 구분 기호(쉼표 `,` vs 마침표 `.`)와 헤더 규격이 달라 변환 작업이 빈번하게 필요합니다.

또한 영상 인트로 삽입이나 오디오 싱크 밀림으로 인해 전체 자막 타이밍이 1~2초씩 어긋났을 때, 수백 줄의 타임코드를 일일이 수작업으로 수정하는 것은 엄청난 시간 낭비입니다.

오르보킷 SRT/VTT 자막 변환기는 파일 업로드 없이 브라우저에서 SRT, VTT, 그리고 순수 대본 텍스트(Transcript TXT) 간의 상호 포맷 변환을 즉시 수행합니다. 또한 밀리초 단위의 타임코드 싱크 보정(예: 전체 자막 +1.5초 밀기 또는 -0.8초 당기기)을 원클릭으로 지원하여 완벽한 자막 싱크를 구현합니다.

자막 타임코드 파싱과 밀리초 단위 델타 연산 알고리즘

SRT(`00:01:23,456`)와 VTT(`00:01:23.456` 또는 `01:23.456`)의 시간 구조를 밀리초 정수로 정규화한 뒤 오프셋을 가감하는 원리를 설명합니다.

자막 타임코드 밀리초 환산 및 보정 수식Mathematical Formulation
TotalMs = (H * 3600000) + (M * 60000) + (S * 1000) + Ms AdjustedMs = Max(0, TotalMs + DeltaMs)

시, 분, 초, 밀리초를 단일 정수(Ms)로 변환한 후 오프셋(DeltaMs)을 더합니다. 0초 미만으로 내려가지 않도록 하한(Clamp)을 적용한 뒤 포맷별 구분자(SRT는 콤마, VTT는 닷)에 맞춰 2자리/3자리 패딩 문자열로 재구성합니다.

자막 전체 타이밍을 1.5초(1500ms) 뒤로 일괄 지연
타임코드 파싱'00:01:10,200' -> H:0, M:1, S:10, Ms:200 -> 총 70,200ms밀리초 정수 환산
오프셋 델타 가산70,200ms + 1,500ms = 71,700ms싱크 보정 완료
SRT 시간 재포맷팅71,700ms -> H:0(00), M:1(01), S:11(11), Ms:700(700) -> '00:01:11,700'SRT 타임코드 생성
VTT 시간 재포맷팅구분자를 점(.)으로 치환 -> '00:01:11.700'VTT 타임코드 생성

👉 수천 개의 자막 큐(Cue) 전체가 단 1ms의 오차도 없이 일괄 동기화됩니다.

동영상 자막 포맷별 규격 및 호환 플레이어 비교표

SRT, WebVTT, 순수 텍스트 대본의 기술 사양 및 지원 플랫폼 일람

자막 포맷타임코드 구분 기호헤더 선언 필요 여부스타일/CSS 지원주요 지원 플랫폼
WebVTT (.vtt)마침표 (00:01:23.456)필수 (첫 줄에 WEBVTT 선언)지원 (CSS ::cue 스타일링)HTML5 비디오, 넷플릭스, 크롬 브라우저
SubRip (.srt)쉼표 (00:01:23,456)불필요 (숫자 인덱스로 시작)제한적 (기본 <i>, <b> 태그)유튜브, 프리미어 프로, VLC 플레이어
순수 텍스트 (TXT)없음 (시간 정보 제거)불필요미지원 (순수 텍스트)팟캐스트 대본, 블로그 포스팅, AI 요약
SAMI (.smi)HTML 태그 기반 동기화필수 (<SAMI> 문서 구조)CSS 스타일 인라인 지원국내 구형 미디어 플레이어 (레거시)
ASS / SSA복잡한 이벤트 스크립트[Events] 헤더 정의고급 애니메이션 및 좌표 지원애니메이션 팬자막, 특수 효과
TTML / DFXPXML 태그 기반 타임코드XML 스키마 헤더XML 기반 포괄적 서식방송 규격, 전문 스트리밍 미디어
ADVERTISEMENT · IN-ARTICLE CONTENT

High-Engagement In-Article Native Ad Slot

(CLS Prevention Active · Zero Shift)

사용 방법

11. 자막 파일 내용 입력

변환할 SRT 또는 VTT 원본 자막 텍스트를 입력창에 붙여넣거나 [샘플 데이터 넣기]를 클릭합니다.

22. 대상 포맷(Target Format) 선택

상단 탭에서 변환할 포맷(WebVTT, SubRip SRT, 또는 타임코드가 제거된 순수 텍스트 TXT)을 선택합니다.

33. 타임코드 싱크 오프셋(Offset) 조정

자막 타이밍을 앞당기거나 뒤로 밀어야 할 경우 초 단위(+/- 초)를 입력하여 실시간 싱크 보정을 적용합니다.

44. 결과 복사 또는 자막 파일 다운로드

미리보기에서 변환된 자막을 확인한 후 [결과 복사] 또는 [.srt/.vtt 파일 다운로드]를 클릭합니다.

실무 및 일상 실전 활용 사례

현업 및 실제 사이트 운영에서 활용되는 핵심 시나리오

유튜브 SRT 자막을 웹용 HTML5 WebVTT 자막으로 변환

영상 제작팀에서 납품받은 `.srt` 파일을 웹사이트의 `<video><track src='subtitles.vtt'></video>` 규격에 맞게 WebVTT로 즉각 변환합니다.

인트로 영상 추가로 밀려난 자막 3초 일괄 보정

영상 앞부분에 3.2초 길이의 인트로 로고 영상이 삽입되어 자막이 먼저 나오는 현상을 전체 타임코드 `+3.2초` 오프셋 기능으로 한 번에 맞춥니다.

AI 동영상 자막에서 블로그 포스팅용 텍스트만 추출

자막 파일에서 번호와 시간 코드를 모두 제거하고 순수한 발화 텍스트만 깔끔하게 추출하여 아티클 초안이나 대본으로 재활용합니다.

팟캐스트 음성 싱크 밀림 보정

자막이 음성보다 0.5초 늦게 뜨는 문제를 해결하기 위해 `-0.5초`를 적용하여 음성과 자막의 동기화를 칼같이 맞춥니다.

💡 전문가 실무 가이드 및 주의사항

✓ Pro Tip #1

WebVTT 포맷은 첫 줄에 반드시 대문자로 `WEBVTT`가 적혀 있어야 브라우저 내장 비디오 플레이어가 인식합니다.

✓ Pro Tip #2

시간 오프셋에 음수(-1.5)를 입력할 때 첫 번째 자막이 0초보다 앞서게 되면 시작 시간이 자동으로 `00:00:00,000`으로 안전하게 클램핑됩니다.

✓ Pro Tip #3

대본 텍스트 추출 모드를 사용하면 문장별 줄바꿈을 유지하면서 타임코드만 깔끔하게 제거할 수 있습니다.

⚠️ 흔히 하는 실수 & 예방법

❌ Common Trap #1
✅ 타임코드 사이에 화살표 `-->` 기호가 손상되면 자막 파서가 해당 블록을 인식하지 못하므로 원본 포맷의 화살표 구조를 확인하세요.
❌ Common Trap #2
✅ 너무 큰 음수 오프셋(-10초 등)을 적용하면 앞부분 자막 여러 개가 0초로 뭉칠 수 있으니 적절한 보정 값을 입력하세요.

자주 묻는 질문 (FAQ)

사용자 및 전문가들이 가장 자주 묻는 핵심 질문과 명확한 해답입니다.

6 Q&As

SRT는 밀리초 구분자로 쉼표(`,`)를 사용하는 반면, WebVTT는 웹 표준인 마침표(`.`)를 사용하며 문서 최상단에 `WEBVTT` 식별자 헤더를 필수로 포함해야 합니다.

ADVERTISEMENT · FOOTER BANNER

Wide Responsive Banner

(CLS Prevention Active · Zero Shift)