Документация Flussonic Media Server

Contents

Настройка DVR (Digital Video Recording)

Flussonic Media Server позволяет записывать потоки в архив и затем работать с архивом. Эта функциональность называется Digital Video Recording (DVR).

Настройки архива свои для каждого потока.

Замечание. Все настройки доступны в конфигурационном файле. Более быстрый способ - через веб-интерфейс (UI), там есть основные настройки.

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

Содержание:

Где можно хранить архив

Flussonic Media Server позволяет вести запись архива:

  • Локально на сервер Flussonic Media Server. См. далее на этой странице.

  • В массив дисков, которым программно управляет Flussonic.

  • В облачном HTTP хранилище (OpenStack Swift или Amazon S3). См. Хранение архива в облаке.

Настройка DVR в UI

После того, как вы добавили поток, можно настроить его запись и хранение.

Чтобы настроить DVR для потока:

  1. Откройте администраторский веб-интерфейс к Flussonic Media Server и перейдите в Media.
  2. В списке потоков под Streams перейдите в поток, щелкнув его имя, и перейдите на вкладку DVR.
  3. В настройках DVR для потока укажите:
  • Path (обязательное поле) – локальная директория, куда будет сохраняться поток. Например, /storage.

    На практике, удобно указать одну и ту же директорию для множества потоков. Flussonic создаст для каждого потока свою вложенную директорию, так что архивы будут храниться по-отдельности внутри указанной директории.
    См. Путь к архиву на диске.

    Важно. Если вы отредактируете настройки и измените путь к DVR, Flussonic не удалит ранее использованный каталог, так что старые записи останутся там. Вы можете удалить их вручную.

    Можно по мере записи копировать поток частями в другое место при помощи опции copy. Например:

    dvr /storage copy=/opt/movies;

  • Saved duration (опционально) – сколько последних часов (hour) или дней (days) хранить. Если указать 30 days, то запись старше 30 дней будет удаляться.

    Чтобы изменить единицу измерения, щелкните по ней. Доступные единицы - hours и days.

  • Allowed absolute disk usage (опционально) - максимальный объём потребляемого места на диске, по умолчанию в Гигабайтах. Например, 10 Gigabytes.

    Чтобы изменить единицу измерения, щелкните по ней. Доступные единицы - Kilobytes, Megabytes и Gigabytes.

    DVR настройки в UI

Дополнительно, можно настроить репликацию архива и кэширование на SSD.

Увидеть, что поток записывается, можно по индикатору в UI - напротив имени потока будет зелёный индикатор: DVR индикатор

Внимание! При переименовании потока его видеоархив удаляется.

Настройка DVR через файл

Чтобы начать запись архива, в файл /etc/flussonic/flussonic.conf добавьте параметр dvr для каждого потока, который необходимо записывать.

Пример:

stream channel1 {
  url tshttp://vlc:9090/;
  dvr /storage;
}

stream channel2 {
  url tshttp://vlc:9090/;
  dvr swift://user=office:max&password=secretpass&@prod1.local:8080/movies;
}

При таких настройках, поток channel1 сохраняется в /storage/channel1/, а поток channel2 в облачное хранилище Swift.

Важно. Если вы отредактируете настройки и измените путь к DVR, Flussonic не удалит ранее использованный каталог, так что старые записи останутся там. Вы можете удалить их вручную.

Размер архива

Размер архива можно ограничить при помощи опций:

  • 2d
    Глубина архива в днях (d) или часах (h). Примеры: 2d, 10h. Меньше двух часов указывать не рекомендуется.

  • 90%
    Максимальное допустимое заполнение диска в процентах. По умолчанию 95%. Не указывайте 100%, потому что полностью заполненный диск не будет, скорее всего, нормально работать.

    Внимание. Мы рекомендуем указывать одинаковое для всех потоков заполнение диска в процентах, например, для каждого 90%. Иначе возможны конфликты и потеря данных.

  • 10G
    Максимальное допустимое заполнение диска в килобайтах (K), мегабайтах (M) или гигабайтах (G). Пример: 10G. Можно рассчитать, что один мегабитный поток в день создает 10 гигабайт.

