NEETs' vault
귀차니스트의 심심풀이 공간
srt 자막 파일과 smi 자막 파일의 차이점?


"smi 자막은 한국어 자막, srt 자막은 영어 자막" 이런 편견이 많더군요.


저도 예전엔 그런 줄 알고 처음 자막 만들 당시엔 일일이 srt->smi 변환을 했었는데... 굳이 변환해 줄 필요가 없다는 걸 알게 되었죠.


srt 파일에 대해 갖고있는 오해와 그 장점을 알려드리기 위해 몇 자 써봤습니다.





smi 파일이란?


자막 파일의 형식 중 하나로, 거의 한국에서만 쓰이는 양식입니다. 정식 명칭은 Synchronized Accessible Media Interchange (SAMI) 로 .smi 혹은 .sami 확장자를 사용합니다.


마이크로소프트에서 미디어 플레이어에 쓰는 청각 장애인을 위한 폐쇄자막(Closed Caption)[각주:1] 용으로 개발했으나, 그다지 널리 쓰이지 못하고 잊혀진 고물(?)입니다. 자막을 메모장으로 열어보면 KRCC, ENCC 이런 약자를 볼 수 있을텐데 이게 그 흔적이라고 할 수 있죠. (KRCC = Korean Closed Caption, ENCC = English Closed Caption) 


사실상 해외에서는 전혀 쓰이지 않는 양식이라고 봐도 됩니다. 하지만 한국에서는 초고속인터넷 초창기에 사사미(SASAMI 2K)[각주:2][각주:3]라는 동영상 재생 프로그램이 등장, smi 파일을 자막으로 지원하면서 오히려 국내에서의 자막=.smi 파일 공식을 세우게 되었습니다.



smi 파일 구조


<SAMI>


<HEAD>
<Title>자막 제목</Title>


<STYLE TYPE="text/css">
<!--
P { margin-left:8pt; margin-right:8pt; margin-bottom:2pt;
    margin-top:2pt; font-size:20pt; text-align:center;
    font-family:굴림, Arial; font-weight:bold; color:white;
    background-color:black; }
  .KRCC { Name:한국어; lang:kr-KR; SAMIType:CC; }
  .ENCC { name: English; lang:en-US ; SAMIType:CC; }
-->

</STYLE>


</HEAD>


<BODY>


<SYNC Start=0>
<P Class=KRCC>한국어 자막</P>
<P Class=ENCC>English Subtitle</P>


<SYNC Start=1000>
<P Class=KRCC>&nbsp;</P>
<P Class=ENCC>&nbsp;</P>


</BODY>
</SAMI>


실질적으로는 자막 내용이 있는 <BODY> </BODY> 안의 내용만 있더라도 팟플레이어 같은 플레이어에서 잘 인식됩니다.


즉 smi 자막 파일의 핵심은 <SYNC Start=싱크>인 셈이죠. 다만 이 싱크라는 게 숫자로만 되어 있어서 그냥 보기만 하면 이게 언제 나오는 건지 알기 어렵습니다. 그래서 Subtitle Edit 같은 자막 제작 프로그램이나 동영상 프로그램 내 자막 탐색기로 건드리는게 편합니다.



smi 파일의 특징


1. HTML 태그 및 CSS 지원


<i></i> 이탤릭

<b></b> 볼드

<font color = FF0000></font> 글자색

<font face = 바탕></font> 글 폰트 변경

<ruby></ruby> 루비태그


등등 자막에 간단한 효과를 입힐 수 있습니다. 


다만 단점(?)이라면 자막 중간에 <br>이 없으면 줄 바뀜이 되지 않습니다.


<SYNC Start=1000><P Class=KRCC>
1, 2, 3, 4
5, 6, 7, 8


실제로 나오는 자막 = 1, 2, 3, 45, 6, 7, 8


이렇게 말이죠



2. 태그를 이용해 통합자막 제작 가능


