'sami'에 해당되는 글 2건

  1. 2008/05/07 smi 자막화일 싱크 맞출 때 유용한 도구 - Smi SyncMaster by 작은인장 (7)
  2. 2008/02/12 sami 자막 수정 방법 by 작은인장 (7)
예전에 smi에 대한 글을 한 번 올린 적이 있었습니다. 저도 한 때 smi 화일을 만들어 배포하곤 하던 경험이 있기 때문에 smi 화일을 만들어 배포하는 분들께 감사하는 마음을 갖지 않을 수 없네요. 보통 싱크와 간단한 번역오류 수정하는 것 정도를 하려고 해도 영화 한 편에 6~10시간 정도 소모하는 걸 생각한다면 완전히 시간노가다라고 할 수 있겠죠. 만약 번역부터 시작해서 모든 작업을 해야 한다면 팀을 구성해서 작업한다고 하더라도 24시간도 모자랄 것입니다.
그래서 자막이 필요한 동영상마다 싱크가 정확히 맞는 자막을 찾아다니는 것은 무척 어렵습니다. 보통은 하나의 자막 원본이 공개되면 할 줄 아는 사람들이 다양한 동영상에 맞춰서 이용하게 되고, 이러한 자막들이 우연히 인터넷에 노출되면 여러 사람들이 이용하게 되죠. 그렇다보니 동영상에 맞는 자막 찾기가 힘들고, 결국 스스로 자막 원본을 이용해서 싱크를 맞추는 작업을 하는 것이 편해집니다.

여기서 소개하는 도구는 아주 간단한 도구입니다. 제가 처음 자막을 수정하곤 했을 때 이런 도구가 있었다면 훨씬 더 편하게 자막을 수정했을 것 같아 제 블로그에 소개해 봅니다.
이 프로그램은 자막을 새로 제작할 때 필요한 유틸리티가 아니라 자막의 Sync를 수정할 때 필요한 전용 유틸리티입니다.

프로그램 화면

Smi SyncMaster 1.0은 김유빈 님이 2000-2001년 배포한 것으로 잘 알려지지는 않았지만 자막을 만지는 사람들에게는 아주 유용한 도구입니다. 전 그동안 자막을 만들어 배포하는 일을 하지 않았기 때문에 그동안 이 유틸리티를 잊고 있었네요. 이제는 자막을 만들어 배포한다거나 하는 일은 하지 않습니다만 그래도 김유빈 님께 감사의 뜻을 전하고 싶습니다.

Smi SyncMaster의 중요 기능
1. 자막 위치 수정
2. 자막 길이 수정
3. 자막 나누기
4. 자막 합치기

총 4 가지 기능이 있는데, 이 중에서 이 프로그램만이 할 수 있는 기능은 '자막 길이 수정'입니다. 다른 기능은 직접 수동으로 하거나 일반 프로그램을 이용해서도 충분히 할 수 있습니다.[각주:1]

자막 위치 수정은 자막 안에 있는 전체 내용의 Sync를 앞 또는 뒤로 조절할 수 있습니다. smi syncmaster는 0.1초 단위로 시간을 조절할 수 있습니다. 사실상 자막 싱크는 0.3초 이내에 들면 차이를 알기 힘들므로 0.1초 단위 정도면 큰 문제는 없을 것입니다. (영화 동영상의 경우 0.1초는 2~6프레임 정도 지나가는 시간입니다.) 이 기능은 KMPlayer의 "자막제어/자막싱크조절" 기능을 이용해서도 할 수 있습니다. 자막 싱크 조절을 사용해서 자막을 조절한 뒤에 "자막제어/자막 고급 열기 저장" 기능을 이용해 저장하면 되므로 굳이 이 유틸리티의 이 기능을 사용할 필요는 없습니다. 다만 KMPlayer의 자막 저장 기능에 버그가 있으므로 버그를 피하는 약간의 노하우가 필요합니다.

