본문으로 건너가기
HanOpen
SMISRT

SMI 자막을 브라우저에서 SRT로 변환

SMI 자막을 SRT로 바꾸려면 파일 이름만 바꾸는 대신 시간과 언어 트랙을 읽어 다시 저장해야 합니다. HanOpen은 UTF-8 또는 EUC-KR 자막을 이 기기에서 읽고, 사용자가 선택한 언어 클래스 하나를 UTF-8 SRT로 만듭니다.

파일은 이 기기를 떠나지 않습니다.

여기에 파일을 놓으세요

받는 형식: .smi. 여러 파일을 한 번에 놓아도 됩니다.

이 기기에서는 파일 하나당 200 MB까지 받습니다.

SMI 파일을 읽고 언어 트랙을 고르면 UTF-8 SRT로 저장합니다. UTF-8과 EUC-KR 입력을 지원하며 자막 파일당 한도는 20 MB입니다.

선택한 언어 트랙에 뒤따르는 종료 자막이 없을 때만 씁니다. 0.1~60초 사이로 정하세요.

사용 방법

  1. 변환할 .smi 자막 파일을 목록에 넣고 자막 트랙 읽기를 누릅니다. 파일마다 표시되는 클래스 이름, 자막 개수와 첫 자막 내용을 함께 살펴봅니다.
  2. 저장할 언어 트랙을 고르고 마지막 자막 표시 시간을 정합니다. 해당 트랙에 종료용 빈 자막이 있으면 그 시각을 사용하고, 뒤따르는 cue가 없을 때만 설정한 길이를 적용합니다.
  3. 선택한 파일을 변환한 뒤 SRT를 내려받습니다. 여러 파일의 변환이 성공하면 결과들을 ZIP으로 묶어 받을 수 있으므로 압축을 풀어 영상별 자막을 확인합니다.

무엇이 보존되나

한 번 변환할 때 입력 파일마다 선택한 언어 클래스 하나를 출력합니다. 비어 있는 cue는 앞 자막을 끝내는 시각으로 사용하지만 빈 번호 항목은 만들지 않습니다. 줄바꿈 태그는 실제 줄바꿈으로 옮기고 글꼴, 색, 위치, 기울임을 포함한 나머지 태그와 스타일은 제거합니다.

이 안내는 도구가 처리하는 범위를 설명합니다. 결과를 사용하기 전에 출력 내용과 경고를 확인하세요.

포맷 설명

SAMI 자막은 HTML과 비슷한 모양의 텍스트 문서입니다. SYNC의 Start 속성에는 자막을 표시할 시각이 밀리초로 적히고, P 태그의 Class에는 KRCC나 ENCC 같은 언어 구분 이름이 들어갈 수 있습니다. SRT는 자막 번호, 시작 시각과 끝 시각, 표시할 문장으로 이루어진 목록입니다. 시작 시각은 00:00:01,200처럼 시·분·초와 밀리초로 나타냅니다. SMI를 SRT로 바꾸려면 원래의 시간 표식을 읽고 선택한 언어의 문장을 모은 뒤 각 문장이 사라질 시각을 정해야 합니다. 이 도구의 결과는 영상 자체나 영상 안에 삽입된 자막 트랙이 아니라 별도로 저장하는 UTF-8 텍스트 파일입니다.

자주 묻는 질문

