Зрители хотят смотреть прямые трансляции, максимально близкие к реальному времени. Это помогает им приблизиться к событию, ощутить себя его полноценным участником. Вместе с этим зрители очень ценят, когда трансляцию можно перемотать назад, если пропустил какой-то важный момент.
DVR (Digital Video Recorder) — функция перемотки трансляции, которая позволяет посмотреть прямой эфир в повторе. Если зритель пропустил фразу в вебинаре, слайд в презентации, важное заявление со сцены мероприятия или ключевой момент в финале спортивного турнира, то к этому можно вернуться.
Далеко не все провайдеры способны обеспечивать стриминг с задержками менее 4 секунд. И ещё меньше предоставляют при этом DVR, так как функцию довольно сложно реализовать на трансляциях с низкими задержками.
А на стриминговой платформе EdgeЦентр DVR доступен всем клиентам по умолчанию и отлично работает при низких задержках и высоком качестве стрима. Недавно мы усовершенствовали эту функцию, и теперь прямой эфир можно перемотать назад на 24 часа и больше.
Хранение DVR требует довольно больших объёмов памяти. Это зависит от:
При этом пользователи хотят не просто иметь возможность перемотать эфир. Они хотят смотреть трансляции, максимально приближенные к реальному времени, с разных камер и в максимально высоком качестве. Значит, нужен качественный Low Latency Streaming (стриминг с низкими задержкам).
Технологии Low Latency позволяют делить видео не просто на сегменты, а на микросегменты в 0,1–0,5 секунды и доставлять его частями. Но эти микросегменты нужно эффективно кешировать ещё до того, как был передан полный фрагмент, при этом сохраняя функцию перемотки.
На эффективное кеширование требуется ещё больше памяти.
Хранение фрагментов видео и DVR обычно происходит в памяти сервера, чтобы контент можно было быстро отдать конечным пользователям. Но память серверов имеет свои ограничения. Поэтому сделать достаточно длинный DVR при низких задержках — действительно непростая задача.
Стандартное решение, которое обычно используется, — увеличивать объём памяти и количество дисков на серверах. На малых масштабах это работает неплохо. Однако с продолжительными трансляциями на миллионную аудиторию решение оказывается крайне неэффективным.
Кроме того, не все CDN поддерживают кеширование файлов до того, как они полностью скачаны с источника. То есть CDN сначала должна получить весь файл .ts или .m4v и только после этого может передать его в плеер на воспроизведение. Это не позволяет передавать и сразу воспроизводить микросегменты, а значит, увеличивает задержки.
Задача требовала другого, более эффективного решения. И мы его нашли.
В новой версии архитектуры для лайвстримов мы раздаём видео с помощью HTTP/2 или HTTP/1.1 Chunked Transfer Encoding. Это позволяет плееру скачивать очередной файл видеопотока ещё до того, как сервер закончил его создавать. При этом проходящие через сервер запросы GET и HEAD мы кешируем в оперативной памяти, но со специальным алгоритмом:
DVR на 24+ часа с задержками менее 4 секунд уже доступен по умолчанию для всех клиентов нашей стриминговой платформы. А если вы ещё не подключены к сервису, вы можете воспользоваться 14-дневным пробным периодом и самостоятельно протестировать наше решение с улучшенным функционалом.
Проводите масштабные трансляции на 10+ млн зрителей с нашей стриминговой платформой.