개인적으로 쓰려고 만든 smi 자막 싱크 프로그램

자막제작자포럼

개인적으로 쓰려고 만든 smi 자막 싱크 프로그램

2 thilbong 5 7337 2
자막한방에를 쓰는데 영상이 안 나오는 게 많아 비율 조정하여 싱크 맞추는 게 불편하여 직접 만들어 사용하고 있는 프로그램입니다.
제가 구닥다리라 GUI는 안 되고, 명령창 띄워서 실행하시는 방식입니다.
C:\Windows 등의 폴더에 넣어놓으면 아무 데서나 실행됩니다.
(lcc-win64로 컴파일하니 avast가 자꾸 잘못 진단을 하여 lcc-win32로 컴파일하여 실행파일을 교체했습니다. 2014-01-27)
(1:30:20 과 같이 시간까지 들어가는 시간을 지정하였을 때 초 단위가 잘못 입력되는 버그가 있어 수정했습니다. 2016-07-21)
(옵셋 시간 지정할 때 n 옵션이 안되게 되어 있어서 수정했습니다. 2017-07-12)
(n옵션이 1:30:20과 같은 포맷에서는 작동하지 않는 문제가 있어 수정했습니다. 2019-11-19)

사용방법은 다음과 같습니다.

일괄적으로 이동할 때 : smisync  filename.smi  offset  > new_filename.smi
비율을 조절할 때: smisync  filename.smi  time1  offset1  time2  offset2  > new_filename.smi

파일이름은 명령창에서 다 타이핑할 필요가 없습니다. 앞 몇 글자만 타이핑하고 나서, 원하는 자막파일 이름이 나올 때까지 Tab 키를 누르시면 됩니다.
time1, time2, offset, offset1, offset2 등은 시간을 가리키는 것으로 다음과 같은 형식을 사용할 수 있습니다.

1. 그냥 숫자만 쓰면 밀리초 단위입니다. time1이 3000이면 3000 밀리초의 타임스탬프를 말합니다. offset이 -15000 이면 15초 앞으로 당긴다는 말입니다.
2. 30:5 와 같은 형태로 쓰면 분 초 단위입니다. offset이 -1:15.2 이면 1분 15.2초 앞으로 당긴다는 말입니다. 85:10은 85분 10초를 말합니다. 0:15는 15초를 말합니다.
3. 1:30:5 와 같은 형태로 쓰면 시간 분 초 단위입니다.
4. offset1과 offset2의 앞에는 n을 붙여 쓸 수 있습니다. 이 경우 상대적인 옵셋이 아니라 절대적인 타임스탬프 역할을 한다는 뜻입니다.
   예를 들어 smisync filename.smi 5000 150 300000 n320000 > new_filename.smi 와 같이 실행하면, 원래 5000이었던 타임스탬프 값이 새로운 자막에서는 옵셋 150이 더해져 5150이 되며, 원래 300000 이었던 타임스탬프 값은 새로운 자막에서는 320000이 된다는 뜻입니다.

제가 자주 사용하는 실례를 들어보면 다음과 같습니다.

1. CD1.smi와 CD2.smi로 나누어진 자막을 하나로 합치고자 합니다.

CD1.avi의 동영상의 길이는 45:15 였다고 합시다. 그러면 다음과 같이 실행하여 CD2.smi의 싱크를 조절합니다.

smisync  CD2.smi  45:15  > new_CD2.smi

새로 생성된 자막을 새로운 하나짜리 동영상에 적용한 다음, 팟플레이어로 세밀하게 싱크를 조절하고 싱크를 저장합니다. 그리고 CD1.smi와 new_CD2.smi 파일의 내용을 편집기에서 그냥 합쳐 저장합니다.

2. 점차 비율이 달라지는 자막 싱크를 맞추고자 합니다.

먼저 팟플레이어로 동영상 처음 부분의 특정 대사의 싱크를 맞춘 다음에 싱크를 저장합니다. 예를 들어 타임스탬프 50000의 대사를 기준으로 싱크를 맞췄다고 합시다. 그런 다음 그 뒷부분의 대사 하나를 골라 팟플레이어로 싱크를 맞춥니다(싱크 저장은 하지 않습니다). 이 두 번째 대사의 원래 타임스탬프가 300000 이고 팟플레이어의 싱크 이동량(싱크를 옮길 때마다 팟플레이어 상단에 표시됨)이 -15.5초였다면 다음과 같이 실행합니다.

smisync  filename.smi  50000  0  300000  -15500  > new_filename.smi

50000은 옵셋이 0이니까 움직이지 않는다는 뜻이고 300000은 15500을 빼서 284500으로 만든다는 뜻입니다. 물론 그 구간 중간의 대사나 그 구간에 속하지 않는 앞 뒤의 대사도 올바르게 싱크가 맞추어집니다.
뒷부분에서 고른 대사는 앞부분의 기준 대사와 멀리 떨어져있을 수록 전체적으로 정확한 싱크가 맞을 것입니다. 너무 가까운 대사를 선택하면 비율이 정밀하게 계산되지 못하여 뒷부분으로 가면 조금씩 또 차이가 생길 겁니다. 이 경우엔 새로운 차이를 가지고 다시 한 번 실행해주시면 됩니다.

3. 기존에 싱크가 맞는 영문 자막이 있어 거기에 한글 자막 싱크를 맞추고자 합니다.

동영상 앞부분과 뒷부분에서 역시 하나씩의 대사를 골라냅니다. 앞쪽에서 고른 대사의 한글 자막 싱크가 50000 이었고, 영문 자막 싱크는 50400 이었습니다. 뒷쪽에서 고른 대사의 한글 자막 싱크는 300000 이었고 영문 자막 싱크는 350000 이었습니다. 그러면 다음과 같이 실행합니다.

smisync  filename.smi  50000  n50400  300000  n350000  > new_filename.smi

n자가 사용되었음에 주목하세요.

혹시 유용하게 쓰실 수 있을 분도 계실까봐 올려드립니다.

[이 게시물은 再會님에 의해 2015-10-06 16:33:22 자막제작가이드에서 이동 됨]

Facebook Twitter GooglePlus KakaoStory NaverBand 신고

Author

Lv.2 2 thilbong  실버(2등급)
1,993 (76.3%)

등록된 서명이 없습니다.

5 Comments
11 Radioheadism  
와! 감사합니다! :)
1 제르망  
의미를 알듯한 기분이지만, 아직은 초보라서 모르겠습니다만...잘 읽었습니다.

도움되실 분들이 많을 것 같군요^^
1 송경수  
잘썼습니다. 감사합니다.
2 thilbong  
40:20.2 등과 같이 분과 초만을 지정할 때에는 괜찮은데, 1:40:20.2 등과 같이 시간까지 지정할 때에는 초 단위가 잘못 입력되는 버그가 있어서 수정하여 다시 올렸습니다.
2 thilbong  
옵셋시간을 n1:30:20.4 등과 같이 시분초 형식에 지정했을 때 안되는 버그가 있어서 수정했습니다.