자막 길이 수정은 다른 유틸리티에서는 제공하지 않는 독특한 기능입니다. 우선 자막을 불러들여 기능선택에서 '자막 길이 수정'을 선택하고, 설정에서 늘이기 또는 줄이기를 선택하고 시간을 입력하면 됩니다. 아주 간단한 것 같지만 이 기능은 매우 유용하기도 하고, 또 매우 손이 많이 가는 기능이기도 합니다.
예를 들어 어떤 1시간짜리 동영상의 자막이 동영상 가장 뒷쪽보다 1분 더 늦게 나온다면 기존 유틸리티로는 조절하는 방법이 마땅치 않습니다. 이 때 Smi SyncMaster를 사용하면 간단히 해결됩니다. 기능을 자막 길이 수정으로 설정한 뒤에 설정을 줄이기로, 시간을 1분으로 설정하고 '실행'버튼을 눌러주면 자막이 다시 저장됩니다. 이 때 자막의 가장 첫 부분의 싱크가 잘 맞았는지에 따라서 확인과 다시 조정하는 작업을 반복해 주면 됩니다.
예를 들어서 자막이 1분 뒤에 처음 나오는데 이를 Sync의 기준으로 삼았다면(조절하기 전에 자막을 완전히 일치시켰다면) 전체를 1분 줄이면 기준점인 첫 자막도 위치가 1초 앞으로 당겨지게 됩니다. (1시간:1분 = 1분:1초) 따라서 이 자막은 사용할 수 없고, 엄밀히 따져서 1분 1초를 줄인 뒤에 전체를 1초 뒤로 이동시키면 비교적 정확한 자막이 됩니다. 자막 하나의 싱크를 완전히 맞추기 위해서는 많은 시행착오를 거쳐야 한다는 것을 이해하시리라 믿습니다.

자막 나누기는 나눌 위치(시간)을 지정하면 됩니다. 아주 간단하죠. 자르기 기능도 지원합니다만 사실 자르기는 사용할 필요는 별로 없을 것 같습니다. 그리고 주의하실 점은 자막을 나눈 다음에 두 번째 자막부터는 싱크를 다시 맞춰줘야 한다는 점입니다. 이는 두 번째 자막의 첫 번째 대사까지 걸리는 시간과 동영상에서의 첫 번째 대사까지 걸리는 시간[각주:2]이 달라지기 때문에 나타나는 현상입니다. 당연히 자막 위치 수정만 하면 되겠죠.

자막 합치기도 비슷합니다. 합치기를 원하는 두 자막을 불러들인 뒤에 실행 버튼을 누르면 합쳐집니다. 여기서 자막 나누기에서 싱크를 다시 조정해 줘야 했던 것처럼 자막 합치기를 할 때도 두 번째 자막의 싱크를 다시 조절해 줘야 합니다. 어떻게 해야 할까요? 결국 자막 합치기는 이 유틸을 사용하는 것보다 kmplayer를 이용해서 두 번째 자막의 Sync를 맞춘 뒤에 notepad를 이용해서 복사해서 첫 번째 자막에 붙여넣는 방법이 가장 편하다고 생각합니다. 자막합치기를 편하게 지원하게 만들고 싶으면 첫 번째와 두 번째 자막화일 사이에 시간을 입력하는 기능을 만들었으면 좋았을텐데 제작자가 그것까지는 생각하지 못했나봅니다. ^^ (자막 나누기에서도 시간 설정하는 기능이 있었으면 좋았겠죠?)


이상으로 자막 싱크 조절 유틸리티에 대한 소개를 끝냈습니다. 간단한 유틸리티이지만 정말 편리한 유틸리티라는 걸 사용해보면 아시게 될 것입니다. 간단하게 말해서 자막 싱크 맞출 때 시간노가다를 줄여주는 유틸리티이니까요. ^^
다시 한 번 김유빈 님께 감사드립니다.

