Как устроены онлайн-кинотеатры: техническая сторона

Во вто­ром сезоне под­ка­ста «Запуск зав­тра» был выпуск об онлайн-кинотеатрах:

В этой ста­тье — глав­ные мыс­ли из под­ка­ста для тех, кто не может слу­шать или хочет зафик­си­ро­вать главное. 

Герой — Миха­ил Жуков, тех­ни­че­ский дирек­тор сер­ви­са Okko. Это огром­ный рос­сий­ский онлайн-кинотеатр, кото­рый есть во мно­гих смарт-тв, в вебе и на мобиль­ни­ках. Что внутри: 

Как начи­на­ет­ся добав­ле­ние филь­ма на пло­щад­ку Okko

В каком фор­ма­те пере­да­ют­ся «сырые» фильмы

Где хра­нят­ся фай­лы фильмов

Как про­ис­хо­дит коди­ро­ва­ние? Что такое кодек?

Как обес­пе­чи­ва­ет­ся пере­клю­че­ние каче­ства фильма?

Как филь­мы защи­ща­ют от пират­ства? И про кон­фликт с Huawei

О раз­ном уровне защи­ты на раз­ных устройствах

Мож­но ли сло­мать защиту?

Как начинается добавление фильма на площадку Okko

Начи­на­ет­ся всё с под­пи­са­ния лицен­зи­он­но­го согла­ше­ния с пра­во­об­ла­да­те­лем. Мы запол­ня­ем мно­го тех­ни­че­ских опрос­ни­ков, нас дос­ко­наль­но изу­ча­ют: как и что мы дела­ем, наши про­цес­сы, насколь­ко мы без­опас­ны, защи­ще­ны и так далее.

Как толь­ко мы про­шли этот этап и дого­во­ри­лись по день­гам, с нами свя­зы­ва­ет­ся спе­ци­аль­ный отдел, кото­рый гото­вит кон­тент к циф­ро­во­му домаш­не­му про­смот­ру. Это не то же, что гото­вить к кино­по­ка­зу, там есть осо­бен­но­сти в зву­ке и видео. Они с нами свя­зы­ва­ют­ся, при­сы­ла­ют нам некие сэм­плы — обыч­но это десять минут. Мы на них смот­рим и про­бу­ем коди­ро­вать. Смот­рим, полу­ча­ет­ся у нас это или нет, есть ли у нас такая тех­ни­че­ская возможность. 

После того как мы гово­рим, что все окей, мы уста­нав­ли­ва­ем без­опас­ный транс­порт — то есть систе­му пере­да­чи фай­лов от сту­дии к нам на сер­ве­ра. Таких систем может быть несколько.

👉 От редак­ции: под сту­ди­ей здесь пони­ма­ет­ся ком­па­ния, кото­рая зани­ма­ет­ся дис­три­бу­ци­ей филь­мов, то есть их про­да­жей кино­те­ат­рам, во все­воз­мож­ные видео­про­ка­ты и на онлайн-площадки. В ката­ло­ге сту­дии может быть несколь­ко десят­ков, сотен, тысяч и десят­ков тысяч фильмов. 

Мож­но пред­ста­вить, что сту­дия — это опто­вик: у него есть мно­го това­ра, кото­рый он отгру­жа­ет конеч­ным про­дав­цам. Таких студий-оптовиков мно­го, есть поболь­ше и помень­ше, есть чисто рос­сий­ские, есть пред­ста­ви­тель­ства меж­ду­на­род­ных компаний. 

В каком формате передаются «сырые» фильмы

В меж­сту­дий­ном обмене обыч­но исполь­зу­ет­ся фор­мат MXF. Видео может быть пред­став­ле­но совсем в сыром виде, напри­мер, пере­да­ёт­ся каж­дый кадр. Это всё зажи­ма­ет­ся в код, кото­рый назы­ва­ет­ся PEG 2000 — счи­та­ет­ся, что он без потерь. Там нет ника­ко­го пото­ко­во­го видео­сжа­тия, про­сто лежит кадр за кадром. 

