Un ansamblu este ambalarea fluxurilor media individuale într-un container comun. Pentru remixuri se folosesc 3 tipuri de containere: MKV, TS și M2TS. Pe baza containerului M2TS, puteți crea și o structură de fișiere cu drepturi depline a unui disc Blu-ray.

Container (container video)

Flux video

MPEG-2, H.264/AVC (MPEG-4), VC-1

Flux audio

AC3, DTS, DTS-HD MA, DTS-HD HR, Dolby TrueHD, LPCM

Subtitrări (flux grafic de prezentare)

SRT, PGS TS, MKV, M2TS

Un container poate conține, de asemenea, mai multe fluxuri de același tip. Există restricții cu privire la formatele de flux care pot fi incluse în orice container dat, iar containerele în sine sunt acceptate de hardware diferit cu grade diferite de succes. De exemplu, containerul MKV este cel mai omnivor dintre toate cele trei utilizate în prezent, dar el însuși nu este acceptat de niciun player „hardware”. Containerul TS este mai bine perceput de echipamentele staționare, dar subtitrările nu pot fi incluse deloc în el - doar ca flux extern. M2TS este un container standard pentru discuri Blu-ray; toate cele trei formate video HD, toate formatele audio de interes pentru noi și subtitrări în formatul grafic PGS pot fi incluse în el. Ce recipient să folosiți este o chestiune de preferință personală.

Deci, avem gata subtitrări în format SRT, audio în format AC3 și DTS. Tot ce rămâne este să ne ocupăm de videoclip. În prezent, sunt utilizate trei codecuri în HD: MPEG-2, H.264/AVC (MPEG-4) și Microsoft VC-1. În plus, în cadrul H.264/AVC comercial există un proiect x264 open-source gratuit. Acest codec este folosit în principal pentru a face rip-uri.

Notă: Pentru a conecta subtitrări ca externe în Media Player Classic, fișierul de subtitrare trebuie să aibă același nume ca și filmul și să fie în același folder. Apoi playerul le va încărca automat. Le puteți activa în meniul Navigare > Limbă subtitrare. De exemplu:

00001.ts - film 00001.srt - subtitrare

Există o problemă cu videoclipul VC-1 capturat de pe HD-DVD. Pentru compatibilitate cu diverse echipamente, de ex. „Cu cele mai bune intenții”, informații de serviciu (steagul pulldown) au fost adăugate fluxului video, datorită căruia un flux cu parametri reali de 1920x1080p și fps 23.976 poate fi perceput de splitter ca 1920x1080i și fps 29.97. În timpul redării unui astfel de fișier, există o mare probabilitate ca periodic

„încetiniri” pe termen scurt. Dacă splitter-ul preia informații despre flux din antet, problemele sunt garantate; dacă din flux în sine, totul va fi OK.

Pentru o redare corectă, aceste informații de serviciu trebuie șterse. Acest lucru se poate face folosind utilitare xportȘi vc1conv. Programele rulează în linia de comandă DOS, puteți utiliza și shell-ul grafic eac3to și mai mult GUI. Utilitate xport vă permite să extrageți fluxuri elementare (ES) din container și vc1conv corectează fluxul VC-1. Calitatea video nu are de suferit.

Sintaxă pentru xport: xport film.ts 1 1 1

(a doua și a treia cifră indică numărul de fluxuri video și, respectiv, audio) Sintaxă pe vc1conv: vc1conv videostream.mpv videostream-new.mpv.

Apoi trebuie să schimbați extensia fișierului în *.VC1.

Aceeași operațiune de corecție a debitului poate fi efectuată direct în tsMuxeR si in eac3to, dar în versiunile anterioare ale acestor programe această funcție nu funcționa corect, iar în cele mai recente versiuni nu exista nicio modalitate de a o verifica.

Asamblare folosind tsMuxeR.

tsMuxeR vă permite să împachetați conținut în următoarele formate:

1. TS - un fișier *.ts (subtitrările nu sunt acceptate).

2. M2TS - un fișier *.m2ts

3. Structura Blu-ray - un sistem de fișiere Blu-ray este creat cu un fișier m2ts, unul mpls și un fișier clpi. Nu există (natural) niciun meniu.

De asemenea, este posibil să creați AVCHD (nu este folosit pentru remixuri). Formatul este conceput pentru home-video. Are o structură similară (dar nu identică) cu Blu-ray. Principalele diferențe față de Blu-ray:

1. DVD-ul este folosit ca suport.

2. Rata de biți video este limitată la 18 Mbit/s.

3. Sistem de meniu simplificat.

Hai să lansăm programul. Pe fereastră Fișiere de intrare trageți și plasați fișierele necesare cu mouse-ul. Dacă trebuie să lipiți mai multe fragmente într-unul singur, apoi trageți primul, faceți clic a te alatura, indicați spre al doilea, etc. În fereastră Urme sunt afișate informații despre fluxurile disponibile. Butoane Sus, JosȘi Eliminaîn consecință, puteți modifica ordinea sau elimina firele din listă. De asemenea, puteți exclude un flux de la procesare debifându-l. Selectarea fluxului în fereastră Urme,

puteți vizualiza și modifica parametrii acestuia afișați în meniu Opțiuni generale de urmărire. De exemplu, pentru o pistă audio puteți specifica limba audio și puteți seta o întârziere.

Pentru fișierele TS, asta este tot. Bifeaza casuta Muxing TS, specificați calea de salvare, numele fișierului și faceți clic Începeți să muxați. În 10-15 minute totul va fi gata.

Când creați o structură Blu-ray de pe un disc Blu-ray, este mai bine să glisați și să plasați în fereastră Fișiere de intrare nu fișierul m2ts cu filmul principal, ci lista de redare a acestuia (fișierul mpls). Poate fi calculat prin forță brută sau folosind eac3to, îndreptându-l către folderul BDMV:

Acest lucru vă va permite să importați în tsMuxeR toate fișierele m2ts ale filmului principal (dacă există mai multe dintre ele) în ordinea necesară, precum și informații de import despre capitole.


Înlăturăm piesele audio și subtitrările inutile, le înlocuim pe cele rusești, modificăm ordinea, specificăm parametrii:

Notă: Informațiile despre capitol sunt salvate numai la crearea unui disc Blu-ray.

Să mergem la secțiunea de subtitrări. Aici putem alege opțiunile de font și locația subtitrarilor pe ecran. Prima dată când trebuie să experimentați, obțineți rezultatul dorit, amintiți-vă parametrii și folosiți-i în viitor pentru alte filme.

În meniu Ieșire puneți o bifă disc Blu-ray sau M2TS Muxing, indicați calea de salvare (și numele fișierului, în cazul m2ts) și faceți clic Începeți Muxing.

În funcție de selecția meniului Ieșire, obținem fie 1 fișier m2ts, fie o structură Blu-ray.

Notă: Deoarece nu folosesc acest program tot timpul și nu sunt un fan al containerului MKV, instrucțiunile sunt foarte superficiale.

și este prezentat aici doar pentru a fi complet. Dacă cineva scrie și îmi trimite o versiune mai detaliată care să reflecte toate avantajele formatului, o voi include cu plăcere

în instrucțiunile dvs.

P.S. Am găsit o descriere foarte bună pe forumul rutracker.org:

http://rutracker.org/forum/viewtopic.php?t=619851 în secțiunea Programe > mkvtoolnix (MKV). Totuși, întregul subiect merită un studiu aprofundat.

Creați folosind GUI MKVMerge.

Programul vă permite să împachetați conținut într-un container MKV și este o interfață grafică pentru un set de instrumente MKVToolnix. O descriere detaliată a programului este aici: http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge.html. Metoda de lucru cu acest program este similară cu lucrul cu tsMuxeR, deci să ne uităm la diferențe.

Spre deosebire de tsMuxeR, nu acceptă TS și M2TS ca intrare - doar MKV (din containerele de interes) sau fluxuri extrase din container. Pe lângă SRT, MKVMerge lucrări

cu subtitrări în format VobSub. Containerul MKV acceptă atașamente externe. Să ne uităm la interfața programului.

Materialele sursă sunt încărcate în fereastră Fișiere de intrare, informații despre fluxuri sunt în meniu Urme. În meniu Opțiuni generale de urmărire Există mai multe opțiuni noi și, cel mai important, utile:

1. În câmp Numele piesei Puteți specifica numele fluxului.

2. În câmp Steagul de traseu implicit Puteți specifica că piesa va fi inclusă în mod implicit (valoarea „da”).

3. În câmp Steagul de traseu forțat Puteți seta piesa să fie forțată (valoarea „da”).

În meniu Formatați opțiuni specifice, în câmp Întârziere poți seta o întârziere, iar în teren Întinde-te, teoretic, puteți seta întinderea/compresia, dar nu puteți utiliza această opțiune - rezultatul va fi deprimant.

În câmp Nume fișier de ieșire selectați calea de salvare și numele fișierului, faceți clic Începeți să muxați.

Fișierul MKV poate fi realizat și folosind eac3to. Exemplele vor fi discutate în traducerea descrierii oficiale a programului.

Notă: traducerea instrucțiunilor oficiale. Original aici: http://en.wikibooks.org/wiki/Eac3to/How_to_Use

Veți obține cea mai mare plăcere urmărind un film în limba sa originală. Și datorită faptului că adesea nu cunoașteți limba originală sau o cunoașteți prost, este nevoie de subtitrări. În plus, subtitrările sunt o bună oportunitate de a învăța limba.