한글이 깨지지 않도록 인코딩을 어떻게 고르나요?
먼저 UTF-8로 오류 없이 읽히는지 검사하고, 실패하면 EUC-KR로 다시 읽습니다. UTF-8 BOM은 UTF-8 디코더가 처리하지만 모든 종류의 BOM을 자동 판별하는 기능은 아닙니다. UTF-16은 현재 입력 경로에서 지원하지 않습니다. 화면에 보이는 입력 인코딩은 성공한 디코더 이름이며 확률로 추정한 언어 판정이 아닙니다. 미리 나온 자막 문장에 한글과 문장부호가 제대로 표시되는지 직접 확인하세요.
마지막 자막이 너무 길게 남거나 빨리 사라지면요?
선택한 트랙의 다음 cue가 있으면 그 시작 시각을 이전 자막의 끝으로 씁니다. 다음 cue가 빈 자막이어도 종료 시각으로 사용합니다. 뒤에 아무 cue도 없는 마지막 자막만 시작 시각에 설정한 길이를 더합니다. 기본은 3초이고 0.1초부터 60초까지 지정할 수 있습니다. 영상 길이나 대사의 실제 끝을 자동으로 듣고 판단하지 않으므로 마지막 장면과 대조해 적당한 값을 고르세요.
한국어와 영어가 함께 있으면 둘 다 저장되나요?
입력 파일 하나당 선택한 클래스 한 개를 SRT로 만듭니다. 모든 클래스를 자동으로 각각 저장하는 방식은 아닙니다. 같은 SMI에서 한국어와 영어 파일을 모두 만들려면 먼저 한 언어를 변환해 내려받은 다음 다른 언어로 바꾸고 다시 변환하세요. 같은 출력 이름을 쓸 수 있으므로 먼저 받은 사본에 언어를 구분할 이름을 붙여 두면 파일을 혼동하는 일을 줄일 수 있습니다.
기울임이나 색상도 SRT에 남길 수 있나요?
현재 출력은 자막 글자와 줄바꿈에 집중합니다. 기울임 태그도 다른 스타일 태그처럼 제거하며 색, 화면 위치와 글꼴을 보존하지 않습니다. 원본의 시각 효과가 중요한 노래 자막이나 위치를 이용해 화자를 나눈 자막은 결과를 따로 검토해야 합니다. 대사의 뜻이 위치나 색에 의존한다면 표시 방법을 지원하는 편집 과정에서 필요한 구분을 문장으로 옮기거나 원래 형식을 사용하는 방법을 살펴보세요.
영상과 자막의 싱크가 안 맞는 것도 고쳐 주나요?
원본 SYNC Start의 시간 값을 사용하므로 영상에 맞춰 전체 자막을 앞이나 뒤로 이동시키지는 않습니다. 영상의 소리, 프레임 수나 편집 내용을 읽는 기능도 없습니다. 시작부터 일정하게 늦는 자막과 중간 이후부터 차이가 벌어지는 자막은 서로 원인이 다를 수 있습니다. 이 도구에서 형식을 바꿨다는 이유로 그런 시간 차이가 해결되었다고 생각하지 말고, 영상과 자막을 함께 다루는 편집 과정에서 조정하세요.
읽을 수 있는 자막이 없다는 오류는 언제 나오나요?
SYNC가 없거나 시간이 숫자가 아니거나 앞 cue보다 뒤 cue의 시간이 더 작으면 작업을 멈춥니다. 빈 문장만 있는 파일이나 읽을 수 없는 인코딩도 결과를 만들 수 없습니다. 실제 자막 대신 다운로드 오류 페이지를 .smi 이름으로 저장한 경우가 아닌지 확인하고 텍스트 편집기에서 내용을 살펴보세요. UTF-8 사본을 만들 때에는 태그 이름과 Start 값을 지우지 않고 문자 인코딩만 바꾸어 저장해야 합니다.

영상이 아니라 자막 파일을 선택하세요

입력으로 받는 것은 확장자가 .smi인 자막 텍스트입니다. 동영상과 같은 폴더에 있더라도 영상 파일을 함께 넣을 필요는 없습니다. 영상의 제목과 자막 파일 이름이 같다는 이유만으로 같은 편집본의 자막이라고 확정할 수는 없으므로 받은 경로와 파일 내용을 함께 확인하세요. 파일을 고른 뒤 자막 트랙 읽기를 누르면 변환 전에 언어 클래스와 문장 일부를 볼 수 있습니다. 이 단계에서 영상과 전혀 관계없는 문장이 나오면 변환을 진행하기보다 자막 사본을 다시 확인하는 편이 좋습니다. 원본 파일은 남겨 두고 결과 SRT를 별도로 받으면 어떤 입력에서 출력이 나왔는지 나중에도 비교할 수 있습니다.

KRCC와 ENCC라는 이름만 보고 결정하지 마세요

클래스 이름은 원본 자막을 만든 사람이 정한 식별자입니다. KRCC가 보통 한국어를 뜻하는 자료를 볼 수 있지만 모든 파일이 그 규칙을 따른다고 가정할 수는 없습니다. 사용자 정의 이름이나 이름 없는 트랙에도 실제 대사가 들어 있을 수 있습니다. 목록의 자막 개수와 첫 문장 샘플을 함께 읽어 어떤 내용이 들어 있는지 확인하세요. 두 클래스의 개수가 다르다고 곧바로 누락이라고 판단할 필요도 없습니다. 번역문은 여러 원문 cue를 합치거나 나누어 작성될 수 있습니다. 이 도구는 서로 다른 트랙의 번역 대응을 검사하지 않으므로 필요한 언어의 문장이 맞는지가 선택의 기준입니다.

