Slide 1

Slide 1 text

Доставка live-video на Go Илья Щербак i.shcherbak@corp.vk.com

Slide 2

Slide 2 text

Принципиальная схема Live

Slide 3

Slide 3 text

Реальная схема Live

Slide 4

Slide 4 text

Контейнер выполняет функцию оркестрации медиа Хранит метаинформацию 
 о файле Про контейнеры Указывает плееру 
 где находятся 
 нужные фреймы Хранит информацию 
 по таймингу 1 2 3 4

Slide 5

Slide 5 text

Какие бывают контейнеры ▪ MP4 ▪ MPEG-TS ▪ OGG ▪ FLV ▪ Matroska

Slide 6

Slide 6 text

Транспортные медиа протоколы ▪ RTP/SRTP ▪ RTMP ▪ HLS ▪ MPEG-DASH ▪ HDS

Slide 7

Slide 7 text

RTMP ▪ Плохой дизайн протокола ▪ Спецификация не соответствует реализации Flash Player ▪ Индивидуальный поток для каждого пользователя ▪ Очень плохо кешируется ▪ RTMP всё

Slide 8

Slide 8 text

HLS ▪ Хорошо кэшируется ▪ Быстро раздается ▪ Хорошо подходит для broadcast ▪ Поддерживается на многих платформах ▪ Рабочий адаптивный стриминг

Slide 9

Slide 9 text

Как выглядит транспорт RTMP HLS

Slide 10

Slide 10 text

Добавляем транскодер Mediaserver Transcoder Transcoder RTMP HLS

Slide 11

Slide 11 text

Why Go is a good choice? ▪ SMP ▪ Channels ▪ C-style code ▪ Native back-pressure ▪ Easy build and deploy ▪ Easy to learn

Slide 12

Slide 12 text

Links ▪ https://github.com/VKCOM/kive – наш медиа сервер ▪ https://github.com/VKCOM/joy4 – библиотека для работы с media ▪ https://www.ffmpeg.org/ – ffmpeg ▪ https://vk.com/video-147415323_456239030 – доклад про транскодинг и отладку