Subtitrările pot fi aplicate în momentul codificării video sau în momentul redării acestuia (în timp real). În primul caz, subtitrările sunt încorporate, în al doilea - externe. Subtitrările externe au o serie de avantaje față de cele încorporate. Sunt întotdeauna clare și ușor de citit, indiferent de calitatea video și setările decompresorului. Și, desigur, principalul avantaj este că pot fi dezactivate.

Formate

Există mai multe formate de prezentare a subtitrărilor externe. Fiecare format are propriile sale avantaje și dezavantaje. Cele mai frecvente sunt srt, ssa, smi. srt este una dintre cele mai simple și mai intuitive; ssa - cel mai sofisticat; iar smi este acceptat de Microsoft.

Fișierul de subtitrare conține o structură care conține informații despre când și ce text trebuie suprapus imaginii.

Timpul de afișare este determinat fie de cadrul de început și de sfârșit (subtitrări bazate pe cadru), fie de ora de început și de sfârșit a frazei (subtitrări bazate pe timp). O frază constă din una sau mai multe linii de test. Formatele mai complexe determină culoarea și poziția textului, dimensiunea acestuia și efectele utilizate. Uneori fișierul de subtitrare conține<шапку>- un titlu care spune pentru ce film sunt aceste subtitrări, cine le-a făcut și alte informații.

De unde vin subtitrarile:

  • DVD Compania de DVD include de obicei subtitrări pentru filmul lansat în una sau mai multe limbi. Extragerea acestor subtitrări de pe un DVD nu este dificilă. Este foarte convenabil să utilizați programul SubRip pentru aceasta. Aceste subtitrări sunt de obicei foarte bine sincronizate și traduse corect.
  • Fansub Până când un anumit anime este lansat oficial în America, traducerea acestuia poate fi făcută de fani - fansubers. De obicei, aceste subtitrări sunt în format SSA, deoarece sunt cronometrate în SubStation Alpha. Acestea sunt destinate în primul rând pentru ieșirea pe bandă folosind dispozitivul GenLoc. Aceste subtitrări sunt adesea traduse mai puțin bine decât subtitrările oficiale văzute pe DVD-uri și sunt adesea prost cronometrate. Dar toate avantajele formatului SSA sunt folosite pentru a schimba dimensiunea și culoarea fontului și poziția subtitrarilor suprapuse. Deoarece aceste subtitrări sunt făcute de fani pentru fani, ele nu traduc, de exemplu, sufixe nominale care ar trebui să fie înțelese de fan oricum.

Iată o descriere mai detaliată a celor mai comune formate de subtitrare.

SubRipper (*.srt)

Fișierele au extensia srt. Acesta este formatul nativ de subtitrare al programului SubRip (by Brain). Acesta este cel mai popular program pentru extragerea subtitrarilor de pe DVD-uri. Formatul în sine este simplu și clar, sincronizându-se cu video în funcție de timp, cu precizie în milisecunde. Un format foarte comun. Fișierele Srt sunt foarte convenabile de editat - este mai bine să faceți traduceri în fișiere srt. Formatul extins vă permite să schimbați unii parametri de font (stil, culoare) și poziția subtitrarilor pe ecran, dar puțini oameni îl acceptă. Fără pălării. Subtitrările sunt separate între ele printr-o linie goală; Sfârșitul fișierului este marcat cu un flux de linie dublă (critic pentru unii jucători și convertoare).

Exemplu de fișier:

Citat:

1
00:00:03,600 --> 00:00:07,630
0-3-3, 0-3-5, 0-3-8,
Fară contact.

2
00:00:07,700 --> 00:00:09,100
Te-am prins.
...

222
00:24:50,220 --> 00:24:53,880
Acum vor acționa
încrezător în sine, nu-i așa?

un fișier de subtitrare este un set de fraze în următorul format.

N
HH:MM:SS:MLS --> hh:mm:ss:MLS
Primul rând al frazei
Al doilea rând al frazei

Unde
N - numărul frazei
HH:MM:SS:MLS - ora de începere a afișării fazei în ore, minute, secunde și milisecunde (mls)
hh:mm:ss:mls - ora de începere a afișării fazei în ore, minute, secunde și milisecunde (mls)

există un spațiu între timp și săgeată.

SAMI (*.smi)

Fișierele cu extensia *.smi sunt un format de subtitrare de la Microsoft numit SAMI (Synchronized Accessible Media Interchange). . Acest format este bine documentat și are o structură complexă, extensibilă. De fapt, SAMI este un subset al SGML, precum HTML, și, prin urmare, foarte asemănător cu acesta. Acest limbaj de marcare este rezultatul activității Centrului de subtitrări din cadrul WGBH de a aduce subtitrări la televiziune pentru surzi, cu deficiențe de auz și cursanți de limbi străine. Standardul acceptă modificarea dimensiunii fontului, a culorii, a tipului de literă și a stilului, precum și schimbarea poziției pe ecran. În plus, acceptă stiluri. Sintaxa stilului este similară cu W3C CSS. Sincronizarea timpului. Principalul avantaj al acestui format este acela ca este suportat de Microsoft si deci poate fi redat fara probleme pe un Windows Media Player obisnuit (ver >= 5).De asemenea, trebuie mentionat ca uneori fisierele in format SMIL au extensia smi ( acestea sunt subtitrări pentru RealPlayer), dar nu trebuie confundate cu subtitrările SAMI. Extensia corectă pentru fișierele SMIL este *.smil

Iată un exemplu de fișier SAMI tipic:

Citat:



SubConv a creat subtitrare






0-3-3, 0-3-5, 0-3-8,
Fară contact.

Te-am prins.


Acum vor acționa
încrezător în sine, nu-i așa?


fișierul de subtitrare este format din două părți, incluse într-o etichetă comună

- titlu

- corp