Такие фай­лы весят от 100 гига­байт до 1 тера­бай­та. Мы виде­ли фай­лы 1,5 ТБ — такое бывает.

Мы это к себе загру­жа­ем: у нас есть спе­ци­аль­ное хра­ни­ли­ще, в кото­ром лежат имен­но исход­ные вари­ан­ты фай­лов. Мы их очень бере­жём, пото­му что сама достав­ка, опе­ра­ция транс­фе­ра тоже сто­ит денег — мы долж­ны пла­тить за все эти услу­ги. Сама услу­га тако­го транс­фе­ра, если не счи­тать пла­ты за тра­фик, может сто­ить око­ло 500 долларов. 

От редакции: что значит «потоковое сжатие»

Любое видео — это после­до­ва­тель­ность кар­ти­нок с под­ло­жен­ной под неё ауди­о­до­рож­кой. Но если про­сто пере­да­вать эти кар­тин­ки, то видео­фай­лы будут огром­ны­ми. Что­бы их умень­шить, исполь­зу­ют раз­лич­ные алго­рит­мы сжатия.

Напри­мер, может быть такой алгоритм: 

  1. Если у нас видео со ско­ро­стью 25 кад­ров в секун­ду, мы назна­ча­ем опор­ным каж­дый 25-й кадр. Опор­ные кад­ры мы пере­да­ём полностью. 
  2. Все осталь­ные неопор­ные кад­ры мы ана­ли­зи­ру­ем: что в сле­ду­ю­щем кад­ре изме­ни­лось отно­си­тель­но преды­ду­ще­го. Если что-то изме­ни­лось, мы это коди­ру­ем и пере­да­ём. Если не изме­ни­лось, мы это не коди­ру­ем и не передаём. 
  3. Полу­ча­ет­ся, что меж­ду опор­ны­ми кад­ра­ми пере­да­ёт­ся толь­ко то, что изме­ни­лось. Этих дан­ных может быть мно­го, а может быть и мало. 

Напри­мер, если в филь­ме дол­го пока­зы­ва­ют кра­си­вый пей­заж, то такая сце­на будет весить мало, ведь в ней ниче­го осо­бо не про­ис­хо­дит. Зна­чит, нуж­но коди­ро­вать не так мно­го изме­не­ний и пере­да­вать не так мно­го дан­ных. Такая сце­на будет весить почти в 25 раз мень­ше, чем она же без сжатия. 

А если в сцене мно­го все­го про­ис­хо­дит, то нуж­но посто­ян­но коди­ро­вать эти изме­не­ния и пере­да­вать зри­те­лю. Спе­ци­аль­ный алго­ритм опре­де­ля­ет, какие изме­не­ния счи­тать изме­не­ни­я­ми, а какие — нет.

Где хранятся файлы фильмов

У нас два дата-центра: в Пите­ре и в Москве. Исход­ни­ки мы не зер­ка­ли­ру­ем, в этом нет необ­хо­ди­мо­сти, мы их хра­ним толь­ко в Пите­ре. Мы раз­ме­ща­ем­ся в цен­тре обра­бот­ки дан­ных, там высо­кая сте­пень надёж­но­сти (Tier3) и всё без­опас­но, туда про­ход сотруд­ни­кам по спе­ци­аль­ным про­пус­кам. Всё сек­рет­но и секьюрно.

Как происходит кодирование? Что такое кодек? 

Даль­ше в дело всту­па­ет систе­ма управ­ле­ния кон­тен­том. Нуж­но заве­сти запись в базе дан­ных, что это такой-то фильм, его снял такой-то режис­сёр, в нём игра­ют такие-то актёры.

У нас есть спе­ци­аль­ная фер­ма для тран­с­ко­ди­ро­ва­ния фай­лов, туда заво­дит­ся зада­ча: вот исход­ные фай­лы, их нуж­но ско­ди­ро­вать для таких-то выход­ных устройств. У фер­мы посто­ян­но идёт какой-то поток, она посто­ян­но всё коди­ру­ет — этот файл вста­ёт в оче­редь. Когда до него дохо­дит дело, фер­ма заби­ра­ет его к себе и там его транскодирует.

