40
Как передавать видео по интернету Макс Лапшин [email protected] Monday, April 2, 12

Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

  • Upload
    ontico

  • View
    1.058

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Как передавать видеопо интернету

Макс Лапшин[email protected]

Monday, April 2, 12

Page 2: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Резюме

Сегодня уникальная ситуация:

• один аудиокодек

• один видеокодек

• один транспортный контейнер (почти один)

Monday, April 2, 12

Page 3: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Экскурс в историю ТВ

• Аналоговая передача была удобной• Никакой компрессии, никаких задержек• Рисуем синхронно с сигналом

• Вещатель управляет клиентом

Monday, April 2, 12

Page 4: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Потом появилось IPTV

• Решения не поменялись• Multicast UDP / DVB-S MPEG-TS пакеты

• Constant bitrate

• Всё почти как в аналоге• И тормозные CMS-ки на Java по 100 тыс Евро

Monday, April 2, 12

Page 5: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

С constant bitrate хорошо

• Время и трафик друг в друга конвертируются одной формулой• Перемотка элементарна• Нагрузка на сеть постоянна• Просто качество ужасное и трафик кошмарный

Monday, April 2, 12

Page 6: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Вдруг появился интернет

• Только «у них» это называется OTT — Over The Top

• А в нём потери пакетов и jitter

• UDP не работает, мультикаста вообще нет

• TCP заменители UDP тоже не ахти

Monday, April 2, 12

Page 7: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Пришли HLS/H.264/AAC

• Доставка кусков MPEG-TS потока по HTTP

• С задержкой видео. Ну и пусть, люди уже привыкли.

• Кодеки тоже подоспели: H.264 экономит деньги.

Monday, April 2, 12

Page 8: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Всё в рамках MPEG

• Инженеры IPTV рады.

• Им лишь бы кровавый энтерпрайз со стандартами.

• Ведь у многих из них «HTTP пакеты бьются, надо чексуммы проверять».

Monday, April 2, 12

Page 9: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Что творилось в интернете?

В отличие от IPTV:

• Совершенно другой мир• Денег мало и их умеют считать• Умеют программировать• Понимают, как это работает

Monday, April 2, 12

Page 10: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Напрограммировали от души

• RTSP

• PNA

• MMS

• RTMP

Monday, April 2, 12

Page 11: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Общая родовая травма

Сервер управляет клиентом и равномерно во времени шлет кадры

Monday, April 2, 12

Page 12: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Общая родовая травма

Получается два плеера:

• один на клиенте равномерно проигрывает кадры от сервера

• второй на сервере равномерно шлет кадры

Их слишком сложно синхронизировать

Monday, April 2, 12

Page 13: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Тупиковый подход

• стриминговые TCP протоколы не масштабируются

• слишком дороги в обслуживании

• мало чего могут• все плохо работают

Monday, April 2, 12

Page 14: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Не-HTTP доставкане работает

Monday, April 2, 12

Page 15: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Динозавры пытаются выжить

• Adobe выпускает HDS. Но убивает флеш.

• Microsoft выпускает SmoothStreaming. Но убивает Silverlight.

Monday, April 2, 12

Page 16: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Другие динозавры сдохли

• Quicktime Player

• RealPlayer

• MMS проигрыватели

а вместе с ними и серверы, вещающие туда

Monday, April 2, 12

Page 17: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Альтернативные кодеки

• MPEG-2 и MPEG-4 уже перестали тухнуть и дурно пахнуть

• VP8 — обман и лицемерство по поводу patent-free

Monday, April 2, 12

Page 18: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Сухой остаток

• HLS/H.264/AAC

• небольшой временный атавизм в виде HDS для флеша

Monday, April 2, 12

Page 19: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Причины изменений

Monday, April 2, 12

Page 20: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Равномерность кадров

• Клиент равномерно во времени засовывает кадры в железо

• Энкодер равномерно во времени сжимает кадры в поток

• Между ними рвущийся, тормозной, лагающий интернет• И ещё микроволновка возле WiFi точки

Monday, April 2, 12

Page 21: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

