О ретаймировании srt с коэффициентом, а не сдвигом

TerribleFloater -> 06.12.2009, 16:38
----------------------------------------------------------------------------
Есть какая-нибудь программа, умеющая сабж?
То есть ввести нужное число, а программа просто поделит/умножит все тайминги на это число?



El Capitain -> 06.12.2009, 16:49
----------------------------------------------------------------------------
TerribleFloater писал(a):
Есть какая-нибудь программа, умеющая сабж?
То есть ввести нужное число, а программа просто поделит/умножит все тайминги на это число?

Полагаю, то нужно для конвертации PAL-NTSC???
Тогда вот - с глючком, но пользуюсь только ей, т.к. очень удобно.
http://www.divx-digest.com/software/subrip_fps_converter.html



TerribleFloater -> 06.12.2009, 17:08
----------------------------------------------------------------------------
Ага, самое оно, спасибо большое.
Не для "PAL в NTSC", а ещё круче В фильме тараторят, как пулемёты, три персонажа. Причём на сугубо английском языке. Пришлось вытащить звук, растянуть в Adobe Audition в два раза и писать субтитры в таком режиме. Когда пришла пора вернуть всё в норму, оказалось, что ретайминг все программы, с которыми привык работать, делают по сдвигу, что в данном случае приводит к ошибке
А тут в левом окошечке оставил 25, в правом написал 50, и вуаля! Всё поделено на 2. Хотя и да, с глючком в арифметике. Но тут уже проверка скрипта помогает.
Ещё раз большущее спасибо!



Кино в цифре -> 06.12.2009, 17:29
----------------------------------------------------------------------------
В Subtitles Workshop разве нельзя тоже самое сделать?
Открыть файл с одним FPS, а сохранить с другим.



TerribleFloater -> 06.12.2009, 18:17
----------------------------------------------------------------------------
А она вообще считать не умеет, похоже
Исходный тайминг:
Код
00:00:41,960 --> 00:00:44,460

Конвертер FPS:
Код
00:00:20,980 --> 00:00:22,230

Workshop:
Код
00:00:20,980 --> 00:00:22,240

Ну, или я не смог ей объяснить, что надо...



TerribleFloater -> 06.12.2009, 20:46
----------------------------------------------------------------------------
В общем, написал свой конвертер srt на языке, который умеет считать точно -- 1С:7.7 Кому надо, обращайтесь.



Ray -> 07.12.2009, 12:52
----------------------------------------------------------------------------
Так выложи где-нибудь.



TerribleFloater -> 08.12.2009, 02:40
----------------------------------------------------------------------------
Да без проблем:
http://narod.ru/disk/15759030000/%D0%9A%D0%BE%D0%BD%D0%B2%D0%B5%D1%80%D1%82%D0%BE%D1%80%20FPS.rar.html
Разархивировать и открыть в любой базе 1С:7.7
Выбрать файл srt.
Если, например, нужно ускорить субтитры вдвое, вводить коэффициент 0.5; если замедлить вдвое -- вводить коэффициент 2. Результирующий файл субтитров будет лежать рядом с исходным и начинаться на "Конв_".



Ray -> 08.12.2009, 22:53
----------------------------------------------------------------------------
TerribleFloater писал(a):
Разархивировать и открыть в любой базе 1С:7.7


у.....



TerribleFloater -> 09.12.2009, 08:40
----------------------------------------------------------------------------
Ray писал(a):
TerribleFloater писал(a):
Разархивировать и открыть в любой базе 1С:7.7
у.....
А я предупреждал
Цитата:
на языке, который умеет считать точно -- 1С:7.7
Могу выложить в спойлер код основной функции, а кто-нибудь напишет standalone exe и осчастливит небухгалтерское человечество.
Код
//**************************************************************************************************
Функция Сконвертировать(Строчка,Коэфф)
//Подразумевается время в формате ЧЧ:ММ:СС,ТТТ
Результат = "";
КонецПервогоВремени = Найти(Строчка,"-->") - 1;
НачалоВторогоВремени= Найти(Строчка,"-->") + 3;
ПервоеВремя = СокрЛП(Лев(Строчка,КонецПервогоВремени));
Часы = 0;
Минуты = 0;
Секунды = 0;
ДолиСекунд = 0;
Часы = Число(Сред(ПервоеВремя,1,2));
Минуты = Число(Сред(ПервоеВремя,4,2));
Секунды = Число(Сред(ПервоеВремя,7,2));
ПервоеВремяКруглое = Секунды+60*Минуты+3600*Часы;
МестоЗапятой = Найти(ПервоеВремя,",");//Вдруг сотые, а не тысячные?
ДолиСекунд = Прав(ПервоеВремя,СтрДлина(ПервоеВремя) - МестоЗапятой);
ПервоеВремяТочное = Число(Строка(ПервоеВремяКруглое)+"."+ДолиСекунд);
ПервоеВремяНовое = ПервоеВремяТочное*Коэфф;
ПервоеВремяЦелое = Цел(ПервоеВремяНовое);
ДолиСекундНовые = (ПервоеВремяНовое-ПервоеВремяЦелое)*1000;
СтрокаДолиСекундыНовые = Формат(ДолиСекундНовые,"Ч(0)3,0");
Секунды=ПервоеВремяЦелое%60;
ПолноеЧислоМинут=Цел(ПервоеВремяЦелое/60);
Минуты=ПолноеЧислоМинут%60;
ПолноеЧислоЧасов=Цел(ПолноеЧислоМинут/60);
Часы=ПолноеЧислоЧасов%24;
ПервоеВремяНовоеТочное = Формат(Часы,"Ч(0)2,0")+":"+Формат(Минуты,"Ч(0)2,0")+":"+Формат(Секунды,"Ч(0)2,0")+","+СтрокаДолиСекундыНовые;

