자막
This content is for v0.4. Switch to the latest version for up-to-date documentation.
자막(caption)은 자체 트랙에 놓이는 시간 지정 텍스트이며, 엔진이 텍스트 제너레이터와 같은 텍스트 렌더러로 그립니다. 이 페이지에서는 자막 트랙, 큐와 스타일, 그리고 SubRip과 WebVTT 파일을 가져오는 방법을 설명합니다. 다 읽고 나면 영상에 자막을 달 수 있습니다.
자막 트랙
섹션 제목: “자막 트랙”"kind": "caption"인 트랙에는 클립이 없습니다. 대신 captions가 다음을 담습니다.
cues: 각각timeline_range와text를 가진CaptionCue.text는 일반 문자열이며\n으로 줄을 바꿉니다. 큐는 타임라인 순서이고 서로 겹치지 않습니다. 트랙은 한 번에 큐 하나만 보여 줍니다.style: 트랙의 모든 큐를 그리는TextStyle. 텍스트 제너레이터와 같은 스타일입니다. 기본값은 캔버스 짧은 변의 5% 크기의 흰 글자이며, 아래쪽 가운데 근처에 놓입니다.color는 글자 색,outline은 글리프 둘레의 띠,background는 줄마다 뒤에 깔리는 상자를 정합니다.
트랙의 스타일은 하나입니다. 두 번째 화자를 다른 색으로 그리는 것처럼 일부 큐를 다른 스타일로 그리려면 그 큐들을 별도의 자막 트랙에 두세요. 동시에 보이는 자막도 각각 트랙 하나씩을 차지합니다.
자막 트랙은 앞에 있는 트랙들 위에, 뒤에 있는 트랙들 아래에 그려집니다. 맨 위에 그리려면 마지막에 두세요.
{ "id": "subs", "name": "Subtitles", "kind": "caption", "captions": { "style": { "font_family": "Hanken Grotesk", "font_size": 0.06, "background": { "color": { "red": 0, "green": 0, "blue": 0, "alpha": 0.6 }, "padding": 0.3 } }, "cues": [ { "timeline_range": { "start": 0, "end": 240000 }, "text": "The tide comes in twice a day." }, { "timeline_range": { "start": 240000, "end": 480000 }, "text": "Every word lands on time." }, { "timeline_range": { "start": 480000, "end": 720000 }, "text": "One cue at a time." } ] }}SRT와 WebVTT 가져오기
섹션 제목: “SRT와 WebVTT 가져오기”alpha2/captions의 parseCaptions는 엔진 자체의 파서로 SubRip("srt")이나 WebVTT("webvtt") 텍스트를 읽고, captionTrack은 큐로 트랙을 만듭니다.
import init, * as wasm from "alpha2/wasm";import { captionTrack, parseCaptions } from "alpha2/captions";
await init();const { rows, skipped } = parseCaptions(wasm, vttText, "webvtt");const tracks = rows.map((cues, index) => captionTrack(`subtitles-${index}`, "Subtitles", cues, { font_family: "Hanken Grotesk" }),);- 타임스탬프는 정확합니다. 1밀리초가 120틱입니다.
rows에는 자막 트랙 하나 분량의 큐가 한 행씩 들어 있습니다. 파일에서 겹치는 큐는 서로 다른 행으로 갑니다. 트랙은 한 번에 큐 하나만 보여 주기 때문입니다. 한 행에는 트랙이 담을 수 있는 최대치인 4096개까지 들어갑니다.- 마크업은 버리고 큐의 일반 텍스트만 남깁니다. WebVTT voice, 클래스, 인라인 타임스탬프는 유지되지 않습니다.
skipped는 큐로 읽을 수 없었던 블록의 수입니다.
에디터에서는 importCaptions가 자막 파일을 실행 취소 한 단계로 가져옵니다. Python에서는 alpha2.compose.Captions가 SubRip, WebVTT, 큐 목록, 단어 타임스탬프를 받습니다.
