Установка ПО для конвертации видео

Документ актуален для InstantVideo любой версии

Подготовка системы - сервера и InstantVideo состоит из множества шагов, мы расскажем обо всем, что необходимо для полноценного функционирования в целом.

Первый шаг: установка ПО для конвертации

Мы будем описывать функционирование на базе операционной системы Debian 6, возможно данное справочное руководство будет актуально и для других операционных систем как данного семейства, так и для других дистрибутивов Linux.

Для правильной работы конвертации необходимо: Ffmpeg версии не ниже 0.7, а так же любая из программ для внесения мета-информации Yamdi, Flvtool2 или Qt-faststart.

  Мета-данные необходимы для индексирования файла. В свою очередь индекс, который размещается в начале видео файла, нужен для того, чтобы можно было в еще не скачанном (не буферизированном) файле при перемотке перемещаться по индексам, таким образом воспроизводить файл с любого места не дожидаясь его полной загрузки. Обратите внимание! Для контейнера MP4 подходит только  Qt-faststart.

В Debian 6 "из коробки" версия Ffmpeg устаревшая, поэтому идем на сайт deb-multimedia и добавляем любой из приведенных там репозиториев, согласно версии Debian, в  /etc/apt/sources.list, например:

deb http://www.deb-multimedia.org squeeze main non-free

Обновляем список пакетов с учетом нового репозитория:

apt-get update

После чего устанавливаем пакет deb-multimedia-keyring, соглашаясь с установкой неподписанного пакета:

apt-get install deb-multimedia-keyring

Устанавливаем Ffmpeg:

apt-get install ffmpeg

После установки Ffmpeg переходим к установке других необходимых программ.

Устанавливаем  Yamdi:

apt-get install yamdi

Устанавливаем  Flvtool2:

apt-get install flvtool2

На этом установка необходимого ПО для конвертации закончена.

Второй шаг: псевдостримминг

Для псевдостримминга необходима двухуровневая конфигурация веб-сервера, Nginx + Apache. Этот вопрос достаточно широко освещен в интернете, например здесь, здесь или здесь, кроме этого, особенности данной связки можно почитать например тут.

Устанавливать необходимо последнюю версию NGINX, подключив репозиторий отсюда. Там же есть подробная инструкция по установке.

В данной связке важна настройка Nginx в контексте InstantVideo. Необходимо понимать:

  • псевдостримминг работает только, если после конвертации над файлом происходит обработка программой для внесения мета-информации, см. выше;
  • если в Nginx подключены модули псевдостримминга, mp4 и flv;
  • конфигурация Nginx правильно настроена.

Примерная конфигурация Nginx для основного сайта, если вы не используете мультисерверность:

Для InstantVideo 1.X:

location ~/upload/video/view/.*.mp4$ {
        root /var/www/site.ru; # корневая директория вашего сайта
        mp4; # включаем модуль псевдостримминга mp4 файлов
        internal; # говорим, что эти файлы внутренние и недоступны по прямой ссылке
}
location ~/upload/video/view/.*.flv$ {
        root /var/www/site.ru;
        flv;
        internal;
}

Для InstantVideo 2.X:

location ~/upload/video/storage/.*.mp4$ {
        root /var/www/site.ru;
        mp4;
        internal;
}
location ~/upload/video/storage/.*.flv$ {
        root /var/www/site.ru;
        flv;
        internal;
}

Директивой internal вы исключаете возможность хотлинкования. Не забываете в настройках провайдера Localhost включать антихотлинк, а тип стримминга указывать "Nginx (x-accel-redirect)".

Для защиты сегментов HLS необходимо создать вот такой локейшн NGINX (если вы выбрали конвертировать в HLS формат в админке):

location ~/upload/video/storage/.*.ts$ {
        secure_link $arg_hash,$arg_e;
        secure_link_md5 "ivideosecret$secure_link_expires$uri$remote_addr";
        if ($secure_link = "") { return 403; }
        if ($secure_link = 0) { return 410; }
        root /var/www/site.ru;
}

Примерная конфигурация Nginx для InstantMedia Server

location ~/storages/storage2/.*.mp4$ {
        root /var/www/cdn1.site.ru;
        mp4;
        internal;
}
location ~/storages/storage2/.*.flv$ {
        root /var/www/cdn1.site.ru;
        flv;
        internal;
}

Обратите внимание! Для каждой директории хранения нужно добавлять правила или же исправить регулярное выражение в блоке локейшн.

Директивы mp4 и flv подключают модули псевдостримминга для Nginx. В начале убедитесь, что Nginx у вас собран/установлен с поддержкой данных модулей. Для этого введите в консоли nginx -V и проверьте, что строки "--with-http_mp4_module" и "--with-http_flv_module" присутствуют.