ps.
이 유틸리티는 비영리로 이용/배포가 자유로운 프리웨어입니다.
자막을 불러올 때는 드래그 앤 드롭 방식을 지원합니다.
  1. 자막 제작 프로그램인 한방에에서 자막 길이 수정 기능이 추가됐는지 모르겠군요. 전 한방에를 사용해 본 적이 없습니다. 영화 자막을 만들 때도 Notepad에 그냥 타이핑해서 만들던 무식한 사람이었죠. -_-;;;; [본문으로]
  2. 첫 번째 동영상 뒤의 여유시간의 영향에 따라서 시간이 변경되게 됨 [본문으로]
포털에 펌할 수 없음!
Creative Commons License
Posted by 작은인장

트랙백 주소 :: http://may.minicactus.com/trackback/104580

댓글을 달아 주세요

  1. BlogIcon 이정일 2008/05/07 16:45  댓글주소  댓글쓰기 수정/삭제

    오! 싱크안맞는 자막 때문에 영화보는데 고생하는 분들에게 정말 희소식이겠군요.

  2. BlogIcon 학주니 2008/05/07 17:03  댓글주소  댓글쓰기 수정/삭제

    예전에 자막 싱크가 안맞을때 자주 사용했던 프로그램이네요. ^^;
    요즘은 곰플이나 KMP에서도 자막 싱크를 수정하고 저장하는 기능이 있어서.. ^^;

  3. BlogIcon 핑키 2008/05/07 19:03  댓글주소  댓글쓰기 수정/삭제

    영화볼때 너무 유용하겠네요~

    • BlogIcon 작은인장 2008/05/26 22:58  댓글주소  수정/삭제

      이것보다 조금 더 기능이 개선된 유틸이 있는데, 동영상을 직접 재생할 수 없는 경우에는 사용할 수 없더라구요.
      약간의 요령만 생기면 이것도 괜찮습니다. 간혹 대책 없는 것들이 있기는 하지만요.ㅎㅎ

그냥 심심하니 smi로 잘 알려진 sami 자막을 수정하는 방법에 대해서 살펴보도록 하겠습니다.
(자막은 smi 말고도 srt와 sub 파일이 존재하지만, 다른 종류는 전문 유틸리티를 사용하지 않으면 수정이 힘듭니다.)



sami 파일은 기본적으로 html 태그와 비슷하게 구성되어 있어서 html을 조금이라도 살펴본 사람들이라면 쉽게 적응할 수 있을 것입니다. sami 파일의 기본구조는 다음과 같습니다.

<sami>
<head>
<Title> 제목 </Title>
<STYLE TYPE="text/css"> <!-- 설정값 --> </STYLE>
</head>

<body>
자막내용
</body>
</sami>

head 부분은 자막의 기본적인 정보를 입력하는 부분입니다. head가 없어도 대부분 자막이 잘 표시될 수 있지만, 더 나은 자막을 만들기 위해서는 head를 잘 설정해야 합니다.

자막 수정 유틸리티를 사용해서 자막을 수정하면 <Title> 부분의 안에 유틸리티 정보가 들어가기도 합니다. 하지만 이 부분에는 원래의 영상물의 정보가 들어가야 합니다. 예를 들어 하나의 영화로 만든 여러개의 동영상이라고 하더라도 동영상에 따라서 자막이 화면에 나오는 시간(Sync)이 달라지므로 Title 정보에는 영화 제목과 릴 정보(다시 말해서 동영상 파일의 이름), 동영상 크기를 함께 넣는 것이 관례화 되어있습니다. 친절하게 자막을 만들어주지 않는 경우가 많지만, 혼동이 있을 경우에 때때로 메모장같은 text 편집기로 자막파일을 열어보면 정보가 들어있는 경우도 많습니다.



