| 
Предыдущая тема
::
Следующая тема 
 | 
	 
	
	
	
		| Автор | 
		Сообщение | 
	 
	
		 furyx Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Чт Ноя 19, 2009 16:50 pm    | 
				       | 
			 
			
				
  | 
			 
			
				RussianNeuroMancer
 
git://greg.geekmind.org/libass.git
 
 
ну и сами сорцы mplayer с которых он собирает (а так понимаю тут все патчи включены)
 
http://repo.or.cz/w/mplayer.git
 
 
правда win64 пока с места не двинулся... 
 
 	  | Цитата: | 	 		  
 
FFmpeg:
 
    * Updated ASM code shared with x264 and other NASM code to support Win64. Maybe I should try making a 64bit build again… | 	 
  | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Shitsu Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 4:35 am    | 
				       | 
			 
			
				
  | 
			 
			
				| а как бы сделать, чтоб субтитры из ./subtitles подгружались, как в вобсабе? | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 furyx Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 5:03 am    | 
				       | 
			 
			
				
  | 
			 
			
				Shitsu
 
насколько я помню, уже никак, в старых билдах было, возможно патчем каким можно. убрали с целью безопастности на сколько я помню. мплеер ведь не только с локального диска читать умеет ;)
 
 
ну а если честно, то не совсем понятно зачем...
 
- размер сабов довольно таки маленький - можно и скорировать если не хочется ссылки делать. 
 
- если уж ложить сабы в отдельный каталог, то я лично как правило у себя еще один уровень вложенности с разными авторами делаю.
 
- в конце концов сделайте батник (или в ассоциации пропишите)
 
 	  | Код: | 	 		  | "%ProgramFiles%\mplayer\mplayer.exe" "%~f1" -sub "%~d1%~p1subtitles\%~n1.ass" | 	  
 
 
ну и т.д, при желании можно много вариантов придумать. | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Shitsu Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 6:01 am    | 
				       | 
			 
			
				
  | 
			 
			
				furyx
 
Мне нравится, когда субтитры лежат в своей папке. так они не мешаются под мышкой при просмотре, и содержимое папки выглядит красивее.
 
 И с разными авторами удобней - просто переименовываешь нужную папку в subtitles и смотришь. Ничего копировать, выделять не надо.
 
 
 	  | Цитата: | 	 		  | убрали с целью безопастности | 	  
 
а как же они убрали? там же надо всего лишь где-нибудь путь подправить вроде %~p1\%~n1.ass на %~p1subtitles\%~n1.ass, только знать бы где | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Ё
  Переводы
 
  
  Зарегистрирован: 28.04.2004 Сообщения: 84 Откуда: Санкт-Петербург, Россия
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 11:13 am    | 
				       | 
			 
			
				
  | 
			 
			
				Shitsu
 
Представляю папку с тысячами файлов :) Причём все названы как видео, т.е. как получится. Если запастись терпением и удалять все субтитры при удалении видео, ну, может быть это и оправдано, но всё равно, мне кажется хранение их в отдельной папке делом странным. Уж лучше тогда миксить в матроску, времени столько же уйдёт, а порядка больше.
 
 
Подправить это можно запросто, наверняка этот код живёт прямо в mplayer.c и найти его не трудно. Потом сделать патч и пользоваться им при каждом обновлении.
 
 
По поводу безопасности - представьте себе чайника, который запускается от root. Таких миллионы. И потому и убрали :) | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Shitsu Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 15:28 pm    | 
				       | 
			 
			
				
  | 
			 
			
				Ё
 
Вы, наверное, не совсем правильно меня поняли. Субтитры лежат во вложенной папке для каждой анимы отдельно:
 
 	  | Код: | 	 		  +Аниме
 
|+subtitles
 
||-эпизод 01.srt
 
||-эпизод 02.srt
 
||-эпизод 03.srt
 
|-эпизод 01.avi
 
|-эпизод 02.avi
 
|-эпизод 03.avi
 
 | 	  
 
никакой разницы в идеологии хранения, кроме того, что выглядит это красивше (на мой взгляд). Если засунуть в матрёшку, то их нельзя будет править на ходу.
 
 
и кстати
 
это матроска
 
а это матрёшка
 
