Как раздать защищённый контент при помощи nginx

Как мы уже рассказывали, сегодня один из основных методов потоковой доставки видео – это так называемый HTTP Dynamic Streaming (HDS), или “динамическое потоковое вещание по HTTP”, предложенный компанией Adobe. Заключается этот метод в разбивке медиафайла (или потока) на относительно небольшие файлы-фрагменты в определённом формате и затем отправке пользователю этих файлов по протоколу HTTP. Если у вас есть видеофайл в формате mp4, то вы можете (при помощи специального программного обеспечения) либо разбить его на такие файлы-фрагменты, либо, как мы описали в предыдущей статье, просмотреть файл, построить специальный индекс и затем изготавливать требуемые короткие фрагменты “на лету”, по запросу – это удобно тем, что не требует хранения большого количества мелких файлов.

В нашей предыдущей статье мы описали разработанный нами инструментарий, который можно использовать для этой цели.

Решение, предложенное нами, отлично служит нам и нашим заказчикам, однако у него есть недостаток: оно не поддерживает DRM. DRM (Digital Rights Management) – это средства защиты медиаконтента от несанкционированного доступа – просмотра, копирования и тому подобного. Если вам нужно защитить контент, и вы используете Adobe Flash, то очевидным решением для DRM является использование Flash Access – решения, предлагаемого компанией Adobe. Однако, как и многие подобные системы,  Flash Access совершенно не предназначен для использования с программами сторонних разработчиков – протокол закрыт; так что, если вы хотите использовать Adobe Flash Access, единственное, что вам остаётся – воспользоваться для подготовки контента также программным обеспечением Adobe.

Для подготовки таких файлов компания Adobe предлагает соответствующий (бесплатный, но, к сожалению, закрытый) пакет программ (http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/index.html). В пакет входит программа подготовки специального файла в формате F4F и нескольких небольших файлов, содержащих, в частности, индекс (для поиска в большом файле) и манифест для отправки пользователю. Формат всех этих файлов описан в документации Adobe. Воспрользовавшись File Packager, вы можете подготовить файл F4F с зашифрованным содержимым, для просмотра которого потребуется поддержка Adobe Flash Access.

Однако пользователю сам по себе файл F4F не нужен, ему нужны, как уже сказано, файлы-фрагменты. Как HTTP-сервер может получить нужный фрагмент по запросу пользователя? Если вы используете в качестве сервера Apache, то Adobe даёт вам для этого специальный модуль (как обычно, закрытый!); однако, если вы хотите воспользоваться nginx, то у вас проблема.

Мы оказались именно в такой ситуации – в наших проектах мы используем известный HTTP-сервер nginx. Он даёт нам нужное быстродействие, хорошо масштабируется и имеет ещё множество преимуществ. Поэтому нам ничего не оставалось, как разработать модуль nginx, который из имеющихся файлов F4F и F4X (это индекс)  будет способен изготовить файл фрагмента в формате HDS и отдать пользователю.

Модуль является открытым программным обеспечением, его исходный код доступен под лицензией GNU LGPL на GitHub – https://github.com/inventos/f4f-hds.

У нас есть похожие новости по этим темам:
Наверх

1 комментарий