Не совсем так. «Транслятор» и студия у нас в Уфе, но, поскольку, прямых эфиров нет, между студией и вещательным сервером никакой выделенной линии не требуется. Весь эфир — линейный и материалы заливаются заранее через обычный интернет.
Из Уфы в Казань сигнал идет уже сжатым в H.264/MP3 для кабельного оператора Татарстана, причем, даже не в FullHD, а в SD 720x576 (требование оператора). Если у ТТК падает связь — без картинки остаются абоненты только одного оператора (резерва нет), но пока такого, к счастью, не было.
Единственный кейс, когда все зрители оставались без эфира — во время профилактики после установки обновлений на Windows сервер не поднялся, пришлось ехать в ДЦ. После этого на всякий случай подключили удаленную консоль. Но все это было ночью в течение 1-2 часов.
По поводу хранения — на сервере установлено 3 физических диска без RAID, один под систему и два — под контент. Резервирование обеспечивается сторонним облачным сервисом. В случае сбоя, запустим аварийный плейлист и за несколько часов восстановим все материалы из облака.
Нет, не пробовали, изучу, спасибо! Какое-то время сидели на Wowza, где платили за количество одновременных зрителей, в какой-то момент стало рентабельней сделать свое решение :)
Что она делает: подгружает первые 3 секунды потока, с помощью фильтров накладывает «телеметрию», замеряет звук с помощью фильтра volumedetect, сохраняет два кадра в виде картинок: с телеметрией для отображения в Zabbix и без для последующего сравнения с кадрами несколько секунд назад и определения SSIM. В консоль команда выводит значение звука в dB:
Команда вызывается из незначительно доработанного Python скрипта использованного template'а (сорри за неаккуратность, делали для себя): pastebin.com/7jjw5wrC
Ну а дальше просто вручную создаем нужные элементы данных и триггеры, данные для которых возвращает py-скрипт:
Из тех картинок с телеметрией делаем вот такой красивый dashboard в Zabbix:
Насчет точек мониторинга — мониторим ту ссылку, которую раздаем операторам и сервисам, поток для сайта/приложения и финальный HLS-поток Яндекс.Эфира, который нам любезно предоставили :) Потоки, которые уходят по UDP Multicast мониторим только по количеству трафика. Если он падает ниже определенного значения — срабатывает триггер.
В нашем случае генерация происходит непосредственно на сервере в дата-центре. От нашего сервера до серверов кабельных операторов сигнал идет по локальной сети ДЦ по UDP Muticast, в MPEG-TS. За пересылку сигнала по локалке денег не берут, так что, решение вполне бюджетное.
Доставка между Уфой и Казанью, как я уже упомянул, идет по магистрали ТрансТелеком, мы арендуем канал в несколько мегабит. Ничего специально для этого настраивать не пришлось, отдаем MPEG-TS средствами SLStreamerPro на одну из сетевых карт, говорим сетевику ДЦ мультикаст-группу и порт и все, он отдает сигнал на магистраль :) Стоит это удовольствие несколько т.р.
На счет студии, камер и коммутатора — у нас все это не используется, есть студия, но она не участвует непосредственно в эфире, там происходит запись программ по расписанию.
Если будет какое-то количество желающих, могу написать об этой кухне в общем. Как говорится, ставим пальцы вверх :)
Спасибо за ответ! Только не совсем понял, что у вас является основной веткой, вроде master'а? От чего вы ответвляете релизные ветки и куда их потом сливаете? И как хотфиксы попадают во все релизные ветки, если их несколько?
Отличная статья, большое спасибо! Такой вопрос: а как у вас устроен репозиторий, а точнее ветки в них (release-branch, dev, master и т.д.), как происходит release management и тестирование? Заранее большое спасибо!
Информация
В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Не совсем так. «Транслятор» и студия у нас в Уфе, но, поскольку, прямых эфиров нет, между студией и вещательным сервером никакой выделенной линии не требуется. Весь эфир — линейный и материалы заливаются заранее через обычный интернет.
Из Уфы в Казань сигнал идет уже сжатым в H.264/MP3 для кабельного оператора Татарстана, причем, даже не в FullHD, а в SD 720x576 (требование оператора). Если у ТТК падает связь — без картинки остаются абоненты только одного оператора (резерва нет), но пока такого, к счастью, не было.
Единственный кейс, когда все зрители оставались без эфира — во время профилактики после установки обновлений на Windows сервер не поднялся, пришлось ехать в ДЦ. После этого на всякий случай подключили удаленную консоль. Но все это было ночью в течение 1-2 часов.
По поводу хранения — на сервере установлено 3 физических диска без RAID, один под систему и два — под контент. Резервирование обеспечивается сторонним облачным сервисом. В случае сбоя, запустим аварийный плейлист и за несколько часов восстановим все материалы из облака.
Для определения громкости и SSIM используем такую команду ffmpeg:
Что она делает: подгружает первые 3 секунды потока, с помощью фильтров накладывает «телеметрию», замеряет звук с помощью фильтра volumedetect, сохраняет два кадра в виде картинок: с телеметрией для отображения в Zabbix и без для последующего сравнения с кадрами несколько секунд назад и определения SSIM. В консоль команда выводит значение звука в dB:
Команда вызывается из незначительно доработанного Python скрипта использованного template'а (сорри за неаккуратность, делали для себя): pastebin.com/7jjw5wrC
Ну а дальше просто вручную создаем нужные элементы данных и триггеры, данные для которых возвращает py-скрипт:
Из тех картинок с телеметрией делаем вот такой красивый dashboard в Zabbix:
Насчет точек мониторинга — мониторим ту ссылку, которую раздаем операторам и сервисам, поток для сайта/приложения и финальный HLS-поток Яндекс.Эфира, который нам любезно предоставили :) Потоки, которые уходят по UDP Multicast мониторим только по количеству трафика. Если он падает ниже определенного значения — срабатывает триггер.
Завтра сяду и напишу развернутый комментарий :)
Были мысли попробовать SRT, но, к сожалению, nginx пока не поддерживает.
Доставка между Уфой и Казанью, как я уже упомянул, идет по магистрали ТрансТелеком, мы арендуем канал в несколько мегабит. Ничего специально для этого настраивать не пришлось, отдаем MPEG-TS средствами SLStreamerPro на одну из сетевых карт, говорим сетевику ДЦ мультикаст-группу и порт и все, он отдает сигнал на магистраль :) Стоит это удовольствие несколько т.р.
На счет студии, камер и коммутатора — у нас все это не используется, есть студия, но она не участвует непосредственно в эфире, там происходит запись программ по расписанию.
Если будет какое-то количество желающих, могу написать об этой кухне в общем. Как говорится, ставим пальцы вверх :)
Спасибо за ответ! Только не совсем понял, что у вас является основной веткой, вроде master'а? От чего вы ответвляете релизные ветки и куда их потом сливаете? И как хотфиксы попадают во все релизные ветки, если их несколько?