빈 자막을 버리기 전에 종료 시각으로 읽습니다

SMI에는 글자 대신 공백만 들어 있는 cue가 있습니다. 이런 cue는 화면의 이전 대사를 지우는 표식으로 쓰일 수 있으므로 텍스트가 없다는 이유로 먼저 제거하면 이전 자막이 다음 대사까지 계속 남게 됩니다. 예를 들어 1초에 대사가 시작되고 2초에 빈 cue가 있으며 4초에 새 대사가 시작되면 첫 대사는 1초부터 2초까지만 표시해야 합니다. HanOpen은 빈 cue를 시간 경계로 이용한 뒤 빈 SRT 번호는 만들지 않습니다. 클래스가 없는 빈 종료 표식은 앞서 읽은 언어 트랙들을 종료합니다. 반면 특정 클래스에 붙은 빈 cue는 해당 트랙의 시간 흐름 안에서 해석합니다.

마지막 표시 시간은 일부 자막에만 쓰입니다

화면의 마지막 자막 표시 시간은 모든 cue의 길이를 똑같이 만드는 옵션이 아닙니다. 뒤에 시간 표식이 있는 자막들은 원본의 다음 시각을 사용하고, 선택한 트랙에서 마지막으로 남은 대사에 후속 cue가 없을 때만 설정값을 씁니다. 마지막 빈 cue가 이미 종료 시각을 제공한다면 설정을 바꾸어도 결과가 같을 수 있습니다. 이때는 옵션이 무시된 오류가 아니라 원본의 명시된 끝을 따른 것입니다. 반대로 종료 표식이 없는 대사의 길이를 너무 크게 잡으면 영상이 끝난 뒤에도 자막이 남을 수 있습니다. 마지막 대사가 나타나는 장면과 엔딩 화면을 직접 확인해 필요한 길이를 정하세요.

한글과 문장부호를 먼저 검토하세요

인코딩 문제는 글자가 전부 깨지는 모습으로만 나타나지 않습니다. 한글은 읽히는데 특수 문장부호나 일부 외국어가 이상할 수도 있습니다. 트랙 미리 보기에서 따옴표, 괄호, 사람 이름과 같은 부분을 살펴보고 변환 후 SRT의 다른 구간도 확인하세요. 성공한 디코더가 EUC-KR로 표시되면 출력까지 같은 인코딩으로 유지되는 것이 아니라 입력을 그 방식으로 읽었다는 뜻입니다. 결과는 UTF-8로 저장됩니다. UTF-16이나 다른 인코딩의 원본을 텍스트 편집기로 다시 저장해야 할 때에는 현재 화면에서 정확히 읽힌 상태인지 먼저 확인합니다. 깨진 화면 그대로 UTF-8로 저장하면 원래 문자를 되찾는 데 도움이 되지 않을 수 있습니다.

줄바꿈과 꾸밈을 구분해 확인하세요

대사 안의 br 태그는 SRT의 실제 줄바꿈이 됩니다. 줄 끝의 불필요한 공백은 정리하고 공백만 있는 줄은 출력하지 않습니다. 기울임, 글꼴, 글자 크기와 같은 다른 태그는 제거합니다. 따라서 원본에서 한 줄의 기울임으로 속말을 구분했거나 색상으로 인물을 구분했다면 결과에서 그 구별이 사라질 수 있습니다. 이런 자막은 첫 문장 몇 개만 확인해서는 중요한 차이를 찾기 어렵습니다. 표시 방식에 의미가 있는 장면을 따로 골라 변환본과 비교하세요. 필요한 구분을 대괄호 설명 같은 문자로 편집하는 것은 사용자의 별도 편집 작업이며, 변환기가 대사의 의도를 추측해 새 표현을 만들지는 않습니다.

번호와 타임코드는 이렇게 바뀝니다

출력의 자막 번호는 선택한 트랙의 비어 있지 않은 cue를 기준으로 1부터 다시 매깁니다. 시작과 끝은 시, 분, 초, 밀리초 형태로 표시하며 밀리초 앞에 쉼표를 씁니다. 원본에서 여러 언어가 번갈아 등장했어도 선택하지 않은 언어의 문장이 SRT에 섞이지 않도록 트랙을 구분합니다. 같은 클래스가 같은 시각에 여러 문단으로 나타나면 그 문장들을 줄바꿈으로 합쳐 표시합니다. 원본의 시간 순서가 뒤집힌 경우에는 마음대로 재정렬하지 않고 오류를 안내합니다. 시간만 정렬하면 의도한 대사 순서나 종료 표식의 의미가 바뀔 수 있기 때문입니다. 출력의 숫자가 원본 P 태그의 순번과 같지 않아도 반드시 누락은 아닙니다.

