요약: MKV 파일 안의 자막은 근본적으로 다른 두 가지 형태로 들어 있고, 추출 방법은 어느 쪽이냐에 따라 달라집니다. MKV에 텍스트 자막 트랙(SRT 또는 ASS)이 들어 있다면, 무료 명령 하나 — ffmpeg 또는 MKVToolNix의 mkvextract — 로 몇 초 만에 자막 파일이 저장됩니다. 하지만 흔한 두 경우에는 텍스트가 전혀 들어 있지 않습니다. 이미지 기반 트랙(블루레이·DVD 립에서 표준인 PGS와 VobSub), 그리고 화면에 직접 입혀진 자막입니다. 이 둘은 모두 OCR이 필요합니다. 이 가이드는 정확한 명령과 함께 네 가지 경우를 모두 다루며, 어느 경우인지 알려주는 10초짜리 확인부터 시작합니다.
MKV 파일에 어떤 자막 트랙이 있는지 어떻게 확인하나요?
무언가를 추출하기 전에 먼저 자막 스트림 목록을 확인하세요. ffmpeg가 설치되어 있다면(맥에서는 brew install ffmpeg) 다음을 실행합니다:
ffprobe -v error -select_streams s \
-show_entries stream=index,codec_name:stream_tags=language,title \
-of default=noprint_wrappers=1 input.mkv
또는 이미 MKVToolNix를 쓰고 있다면 mkvmerge -i input.mkv가 같은 정보를 더 쉬운 표현으로 출력해 줍니다. 출력에 나오는 codec_name이 모든 것을 말해 줍니다:
| codec_name | 무엇인가 | SRT를 얻는 방법 |
|---|---|---|
subrip | 일반 텍스트 자막(SRT) | ffmpeg 명령 하나 — 몇 초면 완료 |
ass | 스타일이 있는 텍스트 자막(애니메이션에서 흔함) | ffmpeg 명령 하나; SRT로 바꾸면 스타일은 사라짐 |
hdmv_pgs_subtitle | 블루레이 이미지 자막(텍스트의 그림) | OCR 필요 |
dvd_subtitle | DVD 이미지 자막(VobSub) | OCR 필요 |
| 출력이 전혀 없음 | 자막 트랙 없음 — 보인다면 화면에 입혀진 하드섭 | 영상 자체에 OCR |
ffprobe가 subrip이나 ass를 표시하면 추출은 무료이고 몇 초면 끝납니다. hdmv_pgs_subtitle이나 dvd_subtitle을 표시하면 그 트랙은 텍스트의 그림을 담고 있어서, OCR 없이는 어떤 도구도 SRT로 바꿀 수 없습니다. 이 구분이 MKV 자막에서 가장 흔한 혼란의 지점이며, 이후의 모든 것을 결정합니다.
ffmpeg로 MKV에서 SRT 자막을 어떻게 추출하나요?
텍스트 트랙이라면 ffmpeg가 가장 빠른 방법이고 맥, 윈도우, 리눅스에서 동일하게 작동합니다:
# 첫 번째 자막 트랙을 SRT로 추출
ffmpeg -i input.mkv -map 0:s:0 subtitles.srt
# 두 번째 자막 트랙 추출 (0:s:1 = 두 번째, 이하 동일)
ffmpeg -i input.mkv -map 0:s:1 subtitles.srt
# 위치 대신 언어로 트랙 선택
ffmpeg -i input.mkv -map 0:s:m:language:eng english.srt
# ASS 트랙을 원본 형식으로 유지 (스타일 보존)
ffmpeg -i input.mkv -map 0:s:0 -c copy subtitles.ass
알아둘 만한 것이 둘 있습니다. 첫째, ASS 트랙을 SRT로 변환하면 폰트, 색상, 위치, 노래방 효과 등 모든 스타일이 조용히 사라집니다 — SRT 형식이 이를 표현할 수 없기 때문입니다. 스타일이 필요하면 대신 .ass로 추출하세요. 둘째, -map 0:s:0은 자막 스트림만 셉니다. 따라서 ffprobe가 출력하는 스트림 인덱스 번호와는 다릅니다.
ffmpeg는 추출하는 동안 자막 형식을 변환하기 때문에 ffmpeg -i input.mkv -map 0:s:0 subtitles.srt가 SRT와 ASS 트랙 양쪽에서 작동합니다 — 하지만 이미지 기반 트랙(PGS/VobSub)을 텍스트로 변환하지는 못하며, 시도하면 인코더 오류로 실패합니다.
MKVToolNix(mkvextract)로 자막을 어떻게 추출하나요?
MKVToolNix(무료, mkvtoolnix.download 또는 brew install mkvtoolnix)는 트랙을 원본 형식 그대로 비트 단위까지 정확히 추출합니다. 먼저 트랙 ID를 확인한 뒤 ID로 추출하세요:
# 트랙과 ID 목록 보기
mkvmerge -i input.mkv
# Track ID 0: video (HEVC) / Track ID 1: audio (AAC) / Track ID 2: subtitles (SubRip/SRT)
# 트랙 2를 SRT로 추출
mkvextract input.mkv tracks 2:subtitles.srt
# 한 번에 여러 트랙 추출
mkvextract input.mkv tracks 2:english.srt 3:spanish.srt
이걸 찾는 거의 모든 사람이 걸려 넘어지는 함정 하나: MKVToolNix GUI에는 추출 기능이 없습니다 — 추출은 명령줄 도구 mkvextract로만 제공됩니다. GUI는 멀티플렉싱(트랙 넣기), 헤더 편집, 파일 분할을 다루므로, 그 안에서 "추출" 버튼을 찾는 것은 설계상 헛수고입니다.
기록하는 파일 확장자는 트랙의 코덱과 맞아야 합니다: SubRip는 .srt, ASS/SSA는 .ass, PGS는 .sup, VobSub의 경우 mkvextract가 .idx + .sub 쌍을 기록합니다. 이는 추출된 파일이 텍스트가 전혀 아닌 경우로 이어집니다.
자막 트랙이 PGS나 VobSub(이미지 기반)이면 어떻게 하나요?
블루레이 립은 거의 항상 hdmv_pgs_subtitle 트랙을 담고, DVD 립은 dvd_subtitle(VobSub)을 담습니다. 이 트랙들은 각 자막을 플레이어가 영상 위에 겹쳐 표시하는 렌더링된 그림으로 저장합니다 — 그 안에 텍스트는 없습니다. 추출하면 자막 편집기나 영상 플랫폼이 텍스트로 읽을 수 없는 .sup 또는 .idx/.sub 파일이 나옵니다.
PGS나 VobSub 자막을 SRT로 변환하려면 언제나 OCR이 필요합니다. "자막"이 텍스트가 아니라 텍스트의 비트맵 이미지이기 때문입니다. 맥에서 실용적인 방법은 ffmpeg로 트랙을 영상 위에 한 번 입힌 뒤, 그 결과에 자막 OCR을 돌리는 것입니다:
# 이미지 자막 트랙을 영상에 입히기 (일회성 재인코딩)
ffmpeg -i input.mkv -filter_complex "[0:v][0:s:0]overlay[v]" \
-map "[v]" -map 0:a? -c:a copy burned.mp4
그런 다음 burned.mp4를 GeekLink에 가져와 OCR 추출을 실행합니다. 자막 영역을 감지하고, 각 프레임의 텍스트를 읽고, 중복 프레임을 하나의 큐로 병합하여 깔끔하고 타이밍이 정확한 SRT를 내보냅니다 — 맥에서 로컬로, 아무것도 업로드하지 않고요. 재인코딩은 OCR이 읽을 수 있을 정도면 충분하므로 기본 설정으로도 괜찮습니다.
MKV에 자막 트랙이 전혀 없으면(하드섭) 어떻게 하나요?
다운로드한 애니메이션, 드라마 에피소드, 재인코딩된 영상에서 가장 흔한 경우입니다: ffprobe는 자막 스트림을 표시하지 않는데, 영상을 재생하면 자막이 분명히 보입니다. ffprobe가 자막 스트림을 표시하지 않는데 재생 중 자막이 보인다면, 그것은 화면 자체에 입혀진 하드섭입니다 — 어떤 추출기, 디먹서, 변환기도 뽑아낼 수 없고, 영상에 OCR을 돌리는 것이 유일한 방법입니다.
- 맥에서 MKV를 GeekLink에 가져옵니다 — 변환은 필요 없고, MKV를 바로 지원합니다.
- OCR 추출을 실행합니다. 프레임에서 자막 텍스트를 읽어 타이밍이 있는 자막 줄로 병합합니다.
- SRT로 내보냅니다 — 또는 먼저 번역해서 이중 언어 파일로 내보냅니다.
OCR은 로컬에서 실행되고 한 번에 배치 전체를 처리하므로, 한 시즌 전체 에피소드를 한꺼번에 큐에 넣을 수 있습니다. 전체 과정은 여기 있습니다: OCR로 하드섭(화면에 입혀진 자막) 추출하는 법; 도구를 고르는 중이라면 2026년 하드섭 추출 최고의 도구를 보세요. 자막이 임베드된 것인지 하드섭인지 확실치 않나요? 차이는 임베디드 자막과 하드섭 비교에서 설명합니다.
추출한 자막은 어떻게 번역하나요?
추출은 흔히 현지화 작업의 첫 단계입니다. MKV에서 추출한 SRT 파일은 GeekLink로 바로 가져와 원본 타이밍을 유지한 채 AI로 40개 이상의 언어로 번역할 수 있습니다 — 재전사(재인식)가 필요 없습니다. 결과를 번역된 SRT, 이중 언어 SRT로 내보내거나 번역을 영상에 입힐 수 있습니다. 전체 워크플로: 하드섭 번역하는 법.
FAQ
MKV 파일에서 자막을 어떻게 추출하나요?
MKV에 텍스트 자막 트랙이 있다면 ffmpeg -i input.mkv -map 0:s:0 subtitles.srt를 실행하세요 — 몇 초면 끝나고 무료입니다. 트랙이 이미지 기반(PGS/VobSub)이거나 자막이 화면에 입혀져 있다면 추출할 텍스트가 없으므로, 프레임에서 읽어내는 OCR 소프트웨어가 필요합니다.
MKVToolNix GUI로 자막을 추출할 수 있나요?
아니요. MKVToolNix GUI는 트랙을 MKV 파일로 멀티플렉싱하지만 추출 기능은 없습니다. 추출은 함께 설치되는 명령줄 도구 mkvextract로 합니다: mkvmerge -i input.mkv로 트랙 ID를 찾고, 그다음 mkvextract input.mkv tracks 2:subtitles.srt.
VLC로 MKV에서 자막을 추출할 수 있나요?
아니요. VLC는 임베드된 자막 트랙을 표시하고 전환할 수는 있지만, 트랙을 자막 파일로 내보내는 기능은 없습니다. 텍스트 트랙에는 ffmpeg나 mkvextract를, 이미지 기반과 하드섭에는 OCR을 쓰세요.
자막이 SRT 대신 .sup이나 .idx/.sub 파일로 나온 이유는 무엇인가요?
트랙이 이미지 기반이기 때문입니다: .sup은 블루레이 PGS, .idx/.sub은 DVD VobSub입니다. 둘 다 자막을 그림으로 저장하므로 추출하면 그림이 그대로 보존됩니다. 이를 SRT로 변환하려면 OCR이 필요합니다 — 파일 안에 변환할 텍스트가 없기 때문에 어떤 형식 변환기도 할 수 없습니다.
맥에서 PGS 자막을 SRT로 어떻게 변환하나요?
ffmpeg 명령 하나로 PGS 트랙을 영상에 입힌 뒤(위 가이드 참고), 그 결과에 GeekLink의 자막 OCR을 실행하세요. 프레임에서 자막 텍스트를 읽어 타이밍이 있는 SRT로 내보냅니다 — 전부 맥에서 로컬로요.