понедельник, 23 ноября 2015 г.

Запись видео (DVR) в Nimble Streamer

Запись потоков -  это один из основных сценариев в рамках живого вещания, поскольку необходимость посмотреть запись после окончания передачи, или переключаться между частями показа по ходу вещания, существует всегда. Nimble Streamer предоставляет отличные возможности для создания живых трансляций и их перепаковки из RTSP, RTMP, MPEG-TS, Icecast и SHOUTcast в любой поддерживаемый формат, такой как HLS, MPEG-DASH, RTMP, RTSP и MPEG-TS. 

Следующий шаг в развитии этой функциональности - это запись живых потоков - процесс, известный также как Digital Video Recording, или DVR.

Текущие возможности DVR в Nimble Streamer:
Далее вы узнаете, как можно воспользоваться этими возможностями в вашей инфраструктуре.


1. Настройка сценариев вещания


В данной статье предполагается, что вы уже установили Nimble Streamer. Если нет, воспользуйтесь инструкцией, чтобы установить экземпляр на свой сервер или десктоп. Если у вас старая версия сервера - сделайте апгрейд.

Статьи с примерами установки различных сценариев:


Если все эти сценарии запущены и работают, вы можете начать настройку DVR.

2. Настройка DVR


Перейдите в меню "Nimble Streamer" -> "Live streams settings", чтобы открыть страницу установки. Затем щелкните по кнопке "DVR", чтобы открыть параметры.


Вкладка с настройками DVR
Здесь вы видите список настроек. В нашем случае что-то уже установлено, а в вашем случае откроется пустой список. Нажмите кнопку "Add DVR setting", чтобы начать установку.




Диалог настройки DVR
Ниже даны параметры, которые мы можете задавать.

  • Application - это название приложения, которое используется в течение трансляции. Какое бы название приложения вы ни использовали в настройках трансляции в разделе 1, оно должно быть указано здесь.
  • Stream name может быть использовано для записи некоторых специфических потоков. Если название не определено, будут записаны все потоки, каждый по своему отдельному пути сохранения записей. 
  • Recording path - это местоположение хранилища, которое вы намереваетесь использовать. Это должен быть путь в файловой системе. Если вы не определите этот параметр, будет использован путь кеша Nimble Streamer по умолчанию.
  • Loop recording duration - это максимальное временное окно, в рамках которого будет сохранен контент. Так, если вы укажете один час, начнете трансляцию, а ваш поток будет длиться 1 час и 10 минут, первые десять минут записи будут стерты, чтобы сохранить последние десять минут. Эта продолжительность больше зависит от возможностей вашего хранилища. Если вы не определите длительность, тогда Nimble будет записывать столько, сколько позволит место в указанном расположении.
  • Maximum size работает также, как и Loop recording duration, с той разницей, что ограничивающим фактором для стирания старых записей будет размер архива, а не время.
  • Read-only позволяет использовать презаписанные архивы, а также упростить запись фиксированных эпизодов. В этом режиме можно проигрывать записи, однако запись архива идти не будет. В этой статье вы можете узнать больше.
Следующие параметры содержатся в расширенных установках. Мы подготовим отдельную статью, описывающую расширенные возможности процесса записи.

  • Segment duration  - это длительность сегмента, используемого для хранения медиа.
  • Thread name и priority используются для разделения процесса записи между несколькими тредами.
В примере выше мы используем наше мобильное приложение Larix Broadcaster, чтобы передать поток RTSP в демонстрационный экземпляр Nimble, и настроили запись соответствующим образом. Мы определили только имя приложения, потому что имя потока определялось по усмотрению видео-оператора.

Добавление из списка потоков


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

ABR-потоки


Записи ABR-потоков (с изменяемым битрейтом) настраиваются таким же образом, как и потоки с постоянным битрейтом. Настраивая DVR, вам необходимо определить ABR-приложение и дополнительное имя потока, чтобы настроить запись DVR. Далее вы можете воспроизвести записанный поток тем же способом, что и потоки с постоянным битрейтом.

Рассмотрим в деталях процесс воспроизведения записей.

3. Запись и воспроизведение в DVR


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

Каждая новая сессия записи потока будет дописана в его существующее местоположение. Так вы можете начать, остановить, возобновить входящий поток несколько раз и Nimble Streamer запишет контент как единую сессию. Понятно, что вся запись будет воспроизведена как один исходящий поток.

Чтобы просмотреть все существующие DVR-потоки, войдите в меню "Nimble Streamer" -> "DVR streams", откройте список DVR-потоков, как показано ниже.

Список DVR-потоков.

Как видите, у нас есть два видео-оператора и у каждого свое отдельное имя потока. Значит, каждый поток записывается отдельно. У каждого свой собственный сервер и имя, путь и текущий размер записи, общая длительность и другие параметры медиа. Также у вас имеется возможность удалить неиспользуемые записи.

Далее для каждого потока вы можете кликнуть на иконку вопроса, чтобы открыть диалог для проигрывания записи.

Окно с примером проигрывания DVR.
В этом окне вы можете скопировать URL исходящего DVR-потока для дальнейшего использования в вашем плеере или приложении. Это также позволит вам просмотреть DVR-потоки в выбранных плеерах, чтобы увидеть, что именно было записано, перед тем как распространять ссылку.

В целом, если  название вашей трансляции выглядит как
http://yourhost/live/stream/playlist.m3u8
то URL вашего DVR-потока  будет выглядеть так
http://yourhost/live/stream/playlist_dvr.m3u8
Потоки ABR работают таким же образом.
URL у ABR-потока:
http://yourhost/live_abr/stream/playlist.m3u8
URL у DVR этого же потока:
http://yourhost/live_abr/stream/playlist_dvr.m3u8
Его можно использовать в любом плеере HLS.

То же будет в случае с MPEG-DASH.
Ваш поток с названием вида
http://yourhost/live/stream/manifest.mpd
будет доступен как
http://yourhost/live/stream/manifest_dvr.mpd

Пожалуйста, обратите внимание, что также вы можете управлять DVR через API, чтобы автоматизировать потоковую инфраструктуру.

С DVR связано еще несколько особенностей, и статьи на эту тему скоро появятся. Свяжитесь с нами, если у вас есть какие-либо отзывы или пожелания на данную тему.

Сопуствующая документация


5 комментариев:

  1. Не понятно какие потоки (кодеки) поддерживает DVR.
    На вход подаю MPEG2-TS поток - пишется звук в формате *.m4a видео нет

    ОтветитьУдалить
    Ответы
    1. Нимбл поддерживает кодеки H.264/AAC. Формат хранения не предполагает, что вы будете играть файлы напрямую - это делается через Нимбл, в статье как раз описаны в конце форматы URL-ов для воспроизведения.
      Если у вас появится конкретная проблема воспроизведения - пишите вопросы на https://ru.wmspanel.com/help

      Удалить
  2. Этот комментарий был удален администратором блога.

    ОтветитьУдалить
  3. Здравствуйте. Подскажите про диапазон записи. Как его можно получить? не нашел этого в документации.

    ОтветитьУдалить
    Ответы
    1. Добрый день,

      Моно посмотеть здесь: http://blog.wmspanel.com/2015/11/dvr-time-range-fragments-epg.html

      Удалить