SSA를 JSON으로 변환
또는 자막 텍스트를 붙여넣으세요
이 변환에서 달라지는 것
1가지가 버려지거나 결정이 필요합니다
- 형식 고유 내용
원본 형식이 자막 블록 밖에 두는 내용(자막 블록이 아닌 구획, 머리말 텍스트, 자막 블록별 설정, 주석 처리된 이벤트) — 대상 형식에는 들어갈 자리가 없습니다
이 목록은 불러온 특정 파일이 아니라 두 형식의 기능 행렬에서 나옵니다. 어떤 파일은 형식이 허용하지만 행렬이 모델링하지 않는 기능을 쓰고 있다면 더 많이 잃을 수 있습니다.
이 페이지는 SSA를 이 사이트의 JSON 스키마로 바꿉니다. version 1과 cues 배열, 큐마다 정수 밀리초 start·end, 그리고 스타일과 태그가 구조화된 데이터로 들어갑니다. 스크립트와 파이프라인이 읽기 좋은 형태입니다.
SSA의 0:00:04.12는 4120이 되고, {\b1}·{\i1} 같은 오버라이드 코드는 tags 배열의 구간이 되며, 스타일 표는 styles 객체로 남습니다. 화면 위치와 카라오케 정보도 필드로 보존됩니다.
사라지는 것은 cue 모델 밖의 구성입니다. [Script Info], [Fonts]·[Graphics] 구역, Comment 줄이 스키마에 자리가 없습니다. 스타일·위치·카라오케·글자·시간은 온전히 남습니다.
여러 파일을 넣으면 순서대로 처리되고 중간에 취소할 수 있으며 ZIP 하나로 내려옵니다. 브라우저 안에서 변환되어 업로드가 없습니다.
JSON은 자막을 데이터로 다루는 쪽에 맞춘 형식입니다. SSA의 스타일 표가 styles 객체로, 오버라이드 코드가 tags 배열로 구조화되어 스크립트에서 다루기 쉽습니다. 큐 밖의 구역은 스키마에 없어 손실로 보고됩니다.
예시
전형적인 SSA 파일을 JSON으로 변환
입력
[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines
결과물
{
"version": 1,
"title": "Example SSA",
"styles": {
"Default": {
"name": "Default",
"Name": "Default",
"Fontname": "Arial",
"Fontsize": "20",
"PrimaryColour": "&H00FFFFFF",
"SecondaryColour": "&H000000FF",
"TertiaryColour": "&H00000000",
"BackColour": "&H00000000",
"Bold": "0",
"Italic": "0",
"BorderStyle": "1",
"Outline": "2",
"Shadow": "2",
"Alignment": "2",
"MarginL": "10",
"MarginR": "10",
"MarginV": "10",
"AlphaLevel": "0",
"Encoding": "1",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#ffffff",
"bold": false,
"italic": false
}
},
"cues": [
{
"start": 1000,
"end": 4000,
"lines": [
"Hello there."
],
"style": "Default"
},
{
"start": 5000,
"end": 8000,
"lines": [
{
"text": "Italic line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
],
"style": "Default"
},
{
"start": 9000,
"end": 12000,
"lines": [
"Two",
"lines"
],
"style": "Default"
}
]
}
이 출력에서 빠진 것: 형식 고유 구성. 나머지는 줄 단위로 일치합니다.
같은 변환을 지저분한 입력으로
입력
[Script Info]
Title: Dirty SSA
ScriptType: v4.00
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.결과물
{
"version": 1,
"title": "Dirty SSA",
"styles": {
"Default": {
"name": "Default",
"Name": "Default",
"Fontname": "Arial",
"Fontsize": "20",
"PrimaryColour": "&H00FFFFFF",
"SecondaryColour": "&H000000FF",
"TertiaryColour": "&H00000000",
"BackColour": "&H00000000",
"Bold": "0",
"Italic": "0",
"BorderStyle": "1",
"Outline": "2",
"Shadow": "2",
"Alignment": "2",
"MarginL": "10",
"MarginR": "10",
"MarginV": "10",
"AlphaLevel": "0",
"Encoding": "1",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#ffffff",
"bold": false,
"italic": false
}
},
"cues": [
{
"start": 1000,
"end": 4000,
"lines": [
{
"text": "Bold and underlined.",
"tags": [
{
"kind": "bold",
"start": 0,
"end": 4
},
{
"kind": "underline",
"start": 9,
"end": 19
}
]
}
],
"style": "Default"
},
{
"start": 5000,
"end": 8000,
"lines": [
"A soft",
"break and a {\\p1}mystery{\\p0} code."
],
"style": "Default"
}
]
}
실제 파일에 흔한 손상입니다. 줄 바꿈이 섞이고, 공백이 남고, 필드가 비어 있습니다. 위의 깔끔한 예와 비교해 해석기가 무엇을 용서하는지 보세요.
자주 묻는 질문
SSA를 JSON으로 바꾸면 스타일이 남나요?
네. [V4 Styles]의 스타일 표가 styles 객체로 구조화되어 남고, 본문의 {\b1}·{\i1} 같은 오버라이드 코드는 tags 배열의 구간이 됩니다. 큐가 어떤 스타일을 쓰는지도 styleRef로 남습니다.
SSA의 위치와 카라오케는 JSON에서 어떻게 되나요?
필드로 보존됩니다. {\an7}·{\pos(…)} 위치는 큐의 position 필드로, {\k50} 카라오케는 karaoke 태그로 남아, 같은 형식으로 되돌릴 때 복원됩니다.
SSA의 [Script Info]와 [Fonts] 구역은 JSON에서 어떻게 되나요?
사라집니다. 이 스키마는 큐와 스타일을 담지만 스크립트 머리글과 내장 글꼴·그래픽 블록을 담는 자리가 없습니다. 손실로 보고됩니다.
SSA의 Comment 줄은 JSON에서 어떻게 되나요?
큐로 만들어지지 않습니다. Comment 줄은 화면에 나오는 대사가 아니므로 cues 배열에 들어가지 않고, 그 개수가 손실로 보고됩니다.
SSA를 JSON으로 바꾸면 시간이 조금이라도 바뀌나요?
아니요. SSA의 0:00:04.12는 4120ms가 되고, 되돌려도 반올림이나 이동이 없습니다. 스키마는 정수 밀리초만 씁니다.
JSON 출력은 어떤 모양인가요?
version 1과 cues 배열입니다. 각 큐는 정수 밀리초 start·end, lines 배열, 선택적 styleRef와 position을 가지고, styles 객체에는 SSA의 스타일 표가 들어갑니다.
기밀 SSA 파일을 JSON으로 바꿔도 되나요?
됩니다. 파일은 브라우저 탭에서 읽고 쓰며 업로드되지 않습니다. JSON은 스크립트가 소비하는 형식이라, 외부로 나갈 수 없는 전사에 특히 유용합니다.