Українська

Відео & субтитри · Subtitle Toolkit

Як налаштувати браузер SRT файл: блоки, індекси, коди часу та текст

· Як працює

Опубліковано ToolAcre · Редакція журналу

субтитри шемале файл-формати

Два SRT лікероблоки, відокремлені заготовкою лінії, кожен з індексним рядком, рядка часу та текстові лінії
Головна ToolAcre векторна ілюстрація

SRT дивиться trivial до тих пір, поки ви не знайдете реальні файли. Цей пост проходить через те, як розбиває блоки, читає індекси та індекси часу, ручає багатоканальний текст і відновлюється з мальформованих блоків, які містять реальні файли світу.

Файл 'looks fine' але половина ліктів відсутній — як формат lenient-looking приховує суворі очікування

SRT не має специфікацій, немає MIME реєстрація та відсутність валідатора, що судиться з гравцями. Що існує замість того, що більшість програмного забезпечення погоджується на: номер, рядок часу, один або кілька рядків тексту, потім порожній рядок. Оскільки форма є звичайною, ніж зазначеною, два файли можуть як правильно виглядати в текстовому редакторі, тоді як тільки один з них завантажується, і неприпустимо, зазвичай мовчить. Гравець, який не може читати ліктя, як правило, пропустити його, а не повідомляти його, тому файл з розбитим блок грає з зазором замість помилки.

Таким чином, парсер має два вакансії, які витягують в протилежних напрямках. Для прийняття варіацій, які містять реальні файли, оскільки файли виробляються за допомогою транскрипційних послуг, редагування та форматних перетворювачів, які роблять різні припущення. Також потрібно відмовитися від показань, які кладуть кішку в невірному часі, тому що мовчазно неправильний час

Розщеплення в блоки — порожні лінії як сепаратори, так і неприємності з променем білого простору і CRLF

Розщеплення відбувається на порожніх лініях, не на індексних числах. Парсер нормалізує рядок закінчується першим, замінюючи обидва CRLF пар і lone CR з однією новалінією, тому що файл, авторований на Windows і редагований на Unix може містити обидва. Потім розщеплюється на ходу двох або більше новинок, обрізає кожен отриманий блок і відкидає порожній. Для того, щоб замовити питання: розщеплення перед нормалізацією залишить повернення траурних вагонів в кінці рядка штрих-кодів, а часовий код буде потім не відповідати.

Помітка байтного замовлення на будь-який з них. Р UTF-8 BOM при старті файлу є три байти, які наївний парсер бачить в складі першого індексу номер, який достатньо, щоб зробити перший лік, непрочитаний в той час як кожен пізніше лікує парі. Заготовки пробілів на іншому бланку сепаратора ручаються обрізкою, тому файл, заготовки яких містять простір, як і раніше розщеплюється правильно.

Індексова лінія — чому кількість часто неправильні, дубліковані або відсутні і чому парсери не повинні довіряти їм

Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Реальні файли занурюють з нуля, перезапустіть номер після з'єднання, дублікуйте номер після редагування вручну або омийте рядок повністю, коли конвертер написав файл. Довіряючи ці номери, що успадкують кожного з цих несправностей, тому парсер призначає свій власний послідовний номер замість того, що кількість ліктів успішно збудовано ще далеко.

Цей вибір також пояснює, чому парсер ніколи не вимагає індексної лінії бути присутнім. Знаходиться лінія таймера з пошуку блоку для першого рядка, що містить стрілку, а не припустимо часового коду - друга лінія. Блок без індексних рядів зазвичай, і блок з двома променевими лініями перед тим як і раніше парзами часу, тому що позиція не визначає часовий код.

Лінія часу — HH:MM:SS,mmm --> HH:MM: SS,mmm, перенесені варіації і ті, які розбиває гравців

Лінія штрих-коду відповідає одному регулярному виразу, а також допуски в ній свідомі. Години є необов'язковими, тому що WebVTT дозволяє двоповерховим читанням та конвертерами, які випромінюють його. Або ж повна зупинка прийнята в якості мілісекундного сепаратора незалежно від того, який форматує вимоги до файлів, оскільки змішані сепаратори є загальними достатньо, що відхилення їх буде не більше хороших файлів, ніж погані. Фракційні цифри поставляються направо, тому закінчення ліктя в одному цифрі читають як сотні мілісекундів, а не одиниць.

