IT/Tips

ubuntu 자막 싱크 조정 (smi)

싸후이 2014. 3. 6. 16:30

ubuntu subtitle sync smi


자막 싱크 맞추느라 윈도에서 고생좀 했는데....

그래서 ubuntu 자막 싱크 조정 프로그램을 찾아보다가...smi 포맷 자막파일을 지원하는 프로그램을 못찾음...

아님 없든가???? ㅜㅜ 있으면 알려주세요..



걍 스크립트로 맹그렀다..

단순히 전체 시간에 대해  + , - 해서 새로운 파일로 저장


대부분 smi 파일이 dos 포맷 .....음....

ubuntu 에서 작업해서 window htpc 로 봐서리...dos 포맷으로 변환..


smi 파일에서 시간 기준이 1/1000 초....  그러니끼리..

<SYNC Start=7177> 요건 7.177 초....





스크립트


#!/bin/bash

#

# syncsmi.sh

#


if ! which unix2dos >/dev/null 2>&1; then

echo

echo "warning : No Such file <unix2dos>"

echo "          output file is the unix format file"

echo "          ubuntu : apt-get install dos2unix"

echo "          centos : yum install unix2dos"

echo

fi


if [ 3 -gt $# ]; then

echo "Usage : $0 <filename.smi> <+|-> <sync time>"

echo "        <sync time> : 1 second is 1000"

echo "ex) $0 test.smi + 1000 : 1 second delay"     

exit 0

fi


file=$1

op=$2

gap=$3

tmp_file=$file.new

[ -f $tmp_file ] && rm -f $tmp_file


IFS=

for subline in `cat $file`

do

if [[ ! "$subline" =~ (^.*[sS][yY][nN][cC] [sS][tT][aA][rR][tT]=)([0-9]+)(.*) ]]; then

echo "$subline" >> ./$tmp_file

continue

fi

new_time=$(( ${BASH_REMATCH[2]} ${op} ${gap} ))

new_subline="${BASH_REMATCH[1]}${new_time}${BASH_REMATCH[3]}"

echo "$new_subline" >> ./$tmp_file


done


unix2dos -q $tmp_file

echo "sync ok !!! "

echo "new file : $tmp_file"


사용법

./syncsmi.sh  <자막파일이름> <+ | -> <동기화시간>

ex) 

- 1초 지연

./syncsmi.sh   영화.smi    +   1000


- 0.5초 빠르게

./syncsmi.sh   영화.smi   -    500