Что такое «тран­с­ко­ди­ру­ет»? Исход­ный файл, кото­рый мы ска­ча­ли у сту­дии, ни один мобиль­ный теле­фон, ни один теле­ви­зор нико­гда в жиз­ни не про­иг­ра­ет — он слиш­ком хорош для этих устройств. Для того что­бы это ста­ло воз­мож­ным, для того что­бы про­сто сам видео­ко­дек сло­жил­ся, кон­тей­нер был поня­тен, — для это­го нуж­но пре­об­ра­зо­вать этот кру­той файл в понят­ные для устройств видеофайлы. 

Кодек — это фор­мат сжа­тия для видео. Это такая инструк­ция, что нуж­но делать со вхо­дя­щим пото­ком дан­ных, что­бы его умень­шить. Но при этом когда деко­ди­ру­ю­щее устрой­ство его обрат­но раз­вер­нёт, оно смо­жет выве­сти на экран кар­тин­ку, и мы будем видеть как буд­то бы всё то же самое.

Как обеспечивается переключение качества фильма?

Кон­тент надо защи­тить от сете­вых помех. Если у чело­ве­ка, напри­мер, не очень хоро­шие сете­вые усло­вия — напри­мер, он смот­рит с мобиль­но­го теле­фо­на и у него ухуд­ши­лась сеть, — нуж­но пере­клю­чить­ся на более низ­кий уро­вень каче­ства ско­ди­ро­ван­но­го видео, что­бы потом, когда сеть вос­ста­но­вит­ся, опять мож­но было под­нять­ся на высо­кий уровень.

Поэто­му каж­дый видео­файл коди­ру­ет­ся не один раз, а 10–15 раз, под каж­дый шаг уров­ня каче­ства. Ско­ди­ро­ван­ные фай­лы скла­ды­ва­ют­ся в еди­ный кон­тей­нер, а потом отда­ют­ся по запро­су. Пле­ер сам адап­ти­ро­ван­но пере­клю­ча­ет­ся меж­ду уров­ня­ми каче­ства, при необ­хо­ди­мо­сти вклю­ча­ет более хит­рые про­то­ко­лы: не MP4, а MPEG DASH или HTTP Live Streaming (про­то­ко­лы для стри­мин­га видео через http. — Ред.).

При этом у нас есть соб­ствен­ная раз­ра­бот­ка, кото­рая поз­во­ля­ет не хра­нить все 10 вер­сий филь­ма, а при необ­хо­ди­мо­сти пре­об­ра­зо­вы­вать неко­то­рые вер­сии на лету. 

Как фильмы защищают от пиратства? И про конфликт с Huawei

Все фай­лы защи­ще­ны систе­мой DRM — Digital rights Management, управ­ле­ние циф­ро­вы­ми пра­ва­ми. Это систе­ма, кото­рая выда­ёт лицен­зии на про­смотр того или ино­го фай­ла на том или ином устройстве. 

При­чём ты можешь не толь­ко раз­ре­шать играть фильм, но можешь ещё и зада­вать пра­ви­ла, как этот фильм может играть­ся. Ты можешь гово­рить, что этот фильм может играть­ся 15 минут или что он может играть­ся толь­ко на устрой­ствах, кото­рые обес­пе­чи­ва­ют задан­ный уро­вень защи­щён­но­сти. Если устрой­ство сооб­ща­ет, что оно ниже уров­нем защи­щён­но­сти, что у него есть ана­ло­го­вые выхо­ды, напри­мер, с кото­рых кон­тент мож­но будет пере­хва­тить, то ты можешь запре­тить такое вос­про­из­ве­де­ние на таком устрой­стве, и тогда оно не будет играть.

Тех­ни­че­ски ты можешь ска­чать наш фильм и даже можешь выло­жить на обмен­ник. Но тот, кто его ска­ча­ет после тебя с это­го обмен­ни­ка, с ним ниче­го полез­но­го сде­лать не смо­жет, пото­му что этот файл зашифрован.

