Список форумов Kage Project Kage Project
 
  РегистрацияРегистрация  ВходВход
  Архив субтитровАрхив субтитров  ПоискПоиск  ЧаВоЧаВо  ПользователиПользователи
 Войти и проверить личные сообщенияВойти и проверить личные сообщения

mplayer
На страницу Пред.  1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов Kage Project -> Техническая поддержка
Предыдущая тема :: Следующая тема 
Автор Сообщение
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.
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Kage Project -> Техническая поддержка Часовой пояс: GMT + 3
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3
‹xЪmђНЉВ0…Чж).YМОF™Б…¦YёqгВБ’66…Ъ†4X*>ќO2ГЂЉ?O ·Љ+»№зтО…{8уNњReZВгt2K“<¤‘ОЅvTрТКўL–%ВВЦ.MЊG®0БYcЈ`Rґе[’dVTЪйT CаЊУ‹ђпнђ±ЄЄk¬RAT,/]ў}H°нг1gRАGCG°ЃнепxГгЅ ?шъј"™O»яїзЛйzЪЎС ›¬S‹ыvИлѓ§t:XJЊъЦSE\7Дшe†аЅTE
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы, прикрепленные к сообщениям