여러 자막의 언어 선택을 각각 확인하세요

여러 SMI를 추가하면 파일마다 자기 언어 트랙을 읽습니다. 첫 번째 파일에서 한국어를 골랐다는 이유로 다음 파일의 사용자 정의 클래스까지 한국어로 추정하지 않습니다. 각 파일의 샘플을 확인해 저장할 트랙을 선택해야 합니다. 마지막 자막 길이 설정은 현재 묶음에 공통으로 적용하므로 서로 다른 길이가 필요한 파일은 작업을 나누면 됩니다. 한 파일에 오류가 있어도 다른 입력의 결과를 확인할 수 있습니다. 성공한 파일이 여러 개면 바깥 ZIP에 결과들을 모으고, 같은 출력 이름이 생기면 번호를 붙여 두 사본을 모두 남깁니다. 압축을 푼 후 어느 영상에 연결할 파일인지 이름을 다시 정리하면 관리가 쉬워집니다.

다운로드 뒤 영상의 세 구간을 대조하세요

SRT를 텍스트로 열어 한글과 번호가 정상인지 본 다음 실제 영상에 연결해 확인합니다. 초반 대사 하나만 맞는지 확인하고 끝내지 말고 중간 장면과 마지막 대사도 골라 재생하세요. 서로 다른 편집본의 영상과 자막은 초반에는 맞다가 광고나 삭제 장면 뒤에서 틀어질 수 있습니다. 형식이 올바른 SRT라는 사실은 영상과 시간이 맞는다는 보장이 아닙니다. 모든 대사가 일정하게 늦는지 특정 장면 이후부터 차이가 생기는지 구분하면 후속 편집 방향을 잡는 데 도움이 됩니다. 마지막 표시 시간 옵션으로 중간 대사의 싱크 문제를 해결하려고 하지 마세요. 그 옵션은 후속 cue가 없는 마지막 문장에만 영향을 줍니다.

오류가 계속되면 확인할 부분

자막 입력은 파일당 20 MB까지 받습니다. 파일 선택 영역의 일반 크기 안내보다 자막 전용 한도가 작을 수 있으므로 자막 설명에 적힌 한도를 함께 확인하세요. 비정상적으로 큰 SMI라면 영상이나 다른 이진 데이터를 확장자만 바꾸어 넣은 것은 아닌지 살펴봅니다. 읽기 오류가 계속되면 원본의 첫 SYNC 근처와 마지막 부분이 잘리지 않았는지 확인합니다. 텍스트 편집기에서 수정할 때에는 반드시 복사본을 사용하고, 단순히 오류를 없애려고 시간 표식을 모두 지우지 마세요. 선택한 클래스가 없다는 오류는 트랙을 다시 읽어 현재 파일의 목록에서 선택하면 원인을 확인할 수 있습니다. 받은 자막의 문장을 바꾼 경우에는 원문 사본과 편집한 사본의 파일 이름도 구분해 두세요.

다른 방법과 출력 선택

대사 번역, 시간 이동, 자막 위치나 스타일 편집이 목적이라면 그 기능을 다루는 편집 과정이 먼저 필요합니다. HanOpen의 자막 도구는 로컬 SAMI를 읽어 선택한 트랙의 문장과 시간으로 SubRip 목록을 만드는 범위입니다. 영상 파일 안에 자막이 들어 있는 경우에는 먼저 별도의 자막 파일을 확보해야 하며, 영상을 이 입력 영역에 넣어 자막을 추출할 수는 없습니다. 자막의 내용 자체가 잘못되어 있다면 형식 변환 전후 어느 단계에서 수정했는지도 기록해 두세요.

분석 정보 수집 선택

Google Analytics로 방문 페이지와 문서 변환 횟수를 측정하며 파일명과 문서 본문은 보내지 않습니다. EEA·영국·스위스에서는 허용한 뒤에 분석 쿠키를 사용하고, 그 밖의 지역에서는 선택 전에도 사용할 수 있습니다. 거부하면 쿠키 없는 측정 신호만 보냅니다. 선택은 180일간 유효하며 여기서 바꿀 수 있습니다. 거부해도 모든 도구를 사용할 수 있습니다.