UDP

• UDP передает данные с маленькой задержкой и с маленьким jitter

• В изолированной сети вроде даже работает• Но в интернете нет• И нет мультикаста

• Слишком велика плата за потери кадров в H.264

Monday, April 2, 12

Page 22: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

TCP

• Одно решили, другое поломали• Потерь данных нет, зато есть jitter

• Для компенсации jitter-а придумали буфер клиента

• Для компенсации буфера придумали prepush

• Оптимизация перемотки в рамках prepush буфера

• А ещё мультибитрейт

Monday, April 2, 12

Page 23: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

TCP (RTMP, RTSP)

Всё это глючит и тормозити не проходит через файрволы

Monday, April 2, 12

Page 24: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Не-HTTP доставка контентане работает

Monday, April 2, 12

Page 25: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Решение 30-летних проблем

Пускай клиент сам решает что смотреть

Monday, April 2, 12

Page 26: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

HTTP Streaming

• Сервер рассказывает клиенту о доступных вариантах контента• Клиент скачивает чанки видео как обычные мегабайтные файлы• Если время скачивания чанка больше его длительности, значит интегральной скорости сети не хватает

• Если чанков в очереди много, значит сеть хорошая

Monday, April 2, 12

Page 27: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

HTTP Streaming

• Позволил перейти от ненадежных моментальных замеров качества к надежным интегральным

• Во много раз удешевил «кластеризацию»: обычный HTTP-кеш даёт эффект близкий к мультикасту

• Раздача файлов по HTTP. Просто как топор.

Monday, April 2, 12

Page 28: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

HLS уже работает

• в компьютерах• в современных мобильных устройствах• в телевизионных приставках (Set-top-box)

• в телевизорах• в кровавом энтерпрайзе

Monday, April 2, 12

Page 29: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Трансляция прямого эфира

HLS + H.264 + AAC

временно немножко HDS для флеша

Monday, April 2, 12

Page 30: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Раздача файлов

• Быстрый старт проигрывания• Дешевая по трафику перемотка• Мультибитрейт

Monday, April 2, 12

Page 31: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Кровавый энтерпрайз

• Раньше была RTSP раздача файлов

• Constant bitrate, много трафика, сложно и дорого (Kasenna)

• Всё это глючит и тормозит

Monday, April 2, 12

Page 32: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Кровавый энтерпрайз

• Битрейт растет• Растет доля OTT

• Старые технологии становятся слишком дорогими и нерабочими

• А деньги даже там терять не любят

Monday, April 2, 12

Page 33: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Всё идет к

HLS + H.264 + AAC

Monday, April 2, 12

Page 34: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Интернет

• Тут люди привыкли деньги считать и думать• Долго жил flv + mod_flv

• До 30 мегабайт — годно

• Нет мультибитрейта, дорогая по трафику перемотка

Monday, April 2, 12

Page 35: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Всё идет к

HLS + H.264 + AAC

Monday, April 2, 12

Page 36: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Практика

• Ютуб перешел на HTTP стриминг для контента

• Apple запрещает показывать видео не по HLS

• В 2011 проекты выходили уже с HTTP стримингом

• Adobe не развивает RTMP доставку

Monday, April 2, 12

Page 37: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Почему же так?

• Кусочно-фрагментированная доставка видеопотока решает все указанные проблемы

• Хранение файла в виде чанков позволяет осуществить раздачу через nginx

Monday, April 2, 12

Page 38: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Какие минусы у HLS/H.264/AAC

• Родовая травма HLS в виде MPEG-TS

• Связанность соседних чанков (continuity counters)

• Большие накладные расходы (15-25%)

• Временное отсутствие спектра инструментов

Monday, April 2, 12

Page 39: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Резюме

• Старые технологии эфирного ТВ в IPTV отмирают

• Старые технологии live в интернете отмирают

• Старые технологии раздачи файлов отмирают• Всё концентрируется на связке HLS + H.264 + AAC

Monday, April 2, 12

Page 40: Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)

Вопросы?

Макс Лапшин

[email protected]

Monday, April 2, 12