Запись по расписанию

  • schedule=8:00-16:00
    Опция schedule задает расписание для записи архива, в виде интервалов времени. Указывается UTC время в часах и опционально минутах, интервал может перехлёстываться через полночь: 22-1:30. Расписание может содержать несколько интервалов, разделенных запятой: 8:00-16:00,22-1:30.

Пример настройки DVR

stream channel0 {
  url tshttp://vlc:9090/;
  dvr /storage 6h 90% 10G schedule=8:00-16:00 replicate;
  cache /mount/ssd1 3d 50G;
}

Репликация архива

Если у вас несколько серверов Flussonic Media Servers, можно включить репликацию DVR с помощью опции Replication.

Важно! Включать репликацию нужно на сервере-рестримере. При этом должны быть указаны сервера-источники в настройках (Media > Origin servers).

По этой теме:

Чтобы включить репликацию в конфигурационном файле, добавьте опцию replicate:

stream channel0 {
  url tshttp://vlc:9090/;
  dvr /storage replicate;
}

Чтобы включить репликацию через веб-интерфейс:

  1. Перейдите в Media.
  2. В списке потоков под Streams щелкните имя потока и перейдите на вкладку DVR.
  3. Щелкните enabled под Replication и сохраните настройки (Save).

Кэширование архива на SSD

Кэширование архива на SSD ускоряет работу с ним - когда пользователи перематывают запись назад и вперёд, видео загружается очень быстро. Flussonic можно настроить, чтобы видео кэшировалось на SSD.

Важно! Для кэша DVR не используйте разделы SSD, смонтированные с опцией noatime.

Чтобы включить кэширование на SSD через веб-интерфейс:

  1. В Media, кликните имя потока под Streams, перейдите на вкладку DVR.
  2. Под SSD disk cache укажите:
  • Path - путь к директории на SSD диске где будет храниться кэшированная запись.
  • Также можно ограничить размер кэша (в гигабайтах) и время хранения записи в кэше (в днях).

Чтобы включить кэширование на SSD в файле, добавьте параметр cache:

stream channel0 {
  url tshttp://vlc:9090/;
  dvr /storage;
  cache /mount/ssd1 3d 50G;
}

Копирование потоков частями в другое место

Flussonic пишет потоки в указанное хранилище посегментно. Можно сделать так, чтобы данные накапливались во временной директории и копировались более крупными порциями в требуемое хранилище - на локальном диске или в облаке.

Как работает копирование

Копирование записанных данных происходит во время записи. Архив записывается в локальную директорию, и затем один раз в час запись копируется в указанное хранилище.

Чтобы копировать архив в облако:

В конфигурационном файле укажите параметр copy:

stream chan0 {
  dvr /storage copy=s3://AWS_ACCESS_ID:AWS_SECRET_KEY@s3.amazonaws.com/mybucket 10G;
}

Поток будет записываться в /storage и копироваться частями каждый час в S3.

Чтобы копировать архив в локальное хранилище:

stream chan0 {
  dvr /storage copy=/opt/movies 10G;
}

Поток будет записываться в /storage и копироваться частями каждый час в /opt/movies.

Путь к архиву на диске

Для каждого потока Flussonic создает директорию внутри той директории, которая указана в настройках архива как путь на диске. Имя новой директории совпадает с именем потока.

Напимер, укажем, что поток my_stream нужно записывать в /storage:

stream my_stream {
  url tshttp://vlc:9090/;
  dvr /storage;
}

Тогда архив потока будет храниться в /storage/my_stream.

Запрет индексирования

Эта настройка актуальна только для сервисов с UGC (User-generated content):

  • Если на сервере множество потоков, публикуемых пользователями, и нужно удалять старые данные.
  • Если требуется постоянно хранить архивы всех таких потоков.

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

Если же вам требуется постоянно хранить архивы со всей записью, индексирование не имеет смысла.

Чтобы запретить индексирование DVR, используйте параметр no_index:

live mylive {
  dvr /storage no_index;
}

Если DVR в облаке (S3, Swift), то при конфигурации с запретом индексирования разные серверы Flussonic смогут вести запись в одно хранилище (при миграции потока с одного сервера на другой).