하드 자막 vs 소프트 자막: 차이는 무엇인가요?
하드 자막은 화면에 새겨져 항상 보이고, 소프트 자막은 시청자가 끌 수 있는 별도 트랙입니다. 언제 어느 쪽을 쓰고 어떻게 만드는지 정리했습니다.

하드 자막은 영상의 픽셀에 새겨진 자막입니다. 어떤 플레이어에서든 보이고, 끌 수 없으며, 영상을 다시 렌더링하지 않고는 고칠 수 없습니다. 소프트 자막은 SRT나 WebVTT 파일처럼 영상과 따로 있는 텍스트 트랙으로, 플레이어가 화면 위에 그립니다. 그래서 시청자가 켜고 끌 수 있고, 영상을 건드리지 않고 줄을 고칠 수 있습니다.
Sume 자막 API는 하드 자막을 만들며, Job마다 자막을 입힌 새 영상을 반환합니다. 아래 Sume 관련 내용은 2026-09-27에 확인한 영상 캡션과 영상 검사 문서, Sume API 레퍼런스에서 가져왔고, 정의는 일반적인 설명입니다.
하드 자막과 소프트 자막은 무엇이 다른가요?
하드 자막은 번인 자막, 하드코딩 자막, 오픈 자막이라고도 부릅니다. 소프트 자막은 자막 트랙, 또는 켜고 끌 수 있는 자막이라고도 부릅니다.
| 하드 자막 | 소프트 자막 | |
|---|---|---|
| 텍스트가 있는 곳 | 모든 프레임의 픽셀 안 | 별도 파일이나 트랙 |
| 시청자가 끌 수 있나요? | 아니요 | 예, 플레이어가 자막 트랙을 지원하는 경우 |
| 오타 수정 | 영상을 다시 렌더링 | 텍스트 파일 수정 |
| 여러 언어 | 언어나 언어 쌍마다 영상 하나 | 영상 하나에 언어마다 트랙 하나 |
| 룩 | 텍스트를 입힐 때 고정됨 | 대부분 플레이어가 그림 |
| Sume에서 | POST /v1/video-captions가 자막을 입힌 video_url을 반환 | 음성 인식이 타이밍이 있는 문장을 JSON으로 반환하고, 파일은 직접 작성 |
폐쇄 자막(CC)은 소프트 자막과 같은 것인가요?
전달 방식으로 보면 그렇습니다. 폐쇄 자막(closed captions)은 별도 트랙으로 전달되므로 닫을 수, 즉 끌 수 있습니다. 개방 자막(open captions)은 하드 자막처럼 영상에 새겨져 있습니다. subtitles와 captions라는 두 단어는 목적도 다릅니다. subtitles는 대사를 옮기며 번역된 경우가 많고, captions는 오디오를 들을 수 없는 시청자를 위해 쓰여 말소리뿐 아니라 다른 소리도 담을 수 있습니다.
어느 쪽을 써야 하나요?
- 파일이 어디서 재생되든 텍스트가 보여야 할 때, 자막 스타일이 룩의 일부일 때, 올릴 곳이 자막 파일을 받지 않을 때는 하드 자막을 쓰세요.
- 시청자가 언어를 고르거나 텍스트를 끌 수 있어야 할 때, 나중에 줄을 고칠 일이 있을 것 같을 때, 영상 하나를 여러 언어로 내보낼 때는 소프트 자막을 쓰세요.
- 둘 다 쓰는 경우도 많습니다. 자막 없는 원본 영상과 자막 파일을 보관하고, 하드 자막이 필요한 채널용 사본에만 자막을 입히세요.
하드 자막은 지울 수 있나요?
트랙처럼 지울 수는 없습니다. 글자가 그 아래 픽셀을 대체했으므로 지울 대상이 없습니다. 현실적인 해결책은 자막 없는 원본을 보관해 두었다가 다시 입히는 것입니다.
Sume 자막 Job은 보낸 원본 영상과 별개인, 자막을 입힌 새 video_url을 반환하므로 원본을 보관하세요. 룩만 바꾸려면 source_caption_id를 새 style과 함께 보내세요. Sume는 그 자막의 원본 영상과 이미 확보한 단어 타이밍을 재사용하므로 음성 인식을 다시 실행하지 않습니다. 그래도 스타일 변경은 렌더링으로 과금됩니다.
Sume로 소프트 자막은 어떻게 만드나요?
Sume 음성 인식의 타이밍으로 파일을 직접 쓰세요. 이전 Sume 출력물처럼 이미 워크스페이스의 media.sume.com 파일인 클립은 transcribe: true를 넣은 POST /v1/video-inspect로 전사할 수 있고, 공개 HTTPS URL에 있는 오디오는 STT 1.0의 POST /v1/stt-1.0/transcribe로 보냅니다. 어느 쪽이든 segmentation: { "mode": "sentence" }를 추가하고, 돌려받은 구간마다 text, start, end를 SRT나 WebVTT 블록 하나로 쓰세요. 루프는 영상에서 SRT 자막 파일을 만드는 방법에 있습니다.
오디오 트랙이 없는 클립은 검사에서 inspect_source_has_no_audio로 실패합니다. 자막 파일이 이미 있고 자막을 입힌 사본도 필요하다면, SRT 자막 파일을 영상에 입히는 방법에서처럼 그 줄을 cue로 보내세요. Sume 자막 API는 .srt 파일 자체를 받지 않습니다.
출처
관련 글
미디어 도구 카테고리의 다른 글
- 영상 비트레이트 확인 방법: 크기와 길이로 계산하기
영상의 평균 비트레이트는 바이트 단위 크기 × 8 ÷ 초 단위 길이입니다. Sume의 무료 프로브가 두 값인 size_bytes와 duration_seconds를 반환합니다.
- 짧은 클립을 반복(루프)해 영상 길이 늘리는 방법
짧은 클립을 노래나 보이스오버 길이만큼 반복하세요. 오디오와 길이가 같은 Timeline 1.0 슬롯 하나에 클립을 넣고 render.pad_mode를 loop로 설정합니다.
- Instagram 스토리 광고 사이즈: 9:16 규격과 Facebook 스토리
Meta는 Instagram과 Facebook 스토리 광고에 9:16, 1440×2560을 권장합니다. 끝까지 재생되는 길이, 세이프 존, Sume로 만드는 방법을 정리했습니다.
- Instagram Reels API 업로드 영상 요구 사항
Instagram API는 공개 video_url의 Reels를 cURL로 가져옵니다. MP4·MOV, H.264·HEVC, 23–60 fps, 3초–15분, 300 MB 규칙마다 Sume MP4를 맞추는 법.
작성자 Sume