Відхилено два читання. За хвилину або секунди поле вище п'ятдесят дев'ятдесят дев'ятдесят дев'яти секунд не здійснюється, тому що дев'ятдесят секунд не є годинниковим читанням і зазвичай вказує на пошкоджений або неправильний файл; нормалізуючи його мовно перемістити лік. Лінія, яка стартує або закінчується не вдається парсері, виробляє записаний номер, що нагадує вихідний текст і очікувану форму, і блок пропускається, а не вгадується.

Текстові лінії — багатолінійні кулі, форматування тегів і де блок дійсно закінчується

Все після того, як рядок часового коду - це текст, який з'єднується разом з новими лініями. Не існує ліміту лінії і не намагайтеся переповнювати, так що трилінійне ліктя витримує як три лінії. Це причина порожній рядок завантажується: це єдине, що говорить про парсертифікацію тексту закінчився, тому лік, в якому власний текст містить порожній рядок буде читати як два блоки, так і другу половину буде повідомлено про те, що не має коду часу.

Настроювання Cue відокремлюються від кінцевого таймера за допомогою запуску двох або більше пробілів. WebVTT дозволяє позиціонувати директиви, такі як вирівнювання та розміщення рядків, щоб дотримуватися кінцевого часу на тій же лінії, так що парсер розщеплює їх перед тимчасовим штампом і зберігає їх поруч. Єдиний простір не є сепаратором, який зберігає за собою легку лінію коду часу без втрати часу.

Створений приклад: розгортання п'ятикутного файлу з двома навмисними несправностями — що відновлюється міцний парсер і що його прапорці

Візьміть п'яти-блоковий файл, в якому блок три мав свій рядок часу, пошкоджений для читання 00:01:75,000 --> 00:01:78,000, і блок чотири втратив свій часовий код лінії повністю під час копіювання і пасти. Парсер читає блоки один і два зазвичай і чисел їх один і два. Заблокувати три матчі форми штрих-коду, але несе друге поле семити-п'яти, так що вона відмовилася і записана як поганий час, що нагадує лінію, яку він не міг прочитати.

Блок чотири не містить стріли, тому він записується як не встигнути, цитуючи перші персонажі заробки блоку, так що рядок можна знайти в оригінальному файлі. Заблокувати п'ять пар і набуває ліктя три, а не лікувати п'ять, тому що кількість підрахунків успішних ліктів. Результатом є три вживані кішки і два конкретні, розташовані скарги, а не виняток з першої несправності і інформація про другий.

Що це не криється — ASS/SSA Укладання, позиціонування кодів та текстів непідписів SRT

Це опис SRT і частини WebVTT, які поділяють свою форму. Не обкладинка ASS і SSA, який виконує заголовок сценаріїв, визначення стилів та довідки про вентиляцію стилю, і які не можна прочитати розщепленням на порожніх лініях. Караоке термінування, командування малювання та інлайн перенаречені теги, які використовують формати зовні, які моделі крісел-і-timecode.

Не відремонтувати текст. Транкрипт, що вказаний в файл, без штрих-кодів, виробляє список блоків, які не мають часу, які повідомляють точно, але не можуть бути перетворені в субтитри без часової інформації, яка не представляється. Увімкнення несправностей є окремою концентрацією: файл, декодований неправильним символом, встановлюємо пари на відмінно діючі кулі, текст яких неправильний, а не кількість структурних перевірок виявить це.

Поцілунок: парсе leniently, писати строго — як Subtitle Toolkit читає брудну SRT і напишіть назад чистий

Робоче правило полягає в тому, щоб записати leniently і писати строго. На шляху, приймати необов'язкові години, або роздільник, відсутні індексні лінії, змішувати закінчення лінії і провідну позначку замовлення, і записувати кожну несправність як розташоване питання замість кидання на першому, тому файл може бути закріплений в одному проході. На виході виділяють одну канонічну форму.

Це те, що Subtitle Toolkit, коли він перетворюється. Огірки нумеровані з одного і зберігають контигуозні, часові ампери переходять з комою для SRT і повна зупинка для WebVTT, і файл, який повернувся назад, є фігурні гравці очікують незалежно від того, як неправильний вхід був. Поставте файл, який гравець відхилений в конвертер і прочитайте перші повідомлення, вони назвали лік і процитувати рядок, який, як правило, достатньо, щоб знайти несправність в оригінальному режимі.