Конвертер SBV в LRC
Или вставьте текст субтитров
Что меняет эта конвертация
2 пункта теряются или требуют решения
- Тайминг
время окончания реплик (целевой формат хранит только начало реплики)
- Точность
точность тайминга — часы результата грубее, поэтому каждая метка округляется до ближайших 10 мс
Этот список выведен из матрицы возможностей этих двух форматов, а не из загруженного файла. Конкретный файл может потерять больше, если использует возможности, которые формат допускает, а матрица не моделирует.
Конвертер SBV в LRC нужен, когда плеер или платформа принимает только второй формат: SBV здесь — формат YouTube, в котором начало и конец стоят в одной строке через запятую, LRC — формат текстов песен, где у каждой строки есть только момент начала. SBV хранит полный интервал (0:00:01.000,0:00:03.500), а LRC записывает только начало: та же реплика превратится в [00:01.00]. Точность при этом падает: LRC округляет каждый таймкод до 10 мс, поэтому 00:00:04,001 превратится в 0:00:04.00.
Сайт перечисляет потери до запуска — концы реплик, доли секунды; SBV хранит полный интервал, а LRC запоминает только начало строки: конец будет выводиться из следующей строки, а у последней — из значения по умолчанию 2 000 мс.
Сервер не участвует: файл читается и записывается в браузере, поэтому можно обрабатывать пакеты и прерывать очередь в любой момент.
Примеры
Обычный файл SBV, переведённый в LRC
Вход
0:00:01.000,0:00:03.500
The quick brown fox.
0:00:04.000,0:00:06.250
Jumps over the lazy dog.
0:00:07.000,0:00:09.000
Two lines here.
And a second one.
Выход
[00:01.00]The quick brown fox.
[00:04.00]Jumps over the lazy dog.
[00:07.00]Two lines here.
[00:07.00]And a second one.
Сравните две стороны: SBV хранит полный интервал (0:00:01.000,0:00:03.500), а LRC записывает только начало [00:01.00]; текст сохраняется, а конец реплики в файл не попадает.
Тот же перевод на неаккуратном файле SBV
Вход
0:00:02.000,0:00:04.000
Carriage-return line endings.
0:00:06.000,0:00:08.000
Indented timecode, no final newline.Выход
[00:02.00]Carriage-return line endings.
[00:06.00]Indented timecode, no final newline.
Второй файл проверяет граничные случаи. SBV читает его без падения, а LRC записывается заново, поэтому часть дефектов исчезает, но пропущенные блоки не возвращаются.
Частые вопросы
Как будут выглядеть таймкоды SBV после перевода в LRC?
SBV хранит полный интервал (0:00:01.000,0:00:03.500), а LRC записывает только начало: та же реплика превратится в [00:01.00]. Точность при этом падает: LRC округляет каждый таймкод до 10 мс, поэтому 00:00:04,001 превратится в 0:00:04.00.
Чем придётся пожертвовать при экспорте SBV в LRC?
SBV хранит полный интервал, а LRC запоминает только начало строки: конец будет выводиться из следующей строки, а у последней — из значения по умолчанию 2 000 мс. точность падает: LRC округляет каждый таймкод до 10 мс, тогда как SBV хранил миллисекунды, поэтому 00:00:04,001 станет 0:00:04.00. Это полный список потерь для пары SBV → LRC; сайт показывает его до запуска.
Что теряется при чтении SBV и переводе в LRC?
SBV — формат YouTube с парой времени в одной строке и без оформления. В LRC переносится текст и интервалы; стилей и служебных блоков в SBV нет, поэтому потерять можно только оформление, которого исходник не содержал.
Не перепутается ли порядок реплик после конвертации SBV в LRC?
SBV может хранить несколько строк в одной реплике, а LRC записывает каждую строку отдельной меткой: многострочная реплика превратится в несколько строк с одинаковым временем начала, порядок сохраняется.
В какой кодировке сохраняется LRC и какое у него расширение при переводе из SBV?
Файл LRC записывается в UTF-8 без BOM с переводами строк LF и расширением .lrc; при чтении SBV сайт сам определяет BOM и стиль переводов строк и нормализует их. Кириллица и другие алфавиты сохраняются без замены символов.
Как LRC определяет конец реплики, если в SBV он записан?
LRC хранит только начало строки в виде [00:01.00] с точностью до сотых; конца в формате нет. При переводе из SBV конец каждой реплики теряется, а при чтении выводится из начала следующей строки, у последней — 2 000 мс по умолчанию.