자막으로 출력될 글씨들에 공통으로 적용될 성질을 설정하는 내용은 STYLE 태그 속에 넣습니다. STYLE 태그 내부에 들어갈 내용은 주석 기호 <!---->로 감싸야 합니다. 이 안에는 글씨에 적용될 성질, 언어 설정, 글씨 크기 설정 등등 몇 가지 사항이 삽입될 수 있습니다. 물론 주석 기호로 감쌓인 것들이 자막의 다른 부분에 있다면 플레이어는 이러한 부분을 모두 무시할 것입니다. 그래서 하고싶은 말이 있을 경우에 주석으로 여기저기 기록해 놓는 것도 가능합니다.

P { margin-left:8pt; margin-right:8pt; margin-bottom:2pt;
    margin-top:2pt; font-size:22pt; text-align:center;
    font-family:Arial, Sans-serif; font-weight:bold; color:white;
    }

.KRCC { Name:Korean; lang:ko-KR; SAMIType:CC; }
.ENCC {Name:English; Lang:en-US; SAMIType:CC;}

#STDPrn { Name:Standard Print; }
#LargePrn { Name:Large Print; font-size:34pt; }
#MediumPrn { Name:Medium Print; font-size:24pt; }
#SmallPrn { Name:Small Print; font-size:18pt; }

P{ }로 작성되는 부분은 자막 전체에 적용될 성질을 나타내는 부분입니다. 이 설정도 여러가지로 할 수 있다고 생각되는데, 그렇게 작성한 자막을 본 적이 없습니다. (사실은 적용시켜 본 적이 있는데, 두 개 이상을 지원하는 플레이어를 찾지 못했습니다. ^^;)
제가 즐겨 사용하는 KMP의 경우는 이 부분을 완전히 무시해 버리고, 자체의 옵션을 이용해서 여러가지 글씨의 설정을 조절할 수 있습니다. 하지만 동영상을 재생시킬 때마다 매번 자막 설정을 새로 하는 것보다는 이 부분을 지원해 주는 것이 자막을 이용하기가 더 쉬울 것 같습니다. 다음번에 지원되길 기대해 봅니다.

'.'으로 시작되는 줄이 언어 설정을 하는 부분입니다.
.KRCC { Name:Korean; lang:ko-KR; SAMIType:CC; }
KRCC는 꼭 이렇게 정해져 있는 것이 아니어서 다른 문자열을 사용할 수 있지만 한글 자막의 경우 관용적으로 이렇게 사용합니다.
영어 자막은 ENCC, 일본어 자막은 JNCC 등으로 기록합니다. 괄호 안의 Name은 언어의 이름을 나타내는 말로  Korean이라고 쓴 것이 플레이어에서 언어를 고를 때 나타나는 말입니다. 한글 자막의 경우 'Korean'이나 '한국어'로 쓰면 되겠죠? 하지만 한글이 지원되지 않는 시스템에서도 이름을 정확히 표시하려면 영어로 표시하는 것이 좋겠습니다. ^^; lang 부분은 언어정보, SAMIType는 자막을 해석할 방법을 알려주는 말하는 부분인데, 특별히 작성하는 방법 없이 보기와 같이 사용하면 되겠습니다. (Lang 부분은 보통 언어명-사용국가명 형식으로 표기합니다.)
여러 개의 자막을 한 파일에 설정하여 다중언어 자막을 만들 수 있습니다. 보통 우리나라에서는 한글/영어/일본어를 설정하여 자막을 만드는 건 다들 아시죠?

# 형태로 작성된 줄들이 글자의 크기를 설정하는 부분입니다.
플레이어에 따라서 글자 크기를 조정할 수 있는 메뉴가 있는데, 이 항목으로 어떤 메뉴를 만들지를 결정하는 것입니다. Name 부분은 글씨 크기를 나타내는 말입니다. 개수가 정해진 것이 아니므로 다양하게 만들어 사용할 수도 있습니다. STDPrn은 기본을 나타내는데, 처음 동영상과 자막을 재생할 때 사용할 기본형을 지정합니다. KMP는 이 부분을 지원하지 않습니다.



