Транскодинг лайв-видео. Отладка проблем при разработке

На первой встрече VK Tech Talks | Backend старший разработчик Команды backend Илья Щербак рассказал о транскодинге (преобразовании цифровых данных из одного формата в другой) лайв-видео и отладке проблем при разработке. Приводим его выступление от первого лица.

Транскодинг лайв-видео. Отладка проблем при разработке, image #1

О чём будем говорить?

Транскодинг лайв-видео. Отладка проблем при разработке, image #2

Сегодня мы поговорим о том, что такое лайв-трансляция, для чего нужен и как устроен транскодинг и многое другое, но главная тема доклада — простота. Простота в разработке, простота в отладке.

Live-трансляции

Вот так выглядит схема любой live-трансляции
Вот так выглядит схема любой live-трансляции

Это схема в принципе любой трансляции, будь то ТВ или Интернет. У нас есть источник сигнала, точка подключения, и, собственно, сами зрители.

Вот так выглядит схема трансляции сына маминой подруги
Вот так выглядит схема трансляции сына маминой подруги

Эта схема гораздо сложнее. На самом деле, из неё мы можем выкинуть всё, кроме стримера, медиасервера и зрителя. Без медиасервера трансляция работать не будет, потому что именно медиасервер из входящего потока делает много исходящих потоков, которые раздаёт всем зрителям. Кэши, edge'и и приёмники служат лишь для оптимизации нагрузки.

Что же такое лайвы?

Транскодинг лайв-видео. Отладка проблем при разработке, image #5

Какие же ассоциации возникают у нас, когда мы слышим слово «видео»? Мы слышим такие слова, как «кодек», «контейнер», «транспорт видео», о чём это вообще? Что такое кодек, зачем он нужен? Казалось бы, есть видео, его можно просто взять и передать. Теоретически можно, но тогда…

Транскодинг лайв-видео. Отладка проблем при разработке, image #6

…одна секунда видео будет занимать большой объём данных. Если мы захотим передать это по сети, мы не пролезем совсем. Поэтому нужно сжимать данные, чтобы они стали приемлемыми по размеру.

Какие бывают кодеки?

Транскодинг лайв-видео. Отладка проблем при разработке, image #7

Кодеки бывают разные: устаревшие/не устаревшие, перспективные и не очень, бывают для аудио, бывают для видео. Сегодня мы поговорим про кодек H264.

Контейнеры

Транскодинг лайв-видео. Отладка проблем при разработке, image #8

Контейнеры тоже бывают разные — они служат для разных целей, для разных задач. Зачем же нужен контейнер, когда у нас есть кодек? Если кодек у нас про то, как данные представлены, то контейнер сообщает, где эти самые данные лежат. Они также выполняют роль оркестрации дорожек, то есть они проигрывают аудиодорожку и видеокадры, связывают это в единое целое.

Транскодинг лайв-видео. Отладка проблем при разработке, image #9

Контейнеры тоже бывают разные и служат для решения разных задач.

Транспортные медиа-протоколы

Транскодинг лайв-видео. Отладка проблем при разработке, image #10

Транспортные протоколы нам нужны, когда мы хотим кому-то передать наше видео, это уже непосредственно касается live-стриминга. Сегодня мы подробно остановимся на двух протоколах — RTMP и HLS.

Транскодинг лайв-видео. Отладка проблем при разработке, image #11

RTMP — протокол, разработанный компанией Adobe, сейчас уже не поддерживается, применяется только для передачи от стримера к медиасерверам ВКонтакте (и это хорошо! Он плох во всём, для чего он сделан).

Транскодинг лайв-видео. Отладка проблем при разработке, image #12

HLS — хороший протокол. Главное его преимущество — рабочая модель адаптивного стриминга.

Транскодинг лайв-видео. Отладка проблем при разработке, image #13
Транскодинг лайв-видео. Отладка проблем при разработке, image #14

Казалось бы, в чём проблема? Берём и попросту рассылаем трансляцию. Но это не работает.

Транскодинг лайв-видео. Отладка проблем при разработке, image #15

Иногда у пользователей слишком низкая скорость, а студия вещает в высоком качестве. Также иногда стримеры шлют неподдерживаемый поток, то есть они покупают не то оборудование, с которым трансляция на стороне клиента падает.

Транскодинг лайв-видео. Отладка проблем при разработке, image #16
Транскодинг лайв-видео. Отладка проблем при разработке, image #17
Транскодинг лайв-видео. Отладка проблем при разработке, image #18
1 of 3

Мы добавляем транскодер, который преобразует поток для нормального воспроизведения.

Дебаг

Транскодинг лайв-видео. Отладка проблем при разработке, image #19

При дебаге мы сначала оставляем только reciever и sender. Если видео испорченное — дебажим транспортную часть от главного процессора к транскодеру. Затем производим проверку checksum.

Транскодинг лайв-видео. Отладка проблем при разработке, image #20

Если видим ошибки — исправляем. Всё просто.

И, напоследок, немного советов и полезных инструментов.

Транскодинг лайв-видео. Отладка проблем при разработке, image #21
Транскодинг лайв-видео. Отладка проблем при разработке, image #22
1 of 2

Конец.

Видеотрансляцию выступления можно посмотреть ниже.

Презентация в PDF.

The Brown Room
независимое интернет-издание о социальных сетях

Автор: Ярослава Троицкая
Корректор: Арсений Метелёв

247 views·4 shares