ВтороеВремя = СокрЛП(Прав(Строчка,СтрДлина(Строчка) - НачалоВторогоВремени));
Часы = 0;
Минуты = 0;
Секунды = 0;
ДолиСекунд = 0;
Часы = Число(Сред(ВтороеВремя,1,2));
Минуты = Число(Сред(ВтороеВремя,4,2));
Секунды = Число(Сред(ВтороеВремя,7,2));
ВтороеВремяКруглое = Секунды+60*Минуты+3600*Часы;
МестоЗапятой = Найти(ВтороеВремя,",");//Вдруг сотые, а не тысячные?
ДолиСекунд = Прав(ВтороеВремя,СтрДлина(ВтороеВремя) - МестоЗапятой);
ВтороеВремяТочное = Число(Строка(ВтороеВремяКруглое)+"."+ДолиСекунд);
ВтороеВремяНовое = ВтороеВремяТочное*Коэфф;
ВтороеВремяЦелое = Цел(ВтороеВремяНовое);
ДолиСекундНовые = (ВтороеВремяНовое-ВтороеВремяЦелое)*1000;
СтрокаДолиСекундыНовые = Формат(ДолиСекундНовые,"Ч(0)3,0");
Секунды=ВтороеВремяЦелое%60;
ПолноеЧислоМинут=Цел(ВтороеВремяЦелое/60);
Минуты=ПолноеЧислоМинут%60;
ПолноеЧислоЧасов=Цел(ПолноеЧислоМинут/60);
Часы=ПолноеЧислоЧасов%24;
ВтороеВремяНовоеТочное = Формат(Часы,"Ч(0)2,0")+":"+Формат(Минуты,"Ч(0)2,0")+":"+Формат(Секунды,"Ч(0)2,0")+","+СтрокаДолиСекундыНовые;

Результат = ПервоеВремяНовоеТочное + " --> " + ВтороеВремяНовоеТочное;

Возврат Результат;

КонецФункции


Оно по-русски и довольно понятно.



Mantis -> 09.12.2009, 12:37
----------------------------------------------------------------------------
DSRT умеет такое. Ctrl+Shift+F4.



BOLiK -> 09.12.2009, 13:42
----------------------------------------------------------------------------
Не изобретайте велосипед. Subtitles Workshop ретаймирует субтитры как надо и без глюков.



rider42 -> 09.12.2009, 13:46
----------------------------------------------------------------------------
Mantis писал(a):
DSRT умеет такое. Ctrl+Shift+F4.
У меня постоянно выскакивает ошибка: то что нет текста, то ещё что. Видно что-то нужное не делаю, вот только что именно то?



TerribleFloater -> 09.12.2009, 18:30
----------------------------------------------------------------------------
BOLiK писал(a):
Не изобретайте велосипед. Subtitles Workshop ретаймирует субтитры как надо и без глюков.
Чуть выше показано, как она ретаймирует. Спасибо большое.



TerribleFloater -> 09.12.2009, 18:37
----------------------------------------------------------------------------
Mantis писал(a):
DSRT умеет такое. Ctrl+Shift+F4.
А проверить?

До ретаймирования:
00:00:38,250 --> 00:00:42,250

После ввода 200%:
00:00:38,250 --> 00:00:44,110

А должно было получиться:
00:01:16,500 --> 00:01:24,500

Разница видна, надеюсь?



gghice -> 28.10.2016, 11:25
----------------------------------------------------------------------------
Здравствуйте!
Такой вопрос: как автоматически убрать тысячные доли секунды в файле srt?
00:01:01:658 --> 00:01:01:65



TerribleFloater -> 24.11.2016, 19:03
----------------------------------------------------------------------------
Открыть в Aegisub, сохранить в ass, а затем экспортировать обратно в srt. Только я не помню, тысячные при этом округляются или отбрасываются.