아까 위에서도 언급했지만 KRCC, ENCC 등 동영상 플레이어에서 자막 언어를 KRCC, ENCC, 혹은 동시에 나오도록 설정할 수 있습니다. 통합자막은 다 이런 형식이라고 보면 됩니다. smi 파일의 장점이죠.


srt 파일은 파일 하나 당 하나의 자막 파일이라서 통합 자막 흉내를 내려면 파일 제목 마지막에 .kr .en 이런 식으로 구별해줘야 합니다.



3. 종료싱크가 없음


이건 어떻게 보면 smi 파일의 단점인데, 싱크 하나가 시작되면 다음 싱크가 나오기 전까지 자막이 계속 남습니다. 종료싱크가 없으니 대신 중간에 싱크 하나에 &nbsp; 를 넣어 빈 자막을 만드는 식으로 자막을 지워줘야 하죠. 


후술하겠지만 srt 파일은 자막 별로 시간을 따로 설정할 수 있기에 자막이 자동 종료되거나 같은 시간에 여러 자막을 나오게 하는 것도 가능합니다. 



4. 호환성이 낮음


SAMI 자체가 워낙 오래된데다가 마소도 사실상 버린 자식 취급이라 생기는 문제입니다. 이게 개발된 90년대만 해도 유니코드란 개념이 없었기에, 각 언어가 다른 인코딩 형식을 가지고 있었죠.


대표적으로 일본어 같은 경우 유니코드로 저장하지 않으면 자막에서 글자가 깨져서 나옵니다. 요즘엔 Subtitle Edit 같은 자막 제작 프로그램에서 UTF-8 형식으로 저장하는 걸 지원해주니 왠만하면 유니코드로 만드는 게 좋습니다.


또 다른 문제는 smi 파일이 사실상 한국에서만 쓰이는 파일이다보니, smi 파일을 지원하는 멀티미디어 기기가 그다지 많지 않습니다. 






srt 파일이란?



srt 파일은 서브립(SubRip)이라는 자막 추출 프로그램의 텍스트 자막 파일 확장자입니다. 사실상 모든 서브립 파일 포멧의 기본 구조라고 할 수 있죠. 해당 프로그램은 자유 소프트웨어라 전세계에서 널리 쓰이고 있습니다. 


해외에서는 텍스트 자막 = srt 파일입니다. 단순한 자막은 srt 파일, 좀 더 화려한 효과를 주고 싶다면 ass 파일을 사용하죠.



srt 파일 구조


9
00:01:57,456 --> 00:01:58,790
MAN: Get inside now!


10
00:01:58,830 --> 00:02:00,700
Hurry up! You're late!


순번, 시간(시간:분:초,밀리초), 자막으로 구성된 단순한 구조입니다. 


사실 저 순번은 그냥 '몇 번째 자막'이라는 정도라서 숫자가 중복이든 역순이든, 심지어는 없더라도 자막을 읽는데는 아무런 문제가 없습니다. 중요한 건 시간과 자막이죠.



srt 파일의 특징



1. 높은 호환성


유니코드 형식이라서 일본어든 간체자든 글자가 깨질 일이 없습니다. 그리고 전 세계에서 널리 쓰이는 자막 파일이라 srt를 지원하지 않는 멀티미디어 기기 찾는게 더 빠를 정도죠.


그리고 HTML 태그도 사용할 수 있습니다. 종종 인터넷에 'srt 파일은 smi 파일처럼 자막을 꾸밀 수 없습니다' 라는 소리가 있던데... 아주 잘 적용됩니다. 제 자막 받아보신 분들은 아실겁니다.



2. 독립된 자막


시작 시간 ---> 종료 시간

자막 내용


각 자막별로 시작 시간과 종료 시간을 설정할 수 있습니다.


이게 의외로 재미있는 기능인게, 종료 시간이 따로 설정되었기에 한 자막이 나오는 도중 다른 자막이 나오더라도 동시에 같이 나옵니다. smi 같은 경우는 싱크 시작만 설정되어 있기에 이전 자막은 바로 끊겨버리죠.

