mplayer 다국어 자막 patch

Scarecrow의 이미지

mplayer의 subreader.c소스를 잠깐 봤는데...
약간만 손보면 다국어 자막을 잘(?) 찍어줄거 같더군요.

그래서 아이디어를 구현해 보았는데 생각대로는 잘 돌아가서
개인적으로 쓰기에 불편이 없어 공개도 해 봅니다.

몰론 본인이 mplayer의 단축키관련부분등의 심오한 부분의 소스는 전혀 읽어보지 않았으므로
한영 통합자막에서 한글과 영문이 전환되게 한다거나 하는건 전혀 모르겠습니다. ^^

Index: subreader.c
===================================================================
--- subreader.c	(revision 29418)
+++ subreader.c	(working copy)
@@ -97,9 +97,11 @@
 
 static subtitle *sub_read_line_sami(stream_t* st, subtitle *current) {
     static char line[LINE_LEN+1];
-    static char *s = NULL, *slacktime_s;
+    static char *s = NULL, *slacktime_s, *class_s;
     char text[LINE_LEN+1], *p=NULL, *q;
     int state;
+    static char sub_class[10];
+    static int class_len = 0;    
 
     current->lines = current->start = current->end = 0;
     current->alignment = SUB_ALIGNMENT_BOTTOMCENTER;
@@ -140,6 +142,20 @@
 	    continue;
 
 	case 2: /* find ">" */
+	    class_s = stristr (s, "Class=");
+	    if (class_s) {
+	      class_s += 6; /* strlen ("Class=") */
+	      s = class_s;
+	      if (class_len == 0) {
+	        int i;
+	        for (i = 0; i < 9 && *class_s != '>'; i++, class_s++)
+	          sub_class[i] = *class_s;
+	        sub_class[i] = '\0';
+	        class_len = strlen (sub_class);
+	        printf ("sami subtitle class: %s\n", sub_class);   
+	      }
+	      if (strncmp (sub_class, s, class_len)) { state = 0; continue; }
+	    }
 	    if ((s = strchr (s, '>'))) { s++; state = 3; p = text; continue; }
 	    break; 

File attachments: 
첨부파일 크기
파일 mplayer.patch1.23 KB
doodoo의 이미지

revision 29418 이란것이 어느 버젼인가요?

1.0rc2 인가요?

Scarecrow의 이미지

svn버젼입니다.
하지만 저 정도는 우분투 패키지의 소스에 patch -p0 -i로 적용해도 사용가능합니다.

여기에 소스를 더 추가해서 한영 변환까지 되는 패치를 만들어서 보냈는데 깜깜 무소식입니다. ㅜ.ㅠ
http://news.gmane.org/gmane.comp.video.mplayer.devel

doodoo의 이미지

doodoo@doodoo:~/download/Mplayer-svn/mplayer$ ll mplayer mencoder
-rwxr-xr-x 1 doodoo doodoo 10354669 2009-07-28 12:45 mencoder
-rwxr-xr-x 1 doodoo doodoo 11420773 2009-07-28 12:45 mplayer
doodoo@doodoo:~/download/Mplayer-svn/mplayer$ which mplayer
/usr/bin/mplayer
doodoo@doodoo:~/download/Mplayer-svn/mplayer$ ll /usr/bin/ |grep -e mplayer -e mencoder
-rwxr-xr-x  1 root   root    8684248 2009-03-03 06:27 mencoder
-rwxr-xr-x  1 root   root    9301360 2009-03-03 06:27 mplayer
doodoo@doodoo:~/download/Mplayer-svn/mplayer$

호기심에 컴파일 해 봤습니다...
rc2 버젼이랑 실행파일 크기가 많이 차이가 나는군요..

기능이 더 많아졌다고 믿어야 하나...말아야 하나 ..... ^^;

이제 집에가서 재생해 봐야 겠네요...... 후기는 다음기회에..

Scarecrow의 이미지

본문에 있는 패치는 한영자막이 있을때 둘이 막 섞여 나오지 않게만 하는 패치이고
저걸 더 발전 시켜서 한영이 서로 변환까지 되게 패치를 만들었는데...
그걸 우분투에 포함되어 있는 mplayer에 (1.0rc2)에 수동으로(-_-;) 적용하여
바이너리 패키지로 컴파일해 보았습니다.

한영전환은 단축키 j를 이용하면 가능합니다.

yuni6705의 이미지

혹시 MPlayer 다국어 자막 지원은 패키지만 공개하시나요? 호..혹시 소스 레벨 공개는 하지 않으시나요??^^;;

doodoo의 이미지

서브버젼으로 가져와 컴파일 한 버젼에는 영어가 아예 안 나오는 군요....

같이 나올줄 알았는데....ㅠㅠ (그리고 x86_64 버젼입니다.)

Scarecrow의 이미지

글이 긱포럼에 올라간 김에 패키지를 만들어 추가한 글에서도 밝혔듯이...

본문의 패치는 한영자막이라고 할때
기존에는 서로 막 혼동스럽게 섞여 나오는걸
하나만 잘 나오게 자막 파싱부분만 살짝 손 본 것입니다.
그러니 영어자막이 한글자막을 보기도 전에 튀어나와서
이것도 저것도 안되는 상황을 피하는 것이죠 ^^

패키지를 만들때 적용한건 한/영 전환까지 가능하게 만든 패치를 적용한 것입니다.
(반면 본문에 올린 패치는 한가지 이외 디른 자막은 싹 무시하는 방법입니다. :)

동시에 나와야 한다는건 개인적으로 써본적이 없고 필요를 느끼지 못해 생각해 보지 않았습니다만
자막 파싱 부분만 손봐서 될 문제는 아닌듯합니다.

doodoo의 이미지

네...그러니깐....패키지로 만든건...제가 64 비트용을 쓰니깐...
제가 사용을 못하겠어서

다시한번 페치파일을 올려 주시면 안되겠는가 하는건데요...^^;

Scarecrow의 이미지

위 댓글중에 링크걸어둔곳에 가면 패키지에 적용된 패치를 받을 수 있습니다.

http://cache.gmane.org//gmane/comp/video/mplayer/devel/53253-001.bin

sephiron의 이미지

혹시 이 패치 공식 소스에 반영 되었나요? 윈도에서 smplayer 쓰는데 아직 같은 문제가 있네요. 컴파일을 새로 할 수도 없고...