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
- Сетевая диагностика: Проверка производительности доставки архивов