그래서 상황에 따라선 .ass 자막 비슷한 효과를 내는 것도 가능합니다. 


예시를 보여드리자면...





159

00:09:55,000 --> 00:09:58,000
<ruby><rt>몰라. 어쩌면 세상에게서</rt></ruby>
<ruby><rt>당한 만큼 되돌려</rt></ruby>
<ruby><rt>받으려는 걸지도 모르지.</rt></ruby>


175
00:09:52,710 --> 00:09:56,080
<i>그들 모두의 이름을</i>
<i>부르시는 분이시다</i>


176
00:09:56,080 --> 00:09:58,420
<i>그분께서는 능력이 크시고</i>
<i>권능이 막강하시어</i>


177
00:09:58,420 --> 00:09:59,960
<i>하나도 빠지는</i>
<i>일이 없다.</i>


9분 55초~9분 58초로 설정된 루비태그 자막이 다른 자막들이 나올 때 위에 나타났다가 사라지는 걸 보실 수 있을 겁니다. 자막별로 시작 시간과 종료 시간이 설정되어 있기에 이런 연출이 가능합니다.


싱크 시작 밖에 없는 smi 자막으로는 하기 어려운 연출이죠. 그래서 제가 만든 자막글에 변환하지 말아달라고 적은 겁니다. 이걸 smi 변환하면 대사가 순식간에 나왔다가 사라지는 등 엉망이 됩니다.



+ 추가내용


제한적이지만 ass 태그도 적용 가능합니다. (팟플레이어 기준)



1
00:00:00,000 --> 00:00:04,000
{\move(195,95,195,95,100,400)\fad(500,1250)\fscx20\fscy20\t(0,1200,\fscx100\fscy100)}
<Font Color=#00FF00>South Park S22E02</Font>
<Font Color=#009900>A Boy and a Priest</Font>
<Font Color=#00FFFF>Original air date October 3, 2018</Font>


특정 위치 이동, 글자 크기 변환, 페이드 효과 적용.




3. 단순함


저 위의 smi 구성만 보더라도, HTML 태그 잔뜩이라 복잡하지만 srt 형식은 단순합니다. 그리고 &nbsp; 같은 빈 싱크도 필요없고, 줄 하나 바꾸는 데 <br> 도 필요없죠. 그래서 같은 내용의 자막이더라도 srt 파일이 smi 보다 훨씬 용량이 적죠. 딱히 장점은 아니지만요.


그 외에도 싱크로 자막을 설정하는 smi와 달리 srt는 시간으로 자막을 설정하기에 굳이 전용 프로그램 없이 메모장만 가지고도 쉽게 수정할 수 있다는 장점이 있습니다.




요약


1. smi 자막 - 한국에서만 씀. 비주류 양식이라 호환성 문제가 있음. KRCC/ENCC 등 HTML 태그를 사용해 통합자막을 만들 수 있음.


2. srt 자막 - 범세계적 양식. 거의 모든 플레이어 및 기기에서 사용 가능. 통합자막 기능만 빼고 smi에서 되는 태그는 srt에서도 가능함. 


3. 서로 차이점은 있지만 근본적으론 거기서 거기


4. 그러므로 프로그램 혹은 장치 호환 문제가 아닌 이상 억지로 변환할 필요는 없음


5. srt 파일이라고 다 영어 자막은 아니니 오해하지 마시길...





https://ko.wikipedia.org/wiki/SAMI

https://en.wikipedia.org/wiki/SAMI


https://ko.wikipedia.org/wiki/서브립

https://en.wikipedia.org/wiki/SubRip



  1. 사용자가 원하는 경우에만 나오게 할 수 있는 자막 [본문으로]
  2. Specially Advanced Synchronized Accessible Media Interchange 2000 [본문으로]
  3. http://www.storyofseoul.com/news/articleView.html?idxno=702 [본문으로]
  Comments,     Trackbacks