antetul la rândul său include secțiuni Și<STYLE>. В первом задается заглавие файла со скриптами, а во втором задаются стили. Формат позволяет указывать как стили по умолчанию так и пользовательские, которые зритель может менять в процессе просмотра (такая возможность поддерживается например в Windows Media Player). Также в заголовке с помощью тега <SAMIParam> можно давать любую сопутствующую информацию, например указать переводчика, название оригинала и т.д.</p> <p>Тело представляет из себя таблицу и состоит из последовательности фраз, заключенных в тег <P>Параграф. Позволяются следующие форматирующие теги:</p> <ul><li>Bold text: <strong>Bold</strong> text</li> <li>Italic text: <em>Italic</em> text</li> <li>Bold Italic text: <em><strong>Bold Italic</strong></em> text</li> <li>Strikethrough text: <s>Strikethrough</s> text</li> <li>Subscript text: <sub>Subscript</sub> text</li> <li>Superscript text: <sup>Superscript</sup> text</li> <li>Underline text: <u>Underline</u> text</li> </ul><p>Для синхронизации по времени используется специальный тег <SYNC Start=time> где time - это время начала показа фразы в микросекундах. Для того чтобы убрать фразу с экрана выводится пустая фраза () между тегами синхронизации может находиться сколько угодно фраз с различными значениями ID и CLASS это позволяет хранить в одном файле субтитры на нескольких языках и стилях (пользователь может сменить язык и стиль во время просмотра), с помощью стиля Source можно задавать имя произносящего данную фразу.</p> <h3><span>SubViewer (*.sub) v1 & v2 (Submagic) </span></h3> <p>Формат некогда был довольно популярен, но теперь в связи с распространением других форматов, обладающих большими преимуществами, стал абсолютно неактуален. Изначально этот формат был предназначен для проигрывания в программе Submagic. Это программа для просмотра субтитров, работающая отдельно от плеера и требующая ручной синхронизации. Так можно было просматривать с субтитрами видеокассеты, если подключить видеомагнитофон к ТВ тюнеру. В последствии этот формат научились поддерживать многие плееры. Формат очень похож на *.srt. Отличается наличием шапки в которой можно указать различную информацию о субтитрах: название, кто перевел, с чего сделан перевод и т.д. Также в шапке указываются параметры шрифта. Эти параметры общие для всего скрипта. Обычно плееры, поддерживающие это формат субтитров плюют на эти стилевые указания. Синхронизация по времени.</p> <p>Формат *.sub состоит из двух не совместимых между собой версий: v1 и v2,</p> <p>вот пример скрипта версии 2.</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body"> Пожалуйста спаси мою землю<br> Silvan Elf<br> Please Save My Earth.<br> 1<br> <br> 1<br> Перевод с английского.<br> <br> &HFFFFFF,no,18,Arial<br> 00:00:19.49,00:00:21.55<br> Хочу домой.<br> 00:00:22.66,00:00:25.75<br> Я раньше никогда не была в месте <br class="bb-br">Где воздух такой...<br> 00:00:26.66,00:00:28.13<br> грязный.<br> 00:59:07.21,00:59:08.84 Я хочу поговорить с тобой. 00:59:08.91,00:59:10.11 Так ты умеешь летать, верно? </blockquote> <p>структура очень мало отличается от структуры *.srt формата и потому подробно не рассматривается.</p> <h3>MicroDVD (*.mdv,*.sub) </h3> <p>Это собственный формат плеера MicroDVD player. Он не имеет фиксированного расширения, обычно это txt или sub. В связи с тем, что MicroDVD Player долгое время оставался вне конкуренции среди плееров с поддержкой субтитров, а также благодаря подробной документации, поддержке изменяемого стиля, размера и положения шрифта, этот формат сыскал уважение среди пользователей. Под него успели написать множество утилит, которые делают в основном то же самое: конвертят в него из всего, что попало и меняют FPS. Последнее особенно актуально в связи с тем, что этот формат синхронизирован по номеру кадра, и поэтому если у вас окажется исходник видео с другой частотой кадров (например при Inverse TeleCine 30fps->24fps) то придется пересчитывать кадры начала и конца каждой фразы файла субтитров. Формат весьма компактен и интуитивно понятен. За основу видимо взят формат SubMagic v1 с (он был кадровой синхронизацией).</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body">Хочу домой.<br> Я раньше никогда не была в месте |Где воздух такой...<br> грязный.<br> Знаешь Алиса...<br> Давным-давно,|землей правили динозавры. <p>88680}Я хочу поговорить с тобой. Так ты умеешь летать, верно?</p> </blockquote> <p>формат не предусматривает никакой шапки и является одним из самых компактных. Он слегка проигрывает в читабельности srt в связи с тем что переводы строки здесь обозначены как "|"</p> <p>формат расширяется посредством следующих контрольных кодов:</p> <p>{c:$bbggrr} цвет шрифта bb gg и rr это шестнадцатеричные числа в RGB представлении цвета, т.е. как в HTML.</p> <p>пример {}{c:$0000FF}- But why?|{c:$00FFFF}- Because this movie|has naughty language!<br> если в контрольном коде маленькая c то код действует до конца строки, если большая - на всю фразу.</p> <p>{f:fontname} выбор гарнитуры шрифта. заглавная и строчная буквы действуют аналогично выбору цвета.</p> <p>{s:size} выбирает размер шрифта. Заглавная и строчная буквы действуют аналогично выбору цвета.</p> <p>{H:charset} выбор кодировки: русская греческая и т.д.<br> Внимание! действительно только в разделе <br> {y:style} выбор стиля (bold, italic, underline) можно комбинировать, например bi жирный курсив. заглавная и строчная буквы действуют аналогично выбору цвета.</p> <p>{P:position} показывать субтитры сверху видео окна или снизу. действует только на всю фразу (только заглавная)</p> <p>{o:x-coordinate,y-coordinate}поместить текст в произвольно положение экрана с координатами x,y относительно правого верхнего угла.</p> <p>можно указать значения по умолчанию для всего скрипта субтитров с помощью раздела {}<Control Codes></p> <p>на месте <Control Codes> можно поместить любые из контрольных кодов(заглавные буквы).</p> <p>пример {}{F:Arial}{S:18}{Y:b,i}{P:1}</p> <p>контрольный код H можно применять только в этом разделе!</p> <h3>SubStation Altha (*.ssa) v.4 </h3> <p>Формат *.ssa это рабочий файл субтитров программы SubStation Altha. Это программа для подготовки и таймирования субтитров, а также наложения их на аналоговый носитель (VHS или SVHS) с помощью устройства называемого GenLock. Среди непрофессионалов это самая популярная и богатая возможностями программа для титрования. Список ее возможностей может послужить темой для отдельной статьи. Также богат и сам формат субтитров. Здесь полностью поддерживается работа со всеми параметрами шрифта (цвет, размер, гарнитура и т.д.), размещение текста в любом месте экрана, комментарии. Множество полей определяет параметры каждой фразы, например специальное поле для определения произносящего данную фразу. Этот формат является фактически стандартом де-факто в среде фэнсаберов (небольшая доля пользуется амиговским Js но основная масса использует Windows и SubStation Alpha). Все это делает формат SSA преобладающим в среде анимешников. До недавнего времени не было плееров, с возможностью динамически накладывать ssa субтитры на видео, и единственным способом посмотреть их было вставить в ssa событие проигрывания фрагмента самого фильма. При этом субтитры накладывались на видео в самом SubStation Altha. При этом отсутствовала возможность растянуть видео на полный экран. Теперь ситуация поправляется: его хорошо поддерживает Crystal Player. Также поддерживает этот формат MicroDVDPlayer ver 1.2 (без изменения параметров шрифтов, положения текста и эффектов) и DVDSubtitler.</p> <p>Как альтернатива можно просматривать цифровое видео с субтитрами в этом формате если жестко наложить эти субтитры на видео с помощью фильтра subtitler (by Avery Lee) для VirtualDub. При этом работа со шрифтами поддерживается.</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body"> <p><br> ; This is a Sub Station Alpha v4 script.<br> ; For Sub Station Alpha info and downloads,<br> ; go to http://www.eswat.demon.co.uk/ <br> ; or email kotus@eswat.demon.co.uk <br> Title: Di Gi Charat Volume 1<br> Original Script: Zeruel<br> Script Updated By: Anime Jonetsu<br> ScriptType: v4.00<br> Collisions: Normal<br> PlayResY: 600<br> PlayDepth: 0<br> Wav: 0, 179746,C:Scriptsdigicharatdigicharat1.wav<br> Timer: 100.0000</p> <p><br> Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding<br> Style: Default,Arial,28,16777215,16777215,16777215,13305607,-1,0,1,4,1,2,30,30,30,0,0<br> Style: Screentext,Arial,26,16777215,16777215,16777215,10750853,-1,0,1,3,1,2,30,30,30,0,0<br> Style: alt dialog,Arial,26,16777215,16777215,16777215,32768,-1,0,1,3,1,2,30,30,30,0,0<br> Style: credits,Arial,22,16777215,16777215,16777215,5701806,-1,0,1,3,1,2,30,30,30,0,0<br> Style: digi,Arial,28,16777215,16777215,16777215,11493729,-1,0,1,4,1,2,30,30,30,0,0<br> Style: scary,Arial,28,255,16777215,16777215,3092271,-1,0,1,4,1,2,30,30,30,0,0<br> Style: song,Arial,26,16777215,16777215,16777215,33023,-1,0,1,3,1,2,30,30,30,0,0</p> <p><br> Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text<br> Comment: Marked=0,0:00:03.50,0:00:05.50,*Default,Comment,0000,0000,0000,Synch Point: Chapter 1, 0:00:00<br> Dialogue: Marked=0,0:00:06.50,0:00:12.50,Screentext,Text,0187,0181,0529,NOT FOR SALE OR RENT<br> Dialogue: Marked=0,0:00:18.14,0:00:20.12,Screentext,Text,0122,0411,0313,OP Theme:nOnly 1 No.1n(Okui Masami)<br> Dialogue: Marked=0,0:00:06.32,0:00:13.05,song,romaji-song,0131,0128,0469,sekai de ichiban kagayaku made<br> Dialogue: Marked=0,0:00:06.32,0:00:13.05,digi,song-e,0075,0050,0001,Until I shine the brightest in the world</p> </blockquote> <p>Скрипт состоит из заголовка, описания стилей и тела</p> <p>В заголовке есть стандартная часть, которая сообщает что это за файл и версию скрипта, а также отсылает к сайту SubSttaion Altha.</p> <p>Далее идут несколько полей обозначающих автора перевода, источник откуда сделан перевод, точку синхронизации (при выводе на аналоговый носитель синхронизация производится вручную), разрешение с которым работал редактор при расположении элементов по экрану и некоторые другие.</p> <p>В разделе стилей идет детально описание всех используемых в скрипте стилей. указывается размер, гарнитура, стиль и цвет шрифта, положение (в виде отступов справа, слева, сверху и снизу), а также кодировку.</p> <p>Для каждой из фраз отдельно можно указать время начала и конца показа этой фразы, ее стиль, название (используется как поля для указание имени говорившего) и положения фразы на экране. Далее идет сам текст фразы, разделение на строки как в языке C с помощью комбинации "n" или "N".</p> <p>Интересно работаем механизм коллизий, т.е. перекрывания по времени отдельных фраз. Например когда в кадре кто-то говорит, а за кадром слышен голос диктора из телевизора. при этом на экране показываются обе строки, только более поздняя показывается ниже и другим цветом. Для этого задается не один а 3 цвета шрифта, например для случая двукратной коллизии (встречается крайне редко).</p> <p>Кроме того формат еще позволяет включать в себе с помощью UUEncoding шрифты и картинки, используемые в скрипте. Это делает *.ssa самодостаточным и независимым от машины, на которой накладывается, но поддерживается это только в SubStation Alpha.</p> <h3>JACOsub (*.js) </h3> <p>Файлы с расширением *.js - рабочие файлы программы JACOSub. Это программа для титрования фильмов, такая же как и SubStation Altha только для компьютера Amigo. В свое время этот стандарт был довольно популярен, сейчас используется редко, но не смотря на это все, еще можно встретить в Интернет скрипты в этом формате. Возможности JACOSub близки к SSA, но многие вещи очень Amigo-зависимы. Синхронизация с видео по времени.</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body"># JACOsub script file<br> # Converted by Multi-script Converter VERSION 1.24<br> # Title: Aa! Megami-sama Gekijouban Subbing Script<br> # Original Script: Converted by Shadowrunner<br> # Timing/Script: Converted by Shadowrunner<br> # Editing: Converted by Shadowrunner <p># This is a free fan subtitle. You may use this script only in accordance<br> # with U.S. copyright regulations. This means if the title has been licensed<br> # for release in the U.S., you may ONLY use this script for PERSONAL viewing<br> # and MAY NOT distribute material using this script or translation. Neither<br> # Shadowrunner nor the converter that created this file will be held<br> # accountable for anyone"s use or abuse of this script. It is intended for<br> # personal private use only and the actions of third parties are their<br> # OWN responsibility.</p> <p># Date: 08-10-2001</p> <p>#TIMERES 100<br> #SHIFT 0</p> <p>0:00:01.00 0:00:04.00 D0 {} Oh! My Goddess Movie v1.9 Fansub<br> 0:00:05.00 0:00:08.00 D0 {} Nekomi Kodai Fansubbing<br> 0:00:09.00 0:00:12.00 D0 {} The accuracy of this sub is in no way guaranteed.<br> 0:00:13.00 0:00:16.00 D0 {} Timed, Edited, Translated by Edward Chang Retimed for the DVD release by Ifruita</p> </blockquote> <p>Как видно из примера файл субтитров состоит из заголовка, в котором указывается название, кто перевел, кто оттаймировал, кто редактор данного скрипта, затем стандартное предупреждение что этот файл не предназначен для коммерческого использования и др. подобной информации. После заголовка идет тело скрипта, состоящее из последовательности фраз с указание времени начала и конца показа каждой фразы. Можно указывать кто произносит тут или иную фразу.</p> <p>Real Text&SMIL (*.smil,*.rt,*.smi)</p> <p>Real Player также может показывать субтитры, для их включения нужны файлы real text и SMIL. SMIL (Synchronized Multimedia Integration Language) формат представления синхронизированного с медиафайлами текста, разработанного W3C консорциумом.</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body"><smil><br> <head><br> <meta name="title" content="Dragonball Z Episode 192" /><br> <meta name="author" content="Bardock" /><br> <meta name="copyright" content="(c) 1999" /><br> <layout><br> <root-layout width="320" height="270" /><br> <region id="video_region" width="320" height="240" left="0" top="0" /><br> <region id="text_region" width="320" height="30" left="0" top="240" /><br> </layout><br> </head><br> <body><br> <par> <textstream src="http://www..rt" region="text_region" fill="freeze" /><br> <video src="http://www..rm" region="video_region" fill="freeze" /><br> </par><br> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body><br> </smil> </blockquote> <p>этот файл представляет собой шапку для одно или нескольких *.rt (real text) файлов которые и содержат собственно сами субтитры.</p> <p>а вот пример упомянутого в SMIL файла 192-raw-300k.rt</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body"><window type="generic"<br> duration="19:44"<br> width="320"<br> height="60"><br> <time begin="1"/><font color="blue">Episode 192: "I"ll Be up there. Farewell with a Smile"</font><br/><br> <time begin="13"/><clear/>Yamcha: He did it! Way to go! you destroyed Cell.<br/><br> <time begin="35"/><clear/>Krillin: Amazing Gohan! Hey, You did it!<br/><br> <time begin="42"/><clear/>Yamcha: (something on the idea of "great, you did it! You killed him!"<br/><br> <time begin="48"/><clear/>Krillin: We better fly over to heaven to get some senzu for gohan<br/><br> <time begin="1:00"/><clear/>Yamcha: Alright then.. let"s go<br/><br> <time begin="1:04"/><clear/>Gohan: Thanks<br/><br> </window> </blockquote> <p>видно что каждый из *.rt файлов состоит из маленького заголовка, в котором указывается техническая информация по данному скрипту, и набора фраз, каждая из которых начинается с тега <time> с указанием времени начала показа<br> фразы с точностью до секунды. далее сама фраза. В тексте фразы можно управлять шрифтом и текстом так же как это делается в HTML или SAMI с помощью тегов <font>,<br> и др. Предыдущая фраза убирается с экрана с помощью тега <clear/></p> <h3>Sasami2k script (*.s2k) </h3> <p>Это внутренний формат представления субтитров плеера Sasami2k. После того как Sasami2k обнаружит рядом с файлом фильма файл субтитров *.smi с тем же именем, он автоматически запустит перекодировщик - Sasami translator. Затем происходит преобразование, детали которого пока неясны, так как перекодировщик еще не переведен с корейского. Ясно лишь, что после перекодирования сохраняется информация о стилях и положении текста, причем положение и размер шрифта масштабируется в соответствии с разрешением фильма. Далее в плеере можно изменять положение размер и другие параметры субтитров прямо на лету и в конце сохранить скрипт субтитров со всеми внесенными изменениями в файл *.s2k.</p> <p>Формат очень громоздок, трудночитаем, имеет весьма сложную структуру и, скорее всего, не будет поддерживаться ни одним плеером, кроме Sasami2k.</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body">// translated by Sami2Sasami 1.0.7.300<br> // contact: nuclei@shinbiro.com <br> ;Set.Slot=1<br> ;Set.Time.Delay=15000<br> ;Set.Alpha.End=256<br> ;Set.Alpha.Start=256<br> ;Set.Alpha.Step=-300<br> ;Set.Font.Bold=0<br> ;Set.Font.Color=#EEF4FB<br> ;Set.Font.Outline.Color=#00101010<br> ;Set.Font.Outline2.Color=#01101010<br> ;Set.Font.Size=9<br> ;Set.Font.Face=№ЩЕБ<br> ;Buffer.Push=1 <p>;Buffer.Pop=1<br> ;Set.Time.Start=18352<br> ;Set.Start.Position.x=117<br> ;Set.End.Position.x=117<br> ;Set.Start.Position.y=203<br> ;Set.End.Position.y=203<br> ;Set.Start.Position.x=117<br> ;Set.End.Position.x=117<br> ;Set.Start.Position.y=203<br> ;Set.End.Position.y=203</p> <p>;(ї┐°бчК)<br> ;Set.Start.Position.x=164<br> ;Set.End.Position.x=164<br> ;Set.Start.Position.y=203<br> ;Set.End.Position.y=203<br> ;Set.Start.Position.x=164<br> ;Set.End.Position.x=164<br> ;Set.Start.Position.y=203<br> ;Set.End.Position.y=203<br> Long, long ago,<br> ;Set.Start.Position.x=160<br> ;Set.End.Position.x=160<br> ;Set.Start.Position.y=221<br> ;Set.End.Position.y=221<br> ;Set.Start.Position.x=160<br> ;Set.End.Position.x=160<br> ;Set.Start.Position.y=221<br> ;Set.End.Position.y=221</p> <p>Ihrie! Hey, lhrie!<br> ;Set.Start.Position.x=160<br> ;Set.End.Position.x=160<br> ;Set.Start.Position.y=203<br> ;Set.End.Position.y=203<br> ;Set.Start.Position.x=160<br> ;Set.End.Position.x=160<br> ;Set.Start.Position.y=203<br> ;Set.End.Position.y=203</p> <p>;Set.Start.Position.x=160<br> ;Set.End.Position.x=160<br> ;Set.Start.Position.y=221<br> ;Set.End.Position.y=221<br> ;Set.Start.Position.x=160<br> ;Set.End.Position.x=160<br> ;Set.Start.Position.y=221<br> ;Set.End.Position.y=221<br> What is it, Fam?</p> </blockquote> <p>здесь видно, что это больше похоже на язык программирования чем на скрипт субтитров. например общие для всех фраз параметры вносятся в стек и вынимаются перед каждой фразой. Частенько каждое слово обрамляется полным набором параметров, которые к тому же часто дублируют друг друга.</p> <p>конвертировать субтитры в этот формат можно только конвертором от Sasami2k и просмотреть можно только в плеере Sasami2k.</p> <h3>QTtext (*.txt) </h3> <p>Для представления субтитров в QuickTime плеере используется формат QTtext. Это очень кривой и редкий формат. Субтитры в таком формате можно создать (т.е. оттаймировать) с помощью программы Magpie.</p> <p>Вот пример субтитров в данном формате.</p> <p><b>Цитата: </b></p><blockquote class="bb-quote-body">{QTtext}{font: Arial}{justify: center}{size: 12}{backcolor:0, 0, 0}<br> {timescale: 100}{width: 439}{height: 0} <p><br> {justify:center}README.TXT for MAGpie<br> {justify:center}Please read this entire document before installing MAGpie.<br> {justify:center}*****************<br> MAGpie 1.0<br> *****************00:00:15.99]<br> {justify:center}-- SYSTEM REQUIREMENTS<br> {justify:center}1. Windows95/98<br> {justify:center}2. Microsoft Internet Explorer 4 or higher (http://www.microsoft.com)</p> </blockquote> <p>Файл состоит из маленького заголовка с указанием общих для всего скрипта технических параметров (гарнитура, размер и цвет шрифта; размеры изображения и т.д.) далее идет последовательность фраз, предваряемых временем начала показа в квадратных скобках. Время указывается с точностью до микросекунды. Перевод строки в тексте фразы передается обычным переводом строки в файле скрипта (также как и в srt формате).</p> <p>субтитры в данном формате проиграются только QuickTime player"ом.</p> <h3>TMPlayer subtritres (*.sub) </h3> <p>Внутренний формат плеера TMPlayer, который широко распространен в Польше, и, похоже, только там. Встретить можно очень редко, но DVDSubtitler его все же поддерживает.</p> <p>конверторов в этот формат я не нашел потому примера файла нет.</p> <p>Такого формата субтитров не существует. *.txt это PlainText, а не субтитры. Но иногда всё же можно встретить файлы субтитров с этим расширением. Как правило это субтитры формата MicroDVD или SubViewer и должны иметь расширение sub, но встречаются и MPL субтитры (расширение mpl).</p> <p><i>What is the easiest way to <b>convert PGS to SRT subtitles with Subtitle Converter tool </b> on Windows or Mac? I will refer to a problem to tell you how to convert PGS to SRT subtitles with SupRip, BDSup2Sub or ByteCopy. </i></p> <h2>1. What’s SupRip? </h2> <p> (not to be confused with SubRip) is a program that OCR’s Blu-ray and HD-DVD formatted SUP files (such as those exported by eac3to), and can then export SRT formatted subtitle files that can be muxed into MKV or other containers, or read as external subtitles by compatible players. It allows you to rip DVD subtitles with their timing as a text file. It converts vobsub(sub and idx) to srt text subtitles (<b><b>vobsub to srt </b> / <b>sub to srt </b> / <b>subtosrt </b> / <b>sub2srt </b> </b>) at ease. Yet the program can do more for you. In fact it is capable of converting Blu-ray .sup subtitles to .srt as well with OCR option. Below is some info about the Subtitle Converter – SubRip <b>Pros: </b></p> <ul><li>Rips DVD Subs, Image Subs, PNG Subs, and HARD-CODED SUBS!</li> <li>Learns well when training.</li> <li>Can be modified (using semi-source) by knowledgeable user to do non-Latin text.</li> </ul><ul><li>Hard to extend to non-latin text by average user</li> <li>OCR has difficulty reading the odd Sub file now and then. Indispensable tool for foreign language films.</li> <li>Slower than some rippers.</li> </ul><p><b>Compatible OS: </b> Windows XP, 2000, Vista (Windows ONLY)</p> <h2><span>2. What is PGS and SRT subtitles? </span></h2> <p> – The .sup file extension stands for subtitle bitmap image extracted from a Blu-ray movie; it contains subtitle text graphics that are displayed during movie playback. The .sup subtitles are encoded with PGS codec, and sometimes known as PGS subtitles. Blu-ray PGS subtitles is not so widely supported by HD media players as DVD subtitles and usually need to be converted to more common subtitle format like SRT, SSA, IDX, ASS, etc. When a Blu-ray is ripped into .m2ts streams , the .sup subtitles can be extracted by demuxing the M2TS using tsMuxer. – The .srt is primarily associated to DivX, DVD and some other video formats (e.g. MKV) as external subtitle format. SRT files are text files used in video playback. Therefore, they do not contain any video data, but they include the time each subtitle should be displayed followed by the text of the subtitle.</p> <ul><li>Read More: </li> </ul><h2><span>3. SupRip Tutorial – Converting PGS .sup subtitles to .srt using SupRip </span></h2> <p>SupRip v1.16 Download (Windows ONLY, Mac users you can have a try with this app if you’re ripping Blu-ray to Mac, which lets you convert Blu-ray .sup subtitles straightly from Blu-ray Disc) Step 1. Start SupRip, load the SUP file with the “Open” button. <br><img src='https://i0.wp.com/best-tablet-converter.com/wp-content/uploads/2014/09/suprip.jpg' width="100%" loading=lazy loading=lazy> Step 2. Click “Auto-OCR” to automatically scan the whole file and leave any unknown characters alone. Step 3. Go to the SRT tab. <br><img src='https://i1.wp.com/best-tablet-converter.com/wp-content/uploads/2014/09/srt-tab.jpg' width="100%" loading=lazy loading=lazy> Step 4. Review the subtitles and statistics. Change some options there if you want. <br><img src='https://i1.wp.com/best-tablet-converter.com/wp-content/uploads/2014/09/subtitles-and-statistics.jpg' width="100%" loading=lazy loading=lazy> Step 5. Save the SRT file with the “Save” button. <br><img src='https://i1.wp.com/best-tablet-converter.com/wp-content/uploads/2014/09/save-srt-file.jpg' width="100%" loading=lazy loading=lazy><b>How to name multiple srt files so that the language shows to select: </b> 1. name the subtitles exactly as the video stream. E.g. 00033.m2ts-> 00033.srt 2. give an id to subtitles with different languages. E.g. name English subtitles xxx.en.srt and German subtitles xxx.de.srt <br><img src='https://i1.wp.com/best-tablet-converter.com/wp-content/uploads/2014/09/name-multiple-srt-files.jpg' width="100%" loading=lazy loading=lazy><b>What’s annoying </b> – there are lots of spelling mistakes and indistinguishable characters when Auto-OCR is used, and you have to proof and correct them one by one.</p> <p>Не нашли нужных субтитров в Сети? Не беда: их можно «вытащить» с диска DVD Video или Blu-ray. Но задействовать такие подстрочники в медиаконтейнерах невозможно. Поговорим сегодня о том, как сделать их совместимыми с большинством видеоформатов.<br><br> Сначала опишу задачу. Многие синефилы предпочитают смотреть фильмы на языке оригинала с субтитрами, даже если есть перевод. Причин тому несколько, но их обсуждение выходит за рамки статьи (скажу лишь, что я сам часто так делаю). Также для наших читателей не является секретом, что оптические носители постепенно уходят в прошлое. Те, у кого есть домашний медиасервер, или уже переводят свою киноколлекцию в бездисковый формат, или, по крайней мере, начали задумываться об этом. Чаще всего для домашнего хранилища используются файлы MKV.</p> <blockquote><p>Извлечение субтитров при помощи HD-DVD/Blu-Ray Stream Extractor. Можно вытащить из контейнера все потоки</p> </blockquote> <p>Для их создания есть много инструментов – например, HandBrake (handbrake.fr), который я недавно описывал в статье «Всеядный универсал» (см. UPgrade #15-16 (570-571)). Единственная действительно серьезная проблема, с которой сталкиваются те, кто самостоятельно делает рипы, – это добывание субтитров. Дело в том, что в DVD Video и Blu-ray обычно применяются т. н. пререндеренные субтитры – они представляют собой уже готовую картинку, которая просто накладывается на кадр (подробнее о типах подстрочников: ru.wikipedia.org/wiki/Субтитры).</p> <p>А вот в контейнеры Matroska можно «вшить» только текстовые (вообще-то есть способ поместить в файлы MKV и субтитры, «выдранные» с оптического диска, но делать это крайне не рекомендуется из-за проблем совместимости – многие плееры их просто не увидят). С другой стороны, поиск в интернете субтитров в текстовом виде (SRT / SMI) далеко не всегда дает нужный результат, особенно для изданий вроде «расширенная режиссерская версия» или, скажем так, не слишком популярных у обычного потребителя кинопродукции фильмов. Так что надо каким-то образом вытащить подстрочник с диска, перевести его в нужный формат, а потом скормить конвертеру.</p> <p><img src='https://i2.wp.com/upweek.ru/wp-content/uploads/2012/06/Subtitles_Pic-3.jpg' width="100%" loading=lazy loading=lazy></p> <p>На неискушенный взгляд задача сводится к обычному распознаванию текста. И действительно, если вы забьете в строку поиска Google фразу «FineReader Blu-ray», в первой же пятерке результатов обнаружится ссылка на достаточно подробную инструкцию на русском о том, как это сделать. Но, во-первых, придется привлекать коммерческое ПО, а во-вторых, процесс получается достаточно трудоемким. В общем, не наш выбор: минимизируем телодвижения и обойдемся бесплатным софтом.</p> <p>Сначала эти самые пререндеренные субтитры надо как-то получить. Конкретный способ зависит от исходного формата. Скажу лишь, что в любом случае потребуется копия диска с фильмом на винчестере. Но поскольку взлом защиты – противоправное действие, то от описания оного придется воздержаться. Думаю, любой желающий без труда найдет мануал в Сети.</p> <p>В случае с Blu-ray берем консольную утилиту eac3to (madshi.net/eac3to.zip). Можно, кстати, «прикрутить» к ней какую-нибудь графическую оболочку, коих существует довольно много. Лично мне приглянулась HD-DVD/Blu-Ray Stream Extractor (code.google.com/p/hdbrstreamextractor), которую я и рекомендую. Всего-то и нужно распаковать полученный архив в ту же директорию, где проживает eac3to, а затем запустить HdBrStreamExtractor.exe. Теперь следует нажать кнопку правее поля Input (всплывающая подсказка Select Input File(s)), выбрать самый объемный в папке STREAM файл с расширением *.m2ts, а затем указать директорию назначения в поле Output.</p> <p><img src='https://i0.wp.com/upweek.ru/wp-content/uploads/2012/06/Subtitles_Pic-4.jpg' width="100%" loading=lazy loading=lazy></p> <p>Осталось кликнуть по надписи Feature(s) и дождаться момента, когда программа завершит считывание контейнера. После этого в разделе Stream(s) появится список обнаруженных потоков. Хотите – вытаскивайте все, хотите – только субтитры: просто отметьте галкой то, что нужно извлечь, а потом запустите процесс кнопкой Extract.</p> <p>Через некоторое время (которое зависит главным образом от быстродействия ПК; на современных машинах экстракция субтитров с дисков Blu-Ray обычно занимает чуть больше часа) в папке с результатами работы окажутся файлы с расширением *.sup и малоинформативными названиями вида 1_7_subtitle (второй номер, в данном случае – 7, означает номер потока). Это и есть наши субтитры «в картинках», которые теперь надо распознать.</p> <p>Если речь идет о DVD Video, надо взять утилиту под названием VobSub Ripper Wizard от небезызвестного Gabest. Она входит в состав Gordian Knot и других пакетов аналогичного назначения. Впрочем, засорять винчестер ненужным софтом вовсе необязательно: VSRip проживает по адресу: sourceforge.net/projects/guliverkli/files/VSRip. Там находится архив ZIP, внутри которого – единственный экзешник. Интерфейс проги (которая, кстати, была выпущена в далеком 2003 году, но превосходно работает и в Windows 7 x64) примитивен.</p> <p>Первым делом надо открыть файл со служебной информацией (кнопка Load IFO…), который соответствует контейнерам, в которых хранится сам фильм. Определить, какой именно, достаточно легко: нужно зайти в папку VIDEO_TS и найти в ней любой файл VOB объемом 1 Гбайт.</p> <p>Предположим, он называется VTS_01_1 – тогда рипперу надо «скормить» VTS_01_1.IFO (другими словами, цифры в именах после набора символов «VTS_» должны совпадать). Что указывать в поле Save to… – догадайтесь сами (смайл). Далее жмем Next и на следующем этапе мастера отмечаем в списке Languages субтитры на нужных языках. Здесь важно, чтобы в колонке Vob/Cell IDs были выбраны все позиции – в противном случае субтитры будут извлечены с пропусками. Опять жмем Next и получаем на выходе два файла с одинаковыми именами и расширениями *.idx и *.sub. Они-то нам и нужны.</p> <p>Внутренняя структура субтитров, вытащенных из DVD Video и Blu-ray, различается. Для последних можно взять распознавалку SupRip (exar.ch/suprip), которая в целом со своей задачей справляется – хотя<br> и не могу сказать, что идеально. «Расшифровка» английского ей дается намного лучше, чем русского (но хотите – попробуйте, никто не запрещает). С «дивидишными» субтитрами она незнакома. Народ советует для них софтину SubRip (zuggy.wz.cz) – обратите, кстати, внимание: названия различаются всего на одну букву, но это разные программы.</p> <p><img src='https://i1.wp.com/upweek.ru/wp-content/uploads/2012/06/Subtitles_Pic-2.jpg' width="100%" loading=lazy loading=lazy></p> <p>Со второй у меня как-то не сложилось: я так и не смог подружить ее с 64-битной «семеркой». На кривизну рук ваш покорный слуга раньше не жаловался – хотя, конечно, всякое случается. Может, истина – как в известном телесериале – где-то рядом, но я ее обнаружить не сумел. Потом я перепробовал еще несколько похожих утилит, но ни с одной не нашел понимания. Пишу об этом только для того, чтобы вы не повторяли моих ошибок.</p> <p>Решение, причем универсальное, есть, и зовут его Subtitle Edit (www.nikse.dk/SubtitleEdit). Чем мне приглянулся этот редактор, так это тем, что он обучен распознавать пререндеренные субтитры обоих типов и не только. Распространяется как в виде архива, не требующего установки, так и в виде инсталлятора, по сути они ничем не отличаются. Интерфейс прекрасно русифицирован (Options > Choose Language), в наличии также имеется довольно подробная онлайновая справка на языке – уж простите за банальность – Пушкина и Достоевского. Для распознавания применяется оупенсорсный движок Tesseract OCR (code.google.com/p/tesseract-ocr).</p> <p>Однако, прежде чем программа станет способна работать с русскими сабами, надо кое-что сделать. Для начала идем на интернет-страничку указанного выше движка, в разделе загрузок ищем файл rus.traineddata.gz, скачиваем и кладем в папку Tesseract\tessdata в программной директории Subtitle Edit. Потом перезапускаем редактор, открываем меню «Орфография» > «Получение словарей…» и в выпадающем списке выбираем пункт с названием Russian Spelling, Hyphenation, Thesaurus, а потом жмем «Загрузить» (думаю, особых пояснений здесь не требуется). Вот теперь все готово.</p> <p>Для распознавания субтитров, полученных из DVD Video, используется пункт «Импорт/OCR VonSub (sub/idx) субтитров…» в меню «Файл», для аналогичной операции с сабами c оптических дисков, где хранится HD-видео, – «Импорт/OCR файла Blu-ray sup…».</p> <p>В первом случае вас попросят еще выбрать поток с требуемым языком (если их там несколько), во втором – будет сразу запущен мастер. Далее порядок действий не различается. В поле «Метод OCR» надо оставить пункт «OCR с помощью Tesseract», в поле «Язык» выбрать тот, который соответствует языку субтитров, а в списке «Коррекция OCR/Орфография» умная прога сама подберет подходящий вариант, если установлены соответствующие словари. Еще советую включить опцию «Запрос при неизвестных словах» – тогда вас будут просить вручную подкорректировать неизвестное модулю проверки орфографии слово.</p> <p>При некоторой тренировке на обработку русских сабов фильма длительностью 2 ч требуется минут 30-40. С английскими дело идет еще быстрее. Когда процесс будет завершен, текстовые субтитры надо записать на диск («Файл» > «Сохранить», в поле «Тип файла» следует оставить SubRip). Еще в Subtitle Edit есть очень полезная функция «Синхронизация», которая поможет вам пересчитать тайм-коды с одной частоты кадров на другую (пригодится, если вы хотите прикрутить сабы, полученные из DVD Video, к BD-рипу).</p> <p>По идее, после получения субтитров SRT их можно сразу инкапсулировать в контейнер. Но поскольку автоматическое распознавание весьма частенько ошибается, лучше подрихтовать их в каком-нибудь редакторе. Мне лично понравился бесплатный Srt Corrector. Но поскольку места, отведенного под статью, как всегда, не хватило, ищите его подробное описание в «Маленьких программах» в этом же номере UPgrade. UP</p> <p><b>Субтитрами </b> <b>субтитры </b> <b>субтитры </b> <b>Субтитры </b> отображаются в виде текста появляющегося в соответствующий момент в нижней части экрана при просмотре видео.</p><p><br> </span> <b>Субтитрами </b> называют текстовое сопровождение видео на языке оригинала или в переводе. В большинстве случаев <b>субтитры </b> дублируют слова произнесенные персонажами и некоторые звуки фильма. Иногда <b>субтитры </b> имеют поясняющий или дополняющий характер. <b>Субтитры </b> отображаются в виде текста появляющегося в соответствующий момент в нижней части экрана при просмотре видео. Одним из наиболее распространенных методов является применение <b>субтитров </b> в караоке. <b>Субтитры </b> просто необходимы для слабослышащих людей. Не секрет, что профессионализм дублеров иногда уступает профессионализму дублеров, а качество звука и перевода в дубляжах иногда оставляет желать лучшего, особенно в тех случаях когда дубляж покрывает полностью звуковую дорожку и большинство звуков(взрывы, звук двигателей автомобилей, смех людей) берется не из оригинальной звуковой дорожки, а из библиотеки звуков дублирующей группы. Поэтому для просмотра фильма с оригинальной звуковой дорожкой могут пригодиться <b>субтитры </b>. В оригинальной звуковой дорожке лучше передается атмосфера фильма и эмоции, мы слышим те интонации и те звуки, которые задумал режиссер фильма, а не директор дубляжа.</p> <p>Многим известен фильм режиссера Стэнли Кубрика «С широко закрытыми глазами(Eyes Wide Shut)», который в российском прокате шел без дубляжа и с <b>субтитрами </b>. Тем самым авторы фильма хотели добиться, чтобы зритель слышал именно мастерскую игру актеров, а не неизвестное качество дубляжа. <b>Субтитры </b> могут быть включены в видеоряд или наложены поверх изображения при просмотре фильма. <b>Субтитры </b>, которые наложены в момент кодирования видео называют встроенными, а если субтитры накладываются в реальном времени, то такие <b>субтитры </b> называются внешними. Внешние <b>субтитры </b> выглядят более качественно и при необходимости их можно отключить.</p> <p><b>Субтитры </b> могут быть представлены в виде отдельного файла с расширением соответствующем формату субтитров, либо включены в медиаконтейнер, например в MKV. В характеристиках каждого медиаплеера обязательно указываются форматы поддерживаемых <b>субтитров </b>. Существует множество форматов цифровых внешних <b>субтитров </b>, отображение которых возможно при просмотре фильмов на медиаплеерах. Именно о них мы расскажем ниже.</p> <p><b>SubRipper </b>(<b>SRT </b>) - это рабочий файл <b>субтитров </b> программы <b>SubRip </b>, которая является одной из самых популярных для извлечения субтитров из DVD. Данный формат является одним из самых распространенных и удобных для редактирования, отличается простотой и наглядностью, синхронизируется с видео на основе времени с точностью до микросекунд. Изначально не поддерживал элементов оформления текста, но в дальнейшем был расширен поддержкой цветов и начертаний символов (курсив, жирность текста).</p> <p><b>SAMI </b>(<b>Synchronized Accessible Media Interchange </b>, <b>SMI </b>) - это формат <b>субтитров </b> от Microsoft, основанный на SGML. Этот формат хорошо документирован и имеет сложную расширяемую структуру. Стандарт поддерживает изменение размера, цвета, гарнитуры и стиля шрифта, а также изменения положения на экране.</p> <p><b>SubViewer </b> и <b>Submagic </b>(<b>SUB </b>) - популярный в прошлом формат, предназначенный для проигрывания в программе Submagic. Ввиду распространения более новых форматов <b>субтитров </b> утрачивает свою актуальность. В файле <b>субтитров </b> могут быть указаны настройки шрифта.</p> <p><b>MicroDVD </b> (<b>MDV </b>, <b>SUB </b>, <b>TXT </b>) - это собственный формат плеера MicroDVD player. Он не имеет фиксированного расширения, обычно это txt, sub или mdv. В связи с тем, что MicroDVD Player долгое время оставался вне конкуренции среди плееров с поддержкой субтитров, а также благодаря подробной документации, поддержке изменяемого стиля, размера и положения шрифта, этот формат получил уважение среди пользователей. MicroDVD осуществляет синхронизацию по номеру кадра, в то время как большинство <b>субтитров </b> синхронизируются по времени. Поэтому при наложении таких <b>субтитров </b> на видео с измененной частотой кадров <b>субтитры </b> будут появляться не вовремя.</p> <p><b>SubStation Alpha </b> (<b>SSA </b>) - это рабочий файл <b>субтитров </b> программы SubStation Alpha, которая предназначена для подготовки, таймирования, и наложения <b>субтитров </b>. Здесь полностью поддерживается работа со всеми параметрами шрифта (цвет, размер, гарнитура и т.д.), размещение текста в любом месте экрана, комментарии. <b>SSA </b> позволяет применять сложные видеоэффекты в отношении символов (затенение, движение, повороты и т. д.). Множество полей определяет параметры каждой фразы, например специальное поле для определения произносящего данную фразу. Кроме текста можно вставлять картинки, звуки и даже маленькие видео фрагменты.</p> <p><b>Advanced SubStation Alpha </b>(<b>ASS </b>) - формат с неблагозвучным для знающих английский расширением является дальнейшим развитием SubStation Alpha. Расширенный формат содержит такие возможности, как использование векторной графики и подсветки текста в режиме караоке.</p> <p><b>IDX+SUB </b> - двоичный формат прорисованных графических <b>субтитров </b>, извлечённых из DVD.</p> <p><b>SUP </b> - двоичный формат графических <b>субтитров </b>, используемый в VOB-файлах DVD диска, а так же в Blue Ray дисках.</p> <p><b>Presentation Graphic Streams </b>(<b>PGS </b>) - сравнительно новый формат субтитров использующийся в Blue Ray дисках.</p> <p><b> Timed Text </b>(<b>TT </b>) - один из наиболее перспективных форматов <b>субтитров </b>, основанный на XML.</p> <p><b>Synchronized Multimedia Integration Language </b>(<b>SMIL </b>) - рекомендованный W3C язык разметки основанный на XML для описания мультимедийных презентаций так же получил распространение в применении к <b>субтитрам </b>. Правильное расширение файлов с субтитрами этого формата - *.smil, но иногда ошибочно делают расширение *.smi, которое соотвтетствует формату SAMI.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> </article> <div class="post-meta"> <div class="post-rating"> <div class="post-rating__title">Оценка статьи:</div> <div id="post-ratings-557" class="post-ratings" data-nonce="79f57c6f5f"><img id="rating_557_1" src="https://shr32.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="1 Звезда" title="1 Звезда" onmouseover="current_rating(557, 1, '1 Звезда');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" / loading=lazy loading=lazy><img id="rating_557_2" src="https://shr32.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="2 Звезды" title="2 Звезды" onmouseover="current_rating(557, 2, '2 Звезды');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" / loading=lazy loading=lazy><img id="rating_557_3" src="https://shr32.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="3 Звезды" title="3 Звезды" onmouseover="current_rating(557, 3, '3 Звезды');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" / loading=lazy loading=lazy><img id="rating_557_4" src="https://shr32.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="4 Звезды" title="4 Звезды" onmouseover="current_rating(557, 4, '4 Звезды');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" / loading=lazy loading=lazy><img id="rating_557_5" src="https://shr32.ru/wp-content/plugins/wp-postratings/images/stars/rating_off.gif" alt="5 Звезд" title="5 Звезд" onmouseover="current_rating(557, 5, '5 Звезд');" onmouseout="ratings_off(0, 0, 0);" onclick="rate_post();" onkeypress="rate_post();" style="cursor: pointer; border: 0px;" / loading=lazy loading=lazy> (Пока оценок нет)<br /><span class="post-ratings-text" id="ratings_557_text"></span></div> <div id="post-ratings-557-loading" class="post-ratings-loading"> <img src="https://shr32.ru/wp-content/plugins/wp-postratings/images/loading.gif" width="16" height="16" class="post-ratings-image" / loading=lazy loading=lazy> Загрузка...</div> </div> <div class="post-share"> <div class="post-share__title">Поделиться с друзьями:</div> <script type="text/javascript" src="//yastatic.net/share2/share.js" charset="utf-8" async="async"></script> <div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,gplus,twitter" data-counter=""></div> </div> </div> </div> <div class="yarpp-related"> <div class="yarpp-related__title">Статьи на похожую тему</div> <ul class="related"> <style> </style> <ul class="related-items"> <li><img src="/uploads/134ac526749f82b91745071a784f1dfd.jpg" width="150" height="95" / loading=lazy loading=lazy><a href="https://shr32.ru/ro/dental-disease/predydushchee-vidy-zvezd-v-nablyudaemoi-vselennoi-kosmos-zvezdy-vselennaya/">Tipuri de stele din universul observabil Universul stelelor spațiale</a></li> <li><img src="/uploads/177be3b12b07b339a4b22a9669a2e868.jpg" width="150" height="95" / loading=lazy loading=lazy><a href="https://shr32.ru/ro/prevention-and-care/vidy-iskusstva-drevnego-rima-izobrazitelnoe-iskusstvo/">Arta plastică a Romei antice</a></li> <li><img src="/uploads/bb89959a9e0dde5ac4cd70a44c460fc7.jpg" width="150" height="95" / loading=lazy loading=lazy><a href="https://shr32.ru/ro/complications/istoriya-iskusstva-drevnego-rima-dlya-detei-iskusstvo-rimskoi-respubliki/">Arta Republicii Romane</a></li> <li><img src="/uploads/3d5b59a2d26bf6fb886224d6c3ef92bf.jpg" width="150" height="95" / loading=lazy loading=lazy><a href="https://shr32.ru/ro/surgery/rasskaz-lyagushka-puteshestvennica-chitat-kratkoe-soderzhanie/">Enciclopedia personajelor de basm: Călător-broaște</a></li> </ul> </ul> </div> <aside class="comments-block"> <div id="disqus_thread"> </div> </aside> </main> </div> </div> <footer class="footer"> <div class="footer-copy">© 2024 Toate drepturile rezervate</div> <nav class="footer-nav"> <ul class="footer-nav__items"> <li class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://shr32.ru/ro/sitemap.xml">Harta site-ului</a></li> </ul> </nav> </footer> <div class="modal-hidden"> <div class="search-modal"> <div class="modal_close arcticmodal-close">Închide</div> <div class="search-title">Găsiți pe site</div> <div class="search-form"> <form method="get" action="/"> <input type="text" value="" name="s" placeholder="Cautare site" class="search-form__field"> <input type="submit" value="" class="search-form__button search-open"> </form> </div> <div class="search-example">De exemplu: <span>tipuri de gips-carton</span></div> </div> </div> <script type="text/javascript"> function dem_ready(e) { "use strict"; var t, n = ".democracy", i = e(n), o = ".dem-screen", a = ".dem-add-answer-txt", s = e(".dem-loader").first(), d = {}; i.length && (d.opts = i.first().data("opts"), d.ajaxurl = d.opts.ajax_url, d.answMaxHeight = d.opts.answs_max_height, d.speed = parseInt(d.opts.anim_speed), d.lineAnimSpeed = parseInt(d.opts.line_anim_speed), setTimeout(function() { var t = i.find(o).filter(":visible"), n = function() { t.each(function() { d.setHeight(e(this), 1) }) }; t.demInitActions(1), e(window).on("resize.demsetheight", n), e(window).load(n), d.maxAnswLimit(); var a = e(".dem-cache-screens"); a.length > 0 && a.demCacheInit() }, 10), e.fn.demInitActions = function(t) { return this.each(function() { var n = e(this), i = "data-dem-act"; n.find("[" + i + "]").each(function() { e(this).attr("href", ""), e(this).click(function(t) { t.preventDefault(), e(this).blur().demDoAction(e(this).attr(i)) }) }); var o = !!n.find("input[type=radio][data-dem-act=vote]").first().length; o && n.find(".dem-vote-button").hide(), d.setAnswsMaxHeight(n), d.lineAnimSpeed && n.find(".dem-fill").each(function() { var t = e(this); setTimeout(function() { t.animate({ width: t.data("width") }, d.lineAnimSpeed) }, d.speed, "linear") }), d.setHeight(n, t), n.find("form").submit(function(t) { t.preventDefault(); var n = e(this).find('input[name="dem_act"]').val(); n && e(this).demDoAction(e(this).find('input[name="dem_act"]').val()) }) }) }, e.fn.demSetLoader = function() { var e = this; return s.length ? e.closest(o).append(s.clone().css("display", "table")) : t = setTimeout(function() { d.demLoadingDots(e) }, 50), this }, e.fn.demUnsetLoader = function() { return s.length ? this.closest(o).find(".dem-loader").remove() : clearTimeout(t), this }, e.fn.demAddAnswer = function() { var t = this.first(), n = t.closest(o), i = n.find("[type=checkbox]").length > 0, s = e('<input type="text" class="' + a.replace(/\./, "") + '" value="">'); if (n.find(".dem-vote-button").show(), n.find("[type=radio]").each(function() { e(this).click(function() { t.fadeIn(300), e(a).remove() }), "radio" == e(this)[0].type && (this.checked = !1) }), t.hide().parent("li").append(s), s.hide().fadeIn(300).focus(), i) { var d = n.find(a); e('<span class="dem-add-answer-close">×</span>').insertBefore(d).css("line-height", d.outerHeight() + "px").click(function() { var t = e(this).parent("li"); t.find("input").remove(), t.find("a").fadeIn(300), e(this).remove() }) } return !1 }, e.fn.demCollectAnsw = function() { var t = this.closest("form"), n = t.find("[type=checkbox],[type=radio],[type=text]"), i = t.find(a).val(), o = [], s = n.filter("[type=checkbox]:checked"); if (s.length > 0) s.each(function() { o.push(e(this).val()) }); else { var d = n.filter("[type=radio]:checked"); d.length && o.push(d.val()) } return i && o.push(i), o = o.join("~"), o ? o : "" }, e.fn.demDoAction = function(t) { var i = this.first(), a = i.closest(n), s = { dem_pid: a.data("opts").pid, dem_act: t, action: "dem_ajax" }; return "undefined" == typeof s.dem_pid ? (console.log("Poll id is not defined!"), !1) : "vote" != t || (s.answer_ids = i.demCollectAnsw(), s.answer_ids) ? "delVoted" != t || confirm(i.data("confirm-text")) ? "newAnswer" == t ? (i.demAddAnswer(), !1) : (i.demSetLoader(), e.post(d.ajaxurl, s, function(e) { i.demUnsetLoader(), i.closest(o).html(e).demInitActions() }), !1) : !1 : (d.demShake(i), !1) }, e.fn.demCacheShowNotice = function(e) { var t = this.first(), n = t.find(".dem-youarevote").first(); return "blockForVisitor" == e && (t.find(".dem-revote-button").remove(), n = t.find(".dem-only-users").first()), t.prepend(n.show()), setTimeout(function() { n.slideUp("slow") }, 1e4), this }, d.cacheSetAnswrs = function(t, n) { var i = n.split(/,/); if (t.hasClass("voted")) { var o = t.find(".dem-answers"), a = o.data("voted-class"), s = o.data("voted-txt"); e.each(i, function(n, i) { t.find('[data-aid="' + i + '"]').addClass(a).attr("title", function() { return s + e(this).attr("title") }) }), t.find(".dem-vote-link").remove() } else { var d = t.find("[data-aid]"), r = t.find(".dem-voted-button"); e.each(i, function(e, t) { d.filter('[data-aid="' + t + '"]').find("input").prop("checked", "checked") }), d.find("input").prop("disabled", "disabled"), t.find(".dem-vote-button").remove(), r.length ? r.show() : (t.find('input[value="vote"]').remove(), t.find(".dem-revote-button-wrap").show()) } }, e.fn.demCacheInit = function() { return this.each(function() { var t = e(this), i = t.prev(n); if (i.length || (i = t.closest(n)), !i.length) return void console.log("Main dem div not found"); var a = i.find(o).first(), s = i.data("opts").pid, r = Cookies.get("demPoll_" + s), c = "notVote" == r ? !0 : !1, f = !("undefined" == typeof r || c), l = t.find(o + "-cache.vote").html(), h = t.find(o + "-cache.voted").html(); if (l) { var u = f && h; if (a.html((u ? h : l) + "").removeClass("vote voted").addClass(u ? "voted" : "vote"), f && d.cacheSetAnswrs(a, r), a.demInitActions(1), !c && !f && 1 == t.data("opt_logs")) { var m, p = function() { clearTimeout(m) }, v = function() { m = setTimeout(function() { if (!i.hasClass("checkAnswDone")) { i.addClass("checkAnswDone"); var t = i.find(".dem-link").first(); t.demSetLoader(), e.post(d.ajaxurl, { dem_pid: i.data("opts").pid, dem_act: "getVotedIds", action: "dem_ajax" }, function(e) { t.demUnsetLoader(), e && (a.html(h), d.cacheSetAnswrs(a, e), a.demInitActions(), a.demCacheShowNotice(e)) }) } }, 700) }; i.hover(v, p), i.click(v) } } }) }, d.detectRealHeight = function(e) { var t = e.clone().css({ height: "auto" }).insertBefore(e), n = "border-box" == t.css("box-sizing") ? parseInt(t.css("height")) : t.height(); return t.remove(), n }, d.setHeight = function(t, n) { var i = d.detectRealHeight(t); n ? t.css({ height: i }) : t.css({ opacity: 0 }).animate({ height: i }, d.speed, function() { e(this).animate({ opacity: 1 }, 1.5 * d.speed) }) }, d.setAnswsMaxHeight = function(t) { if ("-1" !== d.answMaxHeight && "0" !== d.answMaxHeight && d.answMaxHeight) { var n = t.find(".dem-vote, .dem-answers").first(), i = parseInt(d.answMaxHeight); n.css({ "max-height": "none", "overflow-y": "visible" }); var o = "border-box" == n.css("box-sizing") ? parseInt(n.css("height")) : n.height(), a = o - i; if (a > 100) { n.css("position", "relative"); var s, r = e('<span class="dem__collapser"><span class="arr"></span></span>').appendTo(n), c = function() { r.addClass("expanded").removeClass("collapsed") }, f = function() { r.addClass("collapsed").removeClass("expanded") }; t.data("expanded") ? c() : (f(), n.height(i).css("overflow-y", "hidden")), r.hover(function() { t.data("expanded") || (s = setTimeout(function() { r.trigger("click") }, 1e3)) }, function() { clearTimeout(s) }), r.click(function() { if (clearTimeout(s), t.data("expanded")) f(), t.data("expanded", !1), t.height("auto"), n.stop().css("overflow-y", "hidden").animate({ height: i }, d.speed, function() { d.setHeight(t, !0) }); else { c(); var e = d.detectRealHeight(n); e += 7, t.data("expanded", !0), t.height("auto"), n.stop().animate({ height: e }, d.speed, function() { d.setHeight(t, !0), n.css("overflow-y", "visible") }) } }) } } }, d.maxAnswLimit = function() { i.on("change", "[type=checkbox]", function() { var t = e(this).closest(n).data("opts").max_answs, i = e(this).closest(o).find("[type=checkbox]"), a = i.filter(":checked").length; a >= t ? i.filter(":not(:checked)").each(function() { e(this).prop("disabled", "disabled").closest("li").addClass("dem-disabled") }) : i.each(function() { e(this).removeProp("disabled").closest("li").removeClass("dem-disabled") }) }) }, d.demShake = function(e) { var t = e.css("position"); for (t && "static" !== t || e.css("position", "relative"), t = 1; 2 >= t; t++) e.animate({ left: -10 }, 50).animate({ left: 10 }, 100).animate({ left: 0 }, 50) }, d.demLoadingDots = function(e) { var n = e, i = n.is("input"), o = i ? n.val() : n.html(); "..." === o.substring(o.length - 3) ? i ? n[0].value = o.substring(0, o.length - 3) : n[0].innerHTML = o.substring(0, o.length - 3) : i ? n[0].value += "." : n[0].innerHTML += ".", t = setTimeout(function() { d.demLoadingDots(n) }, 200) }) }! function(e) { if ("function" == typeof define && define.amd) define(e); else if ("object" == typeof exports) module.exports = e(); else { var t = window.Cookies, n = window.Cookies = e(); n.noConflict = function() { return window.Cookies = t, n } } }(function() { function e() { for (var e = 0, t = {}; e < arguments.length; e++) { var n = arguments[e]; for (var i in n) t[i] = n[i] } return t } function t(n) { function i(t, o, a) { var s; if ("undefined" != typeof document) { if (arguments.length > 1) { if (a = e({ path: "/" }, i.defaults, a), "number" == typeof a.expires) { var d = new Date; d.setMilliseconds(d.getMilliseconds() + 864e5 * a.expires), a.expires = d } try { s = JSON.stringify(o), /^[\{ \[]/.test(s) && (o = s) } catch (r) {} return o = n.write ? n.write(o, t) : encodeURIComponent(String(o)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent), t = encodeURIComponent(String(t)), t = t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent), t = t.replace(/[\(\)]/g, escape), document.cookie = [t, "=", o, a.expires && "; expires=" + a.expires.toUTCString(), a.path && "; path=" + a.path, a.domain && "; domain=" + a.domain, a.secure ? "; secure" : ""].join("") } t || (s = {}); for (var c = document.cookie ? document.cookie.split("; ") : [], f = /(%[0-9A-Z]{ 2} )+/g, l = 0; l < c.length; l++) { var h = c[l].split("="), u = h[0].replace(f, decodeURIComponent), m = h.slice(1).join("="); '"' === m.charAt(0) && (m = m.slice(1, -1)); try { if (m = n.read ? n.read(m, u) : n(m, u) || m.replace(f, decodeURIComponent), this.json) try { m = JSON.parse(m) } catch (r) {} if (t === u) { s = m; break } t || (s[u] = m) } catch (r) {} } return s } } return i.set = i, i.get = function(e) { return i(e) }, i.getJSON = function() { return i.apply({ json: !0 }, [].slice.call(arguments)) }, i.defaults = {}, i.remove = function(t, n) { i(t, "", e(n, { expires: -1 })) }, i.withConverter = t, i } return t(function() {}) }); var demjquerywait = setInterval(function() { "undefined" != typeof jQuery && (clearInterval(demjquerywait), jQuery(document).ready(dem_ready)) }, 50); </script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=4.7.8'></script> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll": "1" }; /* ]]> */ </script> <script type='text/javascript' src='https://shr32.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='https://shr32.ru/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.84'></script> <script type='text/javascript' src='https://shr32.ru/wp-content/plugins/disqus-comment-system/media/js/disqus.js?ver=4.7.8'></script> <script type='text/javascript' src='https://shr32.ru/wp-content/plugins/disqus-comment-system/media/js/count.js?ver=4.7.8'></script> </div> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html>