это тоже матрёшка | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Ё
  Переводы
 
  
  Зарегистрирован: 28.04.2004 Сообщения: 84 Откуда: Санкт-Петербург, Россия
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 15:35 pm    | 
				       | 
			 
			
				
  | 
			 
			
				Если всегда называется каталог subtitles, можно вообще хардкоднуть это в мплеер. Жёстко, но если все субтитры лежат именно так, то действенно.
 
 
Matroska, инглишкопипаста :) | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Shitsu Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 17:26 pm    | 
				       | 
			 
			
				
  | 
			 
			
				процедуру поиска субтитров нашел в subreader.c. вот она:
 
 
 	  | Код: | 	 		  char** sub_filenames(const char* path, char *fname)
 
{
 
    char *f_dir, *f_fname, *f_fname_noext, *f_fname_trim, *tmp, *tmp_sub_id;
 
    char *tmp_fname_noext, *tmp_fname_trim, *tmp_fname_ext, *tmpresult;
 
 
    int len, pos, found, i, j;
 
    char * sub_exts[] = {  "utf", "utf8", "utf-8", "sub", "srt", "smi", "rt", "txt", "ssa", "aqt", "jss", "js", "ass", NULL};
 
    subfn *result;
 
    char **result2;
 
 
    int subcnt;
 
 
    FILE *f;
 
 
    DIR *d;
 
    struct dirent *de;
 
 
    len = (strlen(fname) > 256 ? strlen(fname) : 256)
 
   +(strlen(path) > 256 ? strlen(path) : 256)+2;
 
 
    f_dir = malloc(len);
 
    f_fname = malloc(len);
 
    f_fname_noext = malloc(len);
 
    f_fname_trim = malloc(len);
 
 
    tmp_fname_noext = malloc(len);
 
    tmp_fname_trim = malloc(len);
 
    tmp_fname_ext = malloc(len);
 
 
    tmpresult = malloc(len);
 
 
    result = malloc(sizeof(subfn)*MAX_SUBTITLE_FILES);
 
    memset(result, 0, sizeof(subfn)*MAX_SUBTITLE_FILES);
 
 
    subcnt = 0;
 
 
    tmp = strrchr(fname,'/');
 
#if defined(__MINGW32__) || defined(__CYGWIN__) || defined(__OS2__)
 
    if(!tmp)tmp = strrchr(fname,'\\');
 
    if(!tmp)tmp = strrchr(fname,':');
 
#endif
 
 
    // extract filename & dirname from fname
 
    if (tmp) {
 
   strcpy(f_fname, tmp+1);
 
   pos = tmp - fname;
 
   strncpy(f_dir, fname, pos+1);
 
   f_dir[pos+1] = 0;
 
    } else {
 
   strcpy(f_fname, fname);
 
   strcpy(f_dir, "./");
 
    }
 
 
    strcpy_strip_ext(f_fname_noext, f_fname);
 
    strcpy_trim(f_fname_trim, f_fname_noext);
 
 
    tmp_sub_id = NULL;
 
    if (dvdsub_lang && !whiteonly(dvdsub_lang)) {
 
   tmp_sub_id = malloc(strlen(dvdsub_lang)+1);
 
   strcpy_trim(tmp_sub_id, dvdsub_lang);
 
    }
 
 
    // 0 = nothing
 
    // 1 = any subtitle file
 
    // 2 = any sub file containing movie name
 
    // 3 = sub file containing movie name and the lang extension
 
    for (j = 0; j <= 1; j++) {
 
   d = opendir(j == 0 ? f_dir : path);
 
   if (d) {
 
       while ((de = readdir(d))) {
 
      // retrieve various parts of the filename
 
      strcpy_strip_ext(tmp_fname_noext, de->d_name);
 
      strcpy_get_ext(tmp_fname_ext, de->d_name);
 
      strcpy_trim(tmp_fname_trim, tmp_fname_noext);
 
 
      // does it end with a subtitle extension?
 
      found = 0;
 
#ifdef CONFIG_ICONV
 
#ifdef CONFIG_ENCA
 
      for (i = ((sub_cp && strncasecmp(sub_cp, "enca", 4) != 0) ? 3 : 0); sub_exts[i]; i++) {
 
#else
 
      for (i = (sub_cp ? 3 : 0); sub_exts[i]; i++) {
 
#endif
 
#else
 
      for (i = 0; sub_exts[i]; i++) {
 
#endif
 
          if (strcasecmp(sub_exts[i], tmp_fname_ext) == 0) {
 
         found = 1;
 
         break;
 
          }
 
      }
 
 
      // we have a (likely) subtitle file
 
      if (found) {
 
          int prio = 0;
 
          if (!prio && tmp_sub_id)
 
          {
 
         sprintf(tmpresult, "%s %s", f_fname_trim, tmp_sub_id);
 
         mp_msg(MSGT_SUBREADER,MSGL_INFO,"dvdsublang...%s\n", tmpresult);
 
         if (strcmp(tmp_fname_trim, tmpresult) == 0 && sub_match_fuzziness >= 1) {
 
             // matches the movie name + lang extension
 
             prio = 5;
 
         }
 
          }
 
          if (!prio && strcmp(tmp_fname_trim, f_fname_trim) == 0) {
 
         // matches the movie name
 
         prio = 4;
 
          }
 
          if (!prio && (tmp = strstr(tmp_fname_trim, f_fname_trim)) && (sub_match_fuzziness >= 1)) {
 
         // contains the movie name
 
         tmp += strlen(f_fname_trim);
 
         if (tmp_sub_id && strstr(tmp, tmp_sub_id)) {
 
             // with sub_id specified prefer localized subtitles
 
             prio = 3;
 
         } else if ((tmp_sub_id == NULL) && whiteonly(tmp)) {
 
             // without sub_id prefer "plain" name
 
             prio = 3;
 
         } else {
 
             // with no localized subs found, try any else instead
 
             prio = 2;
 
         }
 
          }
 
          if (!prio) {
 
         // doesn't contain the movie name
 
         // don't try in the mplayer subtitle directory
 
         if ((j == 0) && (sub_match_fuzziness >= 2)) {
 
             prio = 1;
 
         }
 
          }
 
 
          if (prio) {
 
         prio += prio;
 
#ifdef CONFIG_ICONV
 
         if (i<3){ // prefer UTF-8 coded
 
             prio++;
 
         }
 
#endif
 
         sprintf(tmpresult, "%s%s", j == 0 ? f_dir : path, de->d_name);
 
//         fprintf(stderr, "%s priority %d\n", tmpresult, prio);
 
         if ((f = fopen(tmpresult, "rt"))) {
 
             fclose(f);
 
             result[subcnt].priority = prio;
 
             result[subcnt].fname = strdup(tmpresult);
 
             subcnt++;
 
         }
 
          }
 
 
      }
 
      if (subcnt >= MAX_SUBTITLE_FILES) break;
 
       }
 
       closedir(d);
 
   }
 
 
    }
 
 
    if (tmp_sub_id) free(tmp_sub_id);
 
 
    free(f_dir);
 
    free(f_fname);
 
    free(f_fname_noext);
 
    free(f_fname_trim);
 
 
    free(tmp_fname_noext);
 
    free(tmp_fname_trim);
 
    free(tmp_fname_ext);
 
 
    free(tmpresult);
 
 
    qsort(result, subcnt, sizeof(subfn), compare_sub_priority);
 
 
    result2 = malloc(sizeof(char*)*(subcnt+1));
 
    memset(result2, 0, sizeof(char*)*(subcnt+1));
 
 
    for (i = 0; i < subcnt; i++) {
 
   result2[i] = result[i].fname;
 
    }
 
    result2[subcnt] = NULL;
 
 
    free(result);
 
 
    return result2;
 
} | 	  
 
 
f_dir -папка с файлом
 
path - путь к субтитрам мплеера (/home/username/.mplayer/sub/ по умолчанию)
 
 
подправить то я подправил, но не работает почемут
 
 
правка следующая:
 
 	  | Код: | 	 		  strcpy(f_subtitles,f_dir);
 
   strcat(f_subtitles,"subtitles/");
 
 
    // 0 = nothing
 
    // 1 = any subtitle file
 
    // 2 = any sub file containing movie name
 
    // 3 = sub file containing movie name and the lang extension
 
    for (j = 0; j <= 2; j++) {
 
   if (j==0) d = opendir(f_dir);
 
   if (j==1) d = opendir(path);
 
   if (j==2) d = opendir(f_subtitles);
 
   if (d) { | 	  
 
 
путь получается правильный
 
 	  | Код: | 	 		  SUBtiiles: /media/hard/HARD/Видео/Аниме/!RAW/[Zero-Raws] Himawari! - 01-13+clean OP&ED [704x396 DivX6.11 DVD]/subtitles/
 
 Fdir: /media/hard/HARD/Видео/Аниме/!RAW/[Zero-Raws] Himawari! - 01-13+clean OP&ED [704x396 DivX6.11 DVD]/
 
 path: /home/cepera/.mplayer/sub/ | 	  
 
из первых двух открывает, из моей - нет
 
возможно где-то как раз есть проверка "с целью безопасности" | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Ё
  Переводы
 
  
  Зарегистрирован: 28.04.2004 Сообщения: 84 Откуда: Санкт-Петербург, Россия
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 17:48 pm    | 
				       | 
			 
			
				
  | 
			 
			
				Не понял, как именно не открывает? Если открывает из ./subtitles/, не этого ли хотелось?
 
Попробовать можно ещё поотлаживаться printf-ами, я не так хорошо умею пользоваться gdb в консоли, так что другого не посоветую. | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Shitsu Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 18:03 pm    | 
				       | 
			 
			
				
  | 
			 
			
				я неправильно скопипастил
 
Fdir: /media/hard/HARD/Видео/Аниме/!RAW/[Zero-Raws] Himawari! - 01-13+clean OP&ED [704x396 DivX6.11 DVD]/ 
 
 path: /home/cepera/.mplayer/sub/
 
открывает, а
 
SUBtiiles: /media/hard/HARD/Видео/Аниме/!RAW/[Zero-Raws] Himawari! - 01-13+clean OP&ED [704x396 DivX6.11 DVD]/subtitles/
 
нет. просто в цикле у меня эта строчка третья
 
 
для отладки там есть mp_msg() | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Ё
  Переводы
 
  
  Зарегистрирован: 28.04.2004 Сообщения: 84 Откуда: Санкт-Петербург, Россия
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 18:10 pm    | 
				       | 
			 
			
				
  | 
			 
			
				| А если покрутить потоки, понажимать j, там не появляется ничего? | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 furyx Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 18:39 pm    | 
				       | 
			 
			
				
  | 
			 
			
				Shitsu
 
всетаки не понимаю, чем не устраивает вариант прописать в ассоциации команду брать сабы с подкаталога?
 
 
ЗЫ приведите исправленную ф-цию полностью. | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Ё
  Переводы
 
  
  Зарегистрирован: 28.04.2004 Сообщения: 84 Откуда: Санкт-Петербург, Россия
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 18:45 pm    | 
				       | 
			 
			
				
  | 
			 
			
				| От себя добавлю - функцию через pastebin.com . Смотрится кодом на форуме просто нечитаемо. | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Shitsu Гость
 
 
 
 
 
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 19:21 pm    | 
				       | 
			 
			
				
  | 
			 
			
				исправлено http://pastebin.com/m9e36131
 
 
вызывается так
 
 
http://pastebin.com/m5d7f019d
 
 
get_path( "sub/" ); -возвращает путь к /home/cepera/.mplayer/sub/
 
add_subtitles (tmp{i], fps, 1); -добавляет дорожку субтитров, выдает сообщение вроде SUB: Added subtitle file (1): /home/cepera/.mplayer/sub/[Zero-Raws] Himawari! - 01 [704x396 DivX6.11 DVD].ass
  Последний раз редактировалось: Вс Дек 20, 2009 19:38 pm | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 Ё
  Переводы
 
  
  Зарегистрирован: 28.04.2004 Сообщения: 84 Откуда: Санкт-Петербург, Россия
  | 
		
			
				 Добавлено: Вс Дек 20, 2009 19:25 pm    | 
				       | 
			 
			
				
  | 
			 
			
				| Должно работать, вроде бы. Только я сомневаюсь, что в Си можно так просто прибавить строку, всегда делалось это через strcat. | 
			 
			
				 | 
			 
			
				 | 
			 
		  | 
	 
	
		| К началу | 
		 | 
	 
	
		 | 
	 
 
  
	
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы, прикрепленные к сообщениям
  | 
   
 
  
Powered by :  phpBB © | Время : 0.1438с | SQL-запросов : 11 | Gzip : Вкл.
  
		 |