Что­бы рас­шиф­ро­вать и про­иг­рать файл, нуж­но схо­дить на спе­ци­аль­ный сер­вер лицен­зий. Этот адрес с это­го сер­ве­ра лицен­зий зашит в сам файл. Когда ты его вос­про­из­во­дишь, пле­ер видит эту ссы­лоч­ку лицен­зи­он­но­го сер­ве­ра и идёт на него про­сить лицен­зию. А там мы его встре­ча­ем и инте­ре­су­ем­ся: «А ты кто такой? Мы тебя не зна­ем, поэто­му мы тебе лицен­зию не дадим».

У нас боль­шой парк устройств: смарт­фо­ны, Smart TV и так далее. Все эти устрой­ства сей­час покры­ва­ют­ся тре­мя систе­ма­ми DRM. И если ты под­дер­жи­ва­ешь эти три, то ты покры­ва­ешь 99,9% всех устройств в мире. 

Сей­час, вслед­ствие того что Аме­ри­ка нало­жи­ла санк­ции на китай­скую ком­па­нию Huawei, им при­хо­дит­ся что-то с этим делать. Насколь­ко я знаю, они выво­дят свою систе­му DRM, для того что­бы не зави­сеть от аме­ри­кан­ско­го реше­ния Widevine, кото­рое у них сейчас.

О разном уровне защиты на разных устройствах

Не весь кон­тент сту­дии про­сят защи­щать оди­на­ко­во. Напри­мер, SD-версии — вер­сии стан­дарт­но­го раз­ре­ше­ния — мало кого интересуют.

Если речь идёт про какой-нибудь кон­тент 4К или 8К, его про­сят защи­щать очень серьёз­но. И там уже запре­ща­ет­ся исполь­зо­вать устрой­ства, кото­рые не могут обес­пе­чить желез­ный, хард­вар­ный уро­вень защиты.

Поэто­му, напри­мер, в бра­у­зе­ре фильм в каче­стве 4К, ско­рее все­го, не откро­ет­ся. Бра­у­зер обес­пе­чи­ва­ет уро­вень Widevine L3 — вос­про­из­ве­де­ние будет запре­ще­но, пото­му что там в какой-то момент видео­по­ток ока­зы­ва­ет­ся в памя­ти и тео­ре­ти­че­ски его мож­но отту­да достать.

Пра­во­об­ла­да­те­ли тоже по-разному к это­му отно­сят­ся и могут тре­бо­вать защи­ту силь­нее или слабее.

Можно ли сломать защиту?

Золо­тое пра­ви­ло крип­то­гра­фии — защи­та счи­та­ет­ся устой­чи­вой, если, для того что­бы её взло­мать, нуж­но потра­тить боль­ше уси­лий и боль­ше денег, чем сто­и­мость того, что ты защи­тил. Конеч­но, всё мож­но сло­мать так или иначе.

Про­сто «сгра­бить» поток с наше­го сер­ве­ра или на ком­пью­те­ре не полу­чит­ся. При­дёт­ся поста­рать­ся. Быва­ют вари­ан­ты, но с ними тоже борют­ся. В той же самой систе­ме DRM суще­ству­ет так назы­ва­е­мый black list — если какое-то устрой­ство было сло­ма­но или ском­про­ме­ти­ро­ва­но, то оно зано­сит­ся в туда, и таким девай­сам боль­ше не выда­ёт­ся лицен­зия. Это всё тоже регу­ли­ру­ет­ся и апдейтится.

Многое другое — в подкасте

В пол­ной вер­сии под­ка­ста — о пра­вах на фильм, рус­ской озвуч­ке и пере­во­де тек­ста пря­мо в кад­ре; о рас­пре­де­ле­нии пико­вых нагру­зок при транс­ля­ции фут­бо­ла; о CDN; сколь­ко сто­ят филь­мы и мож­но ли смот­реть кино вер­ти­каль­но. Слу­шай­те сего­дня, ведь запуск — зав­тра 🙂