Double Publish¶
Double Publish - это подход, при котором оригинальный источник сигнала отправляет поток сразу на два стримера. При этом стримеры настроены так, чтобы ретрансляторы всегда могли получить одинаковое видео с любого из них.
Как работает Double Publish¶
Оригинальный источник сигнала отправляет поток сразу на два стримера. При этом второй стример одновременно:
- принимает поток напрямую от источника;
- забирает поток с первого стримера;
- использует поток с первого стримера как приоритетный.
Это нужно для того, чтобы на обоих стримерах сохранялись одинаковые таймстемпы, одинаковая структура видео и одинаковое представление потока для дальнейшей публикации.
flowchart LR
source["Original source"] -- publish --> streamerA["Streamer A"]
source -- publish --> streamerB["Streamer B"]
streamerA --> streamerB
streamerA --> relayA["ретрансляторы / downstream"]
streamerB --> relayB["ретрансляторы / downstream"]
Пока поток с первого стримера доступен, именно он является приоритетным источником для второго стримера. Если поток с первого стримера прерывается, второй стример немедленно переключается на собственный прямой прием от оригинального источника и продолжает публикацию без ожидания ручного вмешательства.
Когда применять¶
Double Publish рекомендуется использовать, если:
- источник может сразу отправлять сигнал на два стримера;
- нужно получить одинаковый поток на двух publish-стримерах;
- downstream-ретрансляторы должны иметь возможность брать видео с любого из стримеров;
- важно обеспечить быстрое переключение без расхождения по таймстемпам и структуре видео.
Такой режим особенно удобен при работе с программными энкодерами. Для OBS, vMix и аналогичных программ Double Publish является стандартной и естественной конфигурацией, поскольку источник изначально умеет отправлять поток сразу на несколько адресов.
Что дает этот сценарий¶
Преимущества Double Publish:
- отказоустойчивая публикация с двух стримеров;
- синхронизация структуры видео и таймстемпов между стримерами;
- немедленное переключение на публикацию со второго стримера при отказе потока с первого;
- возможность для последующих ретрансляторов брать видео с любого стримера без различий в содержимом потока.
Ограничения и требования¶
При проектировании Double Publish важно учитывать:
- источник должен поддерживать одновременную отправку потока на два стримера;
- второй стример должен уметь одновременно держать прямой прием и прием с первого стримера;
- необходимо корректно задать приоритет потока с первого стримера;
- требуется мониторинг момента переключения со связанного потока на прямой прием;
- downstream-ретрансляторы должны быть готовы подключаться к любому из двух стримеров.