이렇게 head 부분을 설정하면 본격적으로 영상 위에 보여질 자막을 만들어야 합니다.
이 부분은 아주 단순합니다.
<SYNC Start=7000><P Class=KRCC> 자막내용
SYNC 태그의 Start는 '자막내용'이 표시되기 시작하는 시간을 나타냅니다. 단위는 ms이므로 윗 보기의 7000은 동영상이 시작한 뒤 7초 뒤에 '자막내용'을 화면에 보여준다는 의미입니다. P 태그는 head 부분에서 설정한 P{ }를 적용하라는 이야기입니다. Class는 출력할 종류를 지정하는 설정입니다. KRCC로 설정되어 있으므로 한국어 자막이 출력되기를 원할 때 '자막내용'이 출력될 것입니다. 영어로 출력되어도 '자막내용'이 출력되기를 원한다면 위와 같은 줄을 하나 더 작성해야 합니다.
<SYNC Start=7000><P Class=ENCC> 자막내용
class를 바꿔주면 그 언어가 어떤 문자로 사용됐는지에 상관없이 출력됩니다. 한글 자막을 보기를 원하는 경우에도 영어로 된 부분이 있을 수 있으니 당연한 것이겠죠.

출력된 자막을 지우는 방법은 존재하지 않습니다.
그렇다면 한 번 자막을 출력한 뒤에는 다음 대사가 있을 때까지 그 자막을 계속 보고 있어야 할까요? 그래서 사람들은 편법으로 "&nbsp;"를 사용합니다. &nbsp;는 원래 html 문서에서 공백(space)을 나타내는 문자열입니다. html에서는 기본적으로 공백이나 탭문자나 줄바꿈 문자가 연속으로 여러 개 포함되어 있을 경우 모두 공백 하나로 인식하도록 되어있기 때문에 공백을 넣을 수 없는 위치나 공백을 연속적으로 여러 개 넣기를 원할 때에 사용합니다.
sami에서도 기본적으로 공백을 무시하기 때문에 공백 하나를 출력하라는 의미의 &nbsp;를 사용하여 공백 하나를 출력하여 현재 나와있는 자막을 지우는 것입니다.
<SYNC Start=7000><P Class=KRCC> 자막내용
<SYNC Start=8500><P Class=KRCC> &nbsp;
이와같이 자막을 만들면 7초에 '자막내용'이 출력된 뒤에 8.5초에 사라지도록 되는 것입니다.

하나의 자막을 여러 줄로 표시하고 싶을 때는 <BR> 태그를 사용하면 됩니다.

자막을 작성하다가 단 한 곳의 색만 녹색으로 바꾸고자 한다면 어떻게 하면 될까요?
원하는 곳을 <font color=green> </font>로 감싸주면 됩니다. 예를 들어 "자막내용"을 "자막내용"으로 바꾸려고 할 경우에는
<SYNC Start=7000><P Class=KRCC> 자<font color=green>막내</font>용
으로 만들면 막과 내 글자만 녹색으로 바뀝니다. font 태그로 설정할 수 있는 글씨 성질(글자색, 배경색, 글자크기 등등)은 모두 사용할 수 있습니다만 모든 것을 지원하는 플레이어가 없습니다. 그러니 보통은 글자색과 글자크기만 사용합니다. KMP에선 글자크기도 지원하지 않습니다.
또한 marqee 태그, <right>나 <center> 태그, <B>나 <U>나 <strike> 태그 등 html 태그에 사용되는 대부분의 태그를 사용할 수 있습니다. 플레이어에서 지원해 주는지를 떠나서.....



마지막으로 자막을 만들 때 주의할 점을 몇 가지만 알려드려야겠네요.

첫번째로 다중언어 자막을 만들 경우 한 언어로 작성되는 자막은 시간순대로 정렬되어 있어야 합니다. 늦은 시간의 자막이 앞에 나오게 되면 그 자막이 출력될 때까지 아무런 자막도 출력되지 않게 됩니다.

