Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2015, 03:46   #1
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию Программа тайминга субтитров

Программа для сдвига субтитров в файле "1.ass". Программа называется "Shift time 4" или попросту "T1".
Правила такие. Вы делаете файл "1.ass" в кодировке "UTF-8". В этом файле первым числом пишете количество секунд, на которые нужно сдвинуть тайминг субтитров. (Не забудьте нажать <Enter>!) Число может быть отрицательным или с плавающей точкой.
Затем запускаете программу. На выходе появляется файл "2.ass" со сдвинутым таймингом. Появившееся окно надо закрыть – оно ни для чего.
https://yadi.sk/d/LarJd2hajjyrJ
Программу я тестировал мало, используйте на свой страх и риск.
Предыдущие версии программы могли сдвигать время только на целое число секунд туда или обратно и только в кодировке "ANSI"; они были типа "консольное приложение". Это улучшенная версия с использованием "MFC", которое, впрочем, тут не нужно.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...

Последний раз редактировалось jura_k; 15.10.2015 в 03:49. Причина: (Не забудьте нажать <Enter>!)
jura_k вне форума Ответить с цитированием
Старый 15.10.2015, 20:03   #2
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Код:
//   Shift time 4

CT1View::CT1View ()
{
	int aa, ab, ac, ad;   //   число часов, минут, секунд и сотых долей секунды
	FILE *ba, *bb;   //   входной файл "1.ass"; выходной файл "2.ass"
	float ca, cb;   //   смещение тайминга в секундах и тайминг в исходном файле
	char da;   //   временная переменная (для первых байтов исходного файла)
	char ea [10];   //   циклический буфер для распознавания тайминга

	ba = fopen ("1.ass", "r");
	bb = fopen ("2.ass", "w");
	if (ba == NULL)
	{
		fcloseall ();
		return;
	}

	for (aa = 0; aa < 3; aa++)
	{
		fscanf (ba, "%c", &da);
		fprintf (bb, "%c", da);
	}

	fscanf (ba, "%f", &ca);
	for (aa = 0; aa < 10; aa++)  fscanf (ba, "%c", &ea [aa]);
	while (1)
	{
		if (ea [1] == ':'  &&  ea [4] == ':'  &&  ea [7] == '.')
		{
			cb = (float) ((ea [0] - '0') * 3600 +
				(ea [2] - '0') * 600 + (ea [3] - '0') * 60 +
				(ea [5] - '0') * 10 + (ea [6] - '0') +
				(ea [8] - '0') * .1 + (ea [9] - '0') * .01);
			cb += ca;
			if (cb < 0)  cb = 0;
			
			aa = (int) cb / 3600;
			cb -= aa * 3600;
			ab = (int) cb / 60;
			cb -= ab * 60;
			ac = (int) cb;
			cb -= ac;
			cb += (float) .001;
			ad = (int) (cb * 100);

			fprintf (bb, "%i:%02i:%02i.%02i", aa, ab, ac, ad);
			for (aa = 0; aa < 10; aa++)  fscanf (ba, "%c", &ea [aa]);
			continue;
		}

		fprintf (bb, "%c", ea [0]);
		for (aa = 0; aa < 9; aa++)  ea [aa] = ea [aa + 1];
		aa = fscanf (ba, "%c", &ea [9]);
		if (aa < 0)
		{
			for (aa = 0; aa < 9; aa++)  fprintf (bb, "%c", ea [aa]);
			break;
		}
	}

	fcloseall ();
}
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна программа QControl программа для внутрилабораторного контроля качества Версия 5.5. миньен Софт 7 02.03.2014 00:28
Программа на Pascal в Lazarus и программа для одномерного массива целых чисел Yegorka Lazarus, Free Pascal, CodeTyphon 13 20.12.2012 18:02
Программа с применением записей и программа с применение множеств smert99 Помощь студентам 0 16.06.2011 23:14
Программа открыается если есть другая программа. bookkc Паскаль, Turbo Pascal, PascalABC.NET 12 14.10.2009 20:09