LiveStreamInput (LSI)¶
Обзор¶
LiveStreamInput (LSI) — это модуль в составе mcaster, который реализует управление источниками сигналов и автоматическое переключение между основным и резервными источниками. Модуль обеспечивает высокую надежность вещания за счет автоматического переключения при проблемах с основным источником.
Принцип работы¶
Автоматическое переключение¶
LSI автоматически переключается между источниками при следующих условиях: - Отсутствие кадров на основном источнике - Проблемы с качеством сигнала - Технические сбои оборудования
Проверка резервных источников¶
В процессе работы основного источника LSI регулярно выполняет проверочные подключения к вторичным источникам для обеспечения готовности резерва к работе.
Совместимость источников¶
LSI проверяет совместимость основного и резервных источников по: - Кодекам - Аудиодорожкам - Параметрам потока - Другим характеристикам для бесшовного переключения
Конфигурация¶
Базовая настройка¶
stream Reg_1010_01_Kanal_ENC {
input copy://Reg_1010_01_Kanal_sdi1;
input copy://Reg_1010_01_Kanal_sdi2;
title "01 ПЕРВЫЙ КАНАЛ";
source_timeout 1;
}
Параметры конфигурации¶
Параметр | Описание | Обязательный | Пример |
---|---|---|---|
input |
Источник видеосигнала | Да | copy://Reg_1010_01_Kanal_sdi1 |
title |
Название потока | Нет | "01 ПЕРВЫЙ КАНАЛ" |
source_timeout |
Таймаут переключения (секунды) | Нет | 1 |
Расширенная конфигурация¶
stream Main_Channel {
input copy://primary_source source_timeout=10;
input copy://backup_source_1;
input copy://backup_source_2;
title "Основной канал";
source_timeout 2;
}
Мониторинг через HTTP API¶
Основные методы API¶
streams_list
— список всех потоковstream_get
— детальная информация о потоке
Ключевые параметры stats¶
Переподключения и переключения¶
{
"stats": {
"input": {
"retries": 15, // Количество переподключений
"input_switches": 3, // Количество переключений между источниками
"num_sec_on_primary_input": 86400, // Время работы на основном источнике
"num_sec_on_secondary_input": 3600 // Время работы на резервном источнике
}
}
}
Состояние резервных источников¶
{
"stats": {
"input": {
"valid_secondary_inputs": 2, // Количество рабочих резервных источников
"invalid_secondary_inputs": 1, // Количество сбойных резервных источников
"divergent_inputs": 0 // Количество несовместимых источников
}
}
}
Интерпретация параметров мониторинга¶
Переподключения (stats.input.retries
)¶
- Нормальное значение: 0-5 переподключений в день
- Проблемное значение: >10 переподключений в день
- Действие: При высоком количестве переподключений необходимо проверить стабильность источника
Переключения (stats.input.input_switches
)¶
- Нормальное значение: 0-2 переключения в день
- Проблемное значение: >5 переключений в день
- Действие: Частые переключения указывают на проблемы с основным источником
Время работы на источниках¶
Сравнение параметров num_sec_on_primary_input
и num_sec_on_secondary_input
показывает:
- Эффективность резервирования — сколько времени система работала на резерве
- Качество основного источника — частота использования резерва
- Потенциальный простой без автоматического переключения
Состояние резервных источников¶
Рабочие резервы (stats.input.valid_secondary_inputs
)¶
- Нормальное значение: >0 (есть рабочий резерв)
- Критическое значение: 0 (нет рабочих резервов)
- Действие: При значении 0 немедленно требуется ремонт резервных источников
Сбойные резервы (stats.input.invalid_secondary_inputs
)¶
- Нормальное значение: 0-1
- Проблемное значение: >2
- Действие: Рассмотреть удаление или снижение платы за нестабильные источники
Несовместимые источники (stats.input.divergent_inputs
)¶
- Нормальное значение: 0
- Проблемное значение: >0
- Риск: При аварии возможны нарушения проигрывания вплоть до зависания телевизоров
- Действие: Привести источники к единому формату
Примеры мониторинга¶
Проверка состояния потока¶
# Получение списка потоков
curl -X GET "http://localhost:8080/api/streams_list"
# Получение детальной информации о потоке
curl -X GET "http://localhost:8080/api/stream_get?name=Reg_1010_01_Kanal_ENC"
Скрипт мониторинга¶
#!/bin/bash
# Проверка количества переподключений
retries=$(curl -s "http://localhost:8080/api/stream_get?name=Reg_1010_01_Kanal_ENC" | jq '.stats.input.retries')
if [ $retries -gt 10 ]; then
echo "WARNING: High number of retries: $retries"
fi
# Проверка наличия резервных источников
valid_backups=$(curl -s "http://localhost:8080/api/stream_get?name=Reg_1010_01_Kanal_ENC" | jq '.stats.input.valid_secondary_inputs')
if [ $valid_backups -eq 0 ]; then
echo "CRITICAL: No valid backup sources available"
fi
Устранение неполадок¶
Частые переподключения¶
- Проверьте стабильность основного источника
- Увеличьте source_timeout для снижения чувствительности
- Проверьте сетевые настройки между mcaster и источником
- Мониторьте логи модуля LSI
Отсутствие резервных источников¶
- Проверьте доступность резервных источников
- Убедитесь в правильности конфигурации
- Проверьте сетевую связность
- Восстановите резервные источники
Несовместимость источников¶
- Приведите источники к единому формату
- Проверьте кодеки и параметры
- Убедитесь в совпадении аудиодорожек
- Настройте единые параметры потока
Рекомендации по настройке¶
Оптимальные значения source_timeout¶
- Стабильные источники: 1-2 секунды
- Нестабильные источники: 3-5 секунд
- Спутниковые источники: 5-10 секунд
Количество резервных источников¶
- Минимум: 1 резервный источник
- Рекомендуется: 2-3 резервных источника
- Максимум: 5 резервных источников (для избежания сложности)
Мониторинг и алерты¶
alerts:
- condition: "stats.input.valid_secondary_inputs == 0"
severity: "critical"
message: "No backup sources available"
- condition: "stats.input.retries > 10"
severity: "warning"
message: "High number of reconnections"
- condition: "stats.input.divergent_inputs > 0"
severity: "warning"
message: "Incompatible sources detected"
Заключение¶
LiveStreamInput (LSI) обеспечивает высокую надежность вещания за счет автоматического переключения между источниками. Правильная настройка и мониторинг модуля позволяют минимизировать простой сервиса и обеспечить стабильное вещание даже при проблемах с основным источником сигнала.