두번째로 자막은 정확한 직역보다는 영화의 흐름에 따라서 적당히 의역하는 것이 좋습니다. 말보다 글씨를 읽고 이해하는 속도가 느린 것이 당연하기 때문에 모든 것을 정확히 번역하려다보면 자막을 이해하기가 점점 더 힘들어질 것이기 때문입니다. 그래서 자막을 만들 때는 싱크(Sync) 조절과 과감한 생략이 중요할 경우가 많습니다.

세번째로 자막 파일의 인코딩 문제인데 이전의 Text파일로 작성해도, 새로운 규격의 UTF-9 파일로 작성해도.... 잘 작동합니다만................. 이 두 형식이 섞이게 되면 제대로 출력하지 못하는 문제가 발생합니다. 섞이는 현상은 두 개의 파일을 복사하여 하나의 파일로 만들 때 자주 나타나는 현상으로 자막파일을 텍스트 에디터로 열어서 아무리 살펴봐도 원인을 알 수 없기 때문에 정상적으로 작동하지 않는다고 생각될 때는 한 번쯤 점검해 봐야 합니다.




그러나.....
영화 자막 등은 기본적으로 저작권에 위배될 가능성이 크다는 점은 주의를 요합니다. 대사들은 기본적으로 시나리오 작가의 저작물이고, 자막 작성자가 시나리오 작가의 허락을 받지 않은 이상 저작권을 위배했다고 볼 수 있기 때문입니다.

그럼에도 불구하고 제가 이 글을 작성하는 이유는......
자막을 작성하는 일을 한 번정도 해보면 블로그 스킨을 수정하는 일을 조금은 더 쉽고 친근하게 느낄 수 있기 때문입니다. 다들 아시다시피 Tattertools 계통의 블로그를 운영하는 이상 스킨 편집을 계속 해야 하므로 html 편집에 대해서 조금은 공부해 두는 것이 도움이 될 테니까요.
그리고 자막이 꼭 기존의 동영상 뿐만 아니라 창작자가 만든 동영상에 맞춰서 작성될 수도 있기 때문입니다. 여러 가지 일에 사용될 수 있겠죠? ^^

모두 좋은 자막 만드시기 바랍니다.
포털에 펌할 수 없음!
Creative Commons License
Posted by 작은인장

트랙백 주소 :: http://may.minicactus.com/trackback/104367

댓글을 달아 주세요

  1. 2008/02/12 10:08  댓글주소  댓글쓰기 수정/삭제

    비밀댓글 입니다

  2. BlogIcon 학주니 2008/02/12 14:51  댓글주소  댓글쓰기 수정/삭제

    저는 자막 만드는 것보다는 자막 동기화 작업을 잘해보고 싶어요.. ^^

    • BlogIcon 작은인장 2008/02/13 13:53  댓글주소  수정/삭제

      동기화? 싱크 맞추는 거 말씀하시는 건가요?
      뭐 그럭저럭.... 손으로 수정하고 있습니다만....
      영 껄쩍지근하죠? ㅋㅋ

  3. 2008/02/13 02:24  댓글주소  댓글쓰기 수정/삭제

    비밀댓글 입니다

  4. BlogIcon 서석래 2008/02/16 03:54  댓글주소  댓글쓰기 수정/삭제

    한가지 궁금한것이 있는데, 영화를 보는동안 화면우측상단에 영화제목이 표시되도록 하는방법은 없나요?
    TV를보면 우측상단에 프로그램제목이 표시되는것처럼말이죠.

    • BlogIcon 작은인장 2008/02/17 12:20  댓글주소  수정/삭제

      자막에서 하는 방법은 없습니다.
      더군다나 플레이어에서 지원이 절대 안 될 것입니다.
      또 제목을 계속 띄우는 것은 영화감상에 도움이 안 될 것 같네요. 영화보는 내내 시선은 제목에 가 있을테니까 영화본 뒤 생각나는 것은 제목뿐일 것 같네요. ㅜㅜ