Skip to content

DVR

Модуль Mcaster DVR записывает видеоархивы на диск и обеспечивает воспроизведение записанного контента. Эта функциональность позволяет пользователям приостанавливать прямые трансляции, перематывать к более ранним частям программ и получать доступ к архивному контенту предыдущих дней.

Обзор

Модуль DVR предоставляет комплексные возможности записи видео и управления архивами. Он поддерживает различные сценарии воспроизведения, включая:

  • Приостановку прямых трансляций для перерывов
  • Просмотр текущих программ с начала
  • Доступ к вчерашним программам
  • Закладки любимых программ для последующего просмотра

Ключевые возможности

  • Непрерывная запись: Автоматическое создание архивов с настраиваемыми периодами хранения
  • Множественные методы воспроизведения: Поддержка различных подходов timeshift
  • Интеграция с Middleware: Бесшовная интеграция с IPTV middleware системами
  • Гибкое хранилище: Настраиваемые места хранения и политики удержания
  • Поддержка Timeshift: Как относительные, так и абсолютные возможности timeshift

Базовая конфигурация

Простая настройка DVR

stream example_channel {
  input udp://239.0.0.1:1234;
  dvr /storage 7d;
}

Где: * /storage - путь к директории хранения (имя потока будет добавлено автоматически) * 7d - период удержания (7 дней)

Расширенная конфигурация DVR

stream premium_channel {
  input udp://239.0.0.1:1234;
  dvr /storage 30d;
}

Методы воспроизведения

Воспроизведение архива на основе EPG

Для middleware систем с точными расписаниями EPG используйте URL архива на основе EPG:

http://MCASTER-IP/STREAM_NAME/archive-START_TIME-DURATION.m3u8?event=true

Где: * START_TIME - время начала программы в UTC (Epoch time) * DURATION - продолжительность программы в секундах

Пример:

http://192.168.1.100/news_channel/archive-1717677139-2116.m3u8?event=true

Этот метод позволяет:

  • Перемотку внутри программы
  • Приостановку и возобновление
  • Быструю перемотку воспроизведения

Event плейлисты для живого контента

Для текущих трансляций используйте event плейлисты, которые автоматически переключаются из режима EVENT в VOD:

http://MCASTER-IP/STREAM_NAME/archive-START_TIME-DURATION.m3u8?event=true

Важные замечания:

  • Event плейлисты не поддерживают перемотку в нативном Safari
  • Требуют реализации собственного timeline кода на JavaScript для TV приложений
  • Автоматическое переключение между режимами EVENT и VOD

Возможности Timeshift

Относительный Timeshift

Создавайте отложенные потоки с фиксированными временными смещениями:

stream delayed_channel {
  input timeshift://original_channel/3600;
}

Это создает поток с задержкой в 1 час (3600 секунд).

Абсолютный Timeshift

Для персонализированного доступа timeshift используйте абсолютные URL timeshift:

Воспроизведение HLS:

http://MCASTER-IP/STREAM_NAME/timeshift_abs-TIMESTAMP.m3u8

Воспроизведение HTTP MPEG-TS:

http://MCASTER-IP/STREAM_NAME/timeshift_abs-TIMESTAMP.ts

Где TIMESTAMP - абсолютное время в UTC (Epoch time).

Обработка пробелов в архиве

Когда архив содержит пробелы (например, простои источника), используйте параметр ignore_gaps=true:

http://MCASTER-IP/STREAM_NAME/timeshift_abs-123123123.m3u8?ignore_gaps=true

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

Интеграция с Middleware

Метод EPG-VOD

Для воспроизведения архивного контента используйте URL на основе EPG:

http://MCASTER-IP/STREAM_NAME/archive-START_TIME-DURATION.m3u8?event=true

Требования к реализации:

  • Точное ведение расписания EPG
  • Обработка времени UTC (избегайте местного времени)
  • Хранение времени просмотра в базе данных middleware
  • Автоматическое переключение программ в конце воспроизведения

Метод Event плейлистов

Для текущих трансляций используйте event плейлисты с автоматическим переключением режимов:

http://MCASTER-IP/STREAM_NAME/archive-START_TIME-DURATION.m3u8?event=true

Ключевые особенности:

  • Автоматическое переключение EVENT в VOD
  • Функциональность приостановки и возобновления
  • Требуется реализация собственной кнопки "live"
  • Продолжение программ на основе EPG

Соображения масштабируемости

Ограничения Timeshift_abs

Метод timeshift_abs имеет значительные ограничения масштабируемости:

  • Управление сессиями: Flussonic использует вероятностное объединение сессий на основе IP клиента, имени канала, протокола и токена
  • Последовательные запросы: Множественные запросы timeshift_abs могут обрабатываться как одна сессия
  • Искажение просмотра: Может вызывать проблемы воспроизведения с множественными одновременными пользователями
  • Требования к токенам: Новые токены должны передаваться для каждого запроса timeshift_abs

Решения масштабирования

Для сценариев с большим количеством пользователей рассмотрите эти подходы:

Пропорциональные DVR серверы:

  • Развертывайте DVR серверы пропорционально количеству зрителей
  • Каждый сервер обрабатывает подмножество пользователей
  • Уменьшает конфликты сессий

Альтернативные методы:

  • Используйте относительный timeshift для популярного контента
  • Реализуйте управление timeshift на основе middleware
  • Рассмотрите интеграцию с CDN для распространения архивов

Управление хранилищем

Политики удержания

Настройте периоды удержания на основе типа контента и емкости хранилища:

stream news_channel {
  input udp://239.0.0.1:1234;
  dvr /storage 7d;  # удержание 7 дней
}

stream movies_channel {
  input udp://239.0.0.1:1234;
  dvr /storage 30d;  # удержание 30 дней
}

Оптимизация хранилища

  • Длительность сегмента: Баланс между гранулярностью поиска и эффективностью хранения
  • Сжатие: Используйте соответствующее сжатие видео для архивного хранения
  • Очистка: Реализуйте автоматическую очистку истекших архивов
  • Мониторинг: Отслеживайте использование хранилища и здоровье архивов

Мониторинг производительности

Ключевые метрики

  • Производительность записи: Мониторинг скорости создания архивов и надежности
  • Производительность воспроизведения: Отслеживание показателей успешности запросов timeshift
  • Использование хранилища: Мониторинг использования диска и эффективности очистки
  • Управление сессиями: Отслеживание конфликтов сессий timeshift_abs

Проверки состояния

  • Целостность архива: Проверка качества записанного контента
  • Доступность хранилища: Мониторинг дискового пространства и производительности I/O
  • Производительность сети: Отслеживание метрик доставки архивов
  • Частота ошибок: Мониторинг сбоев записи и воспроизведения

Устранение неполадок

Распространенные проблемы

  • Пробелы в архиве: Используйте параметр ignore_gaps=true или исследуйте проблемы источника
  • Конфликты сессий: Реализуйте правильное управление токенами для timeshift_abs
  • Полное хранилище: Мониторьте политики удержания и процессы очистки
  • Ошибки воспроизведения: Проверьте целостность архива и сетевое подключение

Инструменты отладки

  • Инспекция архива: Проверка записанного контента и временных меток
  • Логи сессий: Мониторинг управления сессиями timeshift
  • Анализ хранилища: Проверка использования диска и паттернов I/O
  • Сетевая диагностика: Проверка производительности доставки архивов