Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление таймингов субтитров в файлах SRT: как скорректировать синхронизацию с аудиодорожкой

Delphi , Программа и Интерфейс , Заголовок формы

Исправление таймингов субтитров в файлах SRT

Иногда при просмотре видео с субтитрами возникает проблема несинхронности: субтитры отображаются раньше или позже, чем это необходимо. Это может быть связано с ошибками в таймкодах субтитров, которые обычно выглядят так: 00:00:52,656 --> 00:00:56,326. Для коррекции субтитров необходимо изменить время начала и окончания каждого субтитра. Например, если требуется сдвинуть все субтитры на 2 секунды вперёд, время 00:00:52,656 --> 00:00:56,326 должно быть изменено на 00:00:54,656 --> 00:00:58,326.

Пример структуры файла SRT:

1
00:00:52,656 --> 00:00:56,326
Kanalska Zona: Panama

2
00:00:56,335 --> 00:00:59,755
Francuzi su pokušali da izgrade
kanal pre Amerikanaca.

Для коррекции таймингов субтитров можно использовать следующий подход на языке Object Pascal, который применим в среде разработки Delphi:

procedure ShiftSubtitleTimes(Lines: TStrings; Diff: TTime);
var
  FS: TFormatSettings;
  I: Integer;
  T1: TDateTime;
  T2: TDateTime;
begin
  // Установка разделителя времени
  FS.TimeSeparator := ':';
  // Обработка каждой строки отдельно
  for I := 0 to Lines.Count - 1 do
  begin
    // Конвертация временных строк в значения времени
    if not TryStrToTime(Copy(Lines[I], 1, 8), T1, FS) then
      // Пропуск строки в случае неправильного формата
      Continue;
    T1 := T1 + StrToInt(Copy(Lines[I], 10, 3)) / MSecsPerDay;
    T2 := StrToTime(Copy(Lines[I], 18, 8), FS);
    T2 := T2 + StrToInt(Copy(Lines[I], 27, 3)) / MSecsPerDay;
    // Добавление сдвига
    T1 := T1 + Diff;
    T2 := T2 + Diff;
    // Перезапись строки
    Lines[I] := FormatDateTime('hh:nn:ss,zzz --> ', T1, FS) +
      FormatDateTime('hh:nn:ss,zzz', T2, FS);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  List: TStringList;
begin
  List := TStringList.Create;
  try
    List.LoadFromFile('Filename.srt');
    // Сдвиг на 3,5 секунды назад
    ShiftSubtitleTimes(List, -3.5 / SecsPerDay);  
    // Сохранение изменений в файл
    List.SaveToFile('Filename.srt');
  finally
    List.Free;
  end;
end;

Также существует альтернативный метод коррекции таймингов субтитров: использование специализированных программ для редактирования субтитров, таких как SubtitleEdit или Subtitle Workshop. Эти программы позволяют легко настроить время отображения всех субтитров одновременно, что может быть удобнее, если не хочется вдаваться в детали программирования.

Выбор метода коррекции зависит от ваших предпочтений и конкретной задачи.

Создано по материалам из источника по ссылке.

Исправление таймингов субтитров в файлах SRT для синхронизации их отображения с видео.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Заголовок формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-08-08 06:01:26/0.0033290386199951/0