Как мы уже рассказывали, сегодня один из основных методов потоковой доставки видео – это так называемый 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.
А поподробнее где можете рассказать, интересует сам процесс создания манифеста. Есть информация вот здесь http://help.adobe.com/en_US/HTTPStreaming/1.0/Using/WS9463dbe8dbe45c4c-c126f3b1260533756d-7ffc.html#WSee12cc6c68864889-4d2515521284670a5bb-8000 но не понятно как обойтись без сервера лицензирования (шифрования)?