Окончательное решение вопроса трансляции видео в интернете (Макс Лапшин)
1. Как передавать видео
по интернету
Макс Лапшин
max@erlyvideo.org
Monday, April 2, 12
2. Резюме
Сегодня уникальная ситуация:
• один аудиокодек
• один видеокодек
• один транспортный контейнер (почти один)
Monday, April 2, 12
3. Экскурс в историю ТВ
• Аналоговая передача была удобной
• Никакой компрессии, никаких задержек
• Рисуем синхронно с сигналом
• Вещатель управляет клиентом
Monday, April 2, 12
4. Потом появилось IPTV
• Решения не поменялись
• Multicast UDP / DVB-S MPEG-TS пакеты
• Constant bitrate
• Всё почти как в аналоге
• И тормозные CMS-ки на Java по 100 тыс Евро
Monday, April 2, 12
5. С constant bitrate хорошо
• Время и трафик друг в друга конвертируются одной формулой
• Перемотка элементарна
• Нагрузка на сеть постоянна
• Просто качество ужасное и трафик кошмарный
Monday, April 2, 12
6. Вдруг появился интернет
• Только «у них» это называется OTT — Over The Top
• А в нём потери пакетов и jitter
• UDP не работает, мультикаста вообще нет
• TCP заменители UDP тоже не ахти
Monday, April 2, 12
7. Пришли HLS/H.264/AAC
• Доставка кусков MPEG-TS потока по HTTP
• С задержкой видео. Ну и пусть, люди уже привыкли.
• Кодеки тоже подоспели: H.264 экономит деньги.
Monday, April 2, 12
8. Всё в рамках MPEG
• Инженеры IPTV рады.
• Им лишь бы кровавый энтерпрайз со стандартами.
• Ведь у многих из них «HTTP пакеты бьются, надо чексуммы
проверять».
Monday, April 2, 12
9. Что творилось в интернете?
В отличие от IPTV:
• Совершенно другой мир
• Денег мало и их умеют считать
• Умеют программировать
• Понимают, как это работает
Monday, April 2, 12
11. Общая родовая травма
Сервер управляет клиентом и равномерно во времени шлет кадры
Monday, April 2, 12
12. Общая родовая травма
Получается два плеера:
• один на клиенте равномерно проигрывает кадры от сервера
• второй на сервере равномерно шлет кадры
Их слишком сложно синхронизировать
Monday, April 2, 12
13. Тупиковый подход
• стриминговые TCP протоколы не масштабируются
• слишком дороги в обслуживании
• мало чего могут
• все плохо работают
Monday, April 2, 12
15. Динозавры пытаются выжить
• Adobe выпускает HDS. Но убивает флеш.
• Microsoft выпускает SmoothStreaming. Но убивает Silverlight.
Monday, April 2, 12
16. Другие динозавры сдохли
• Quicktime Player
• RealPlayer
• MMS проигрыватели
а вместе с ними и серверы, вещающие туда
Monday, April 2, 12
17. Альтернативные кодеки
• MPEG-2 и MPEG-4 уже перестали тухнуть и дурно пахнуть
• VP8 — обман и лицемерство по поводу patent-free
Monday, April 2, 12
18. Сухой остаток
• HLS/H.264/AAC
• небольшой временный атавизм в виде HDS для флеша
Monday, April 2, 12
20. Равномерность кадров
• Клиент равномерно во времени засовывает кадры в железо
• Энкодер равномерно во времени сжимает кадры в поток
• Между ними рвущийся, тормозной, лагающий интернет
• И ещё микроволновка возле WiFi точки
Monday, April 2, 12
21. UDP
• UDP передает данные с маленькой задержкой и с маленьким jitter
• В изолированной сети вроде даже работает
• Но в интернете нет
• И нет мультикаста
• Слишком велика плата за потери кадров в H.264
Monday, April 2, 12
22. TCP
• Одно решили, другое поломали
• Потерь данных нет, зато есть jitter
• Для компенсации jitter-а придумали буфер клиента
• Для компенсации буфера придумали prepush
• Оптимизация перемотки в рамках prepush буфера
• А ещё мультибитрейт
Monday, April 2, 12
23. TCP (RTMP, RTSP)
Всё это глючит и тормозит
и не проходит через файрволы
Monday, April 2, 12
26. HTTP Streaming
• Сервер рассказывает клиенту о доступных вариантах контента
• Клиент скачивает чанки видео как обычные мегабайтные файлы
• Если время скачивания чанка больше его длительности, значит
интегральной скорости сети не хватает
• Если чанков в очереди много, значит сеть хорошая
Monday, April 2, 12
27. HTTP Streaming
• Позволил перейти от ненадежных моментальных замеров качества
к надежным интегральным
• Во много раз удешевил «кластеризацию»: обычный HTTP-кеш даёт
эффект близкий к мультикасту
• Раздача файлов по HTTP. Просто как топор.
Monday, April 2, 12
28. HLS уже работает
• в компьютерах
• в современных мобильных устройствах
• в телевизионных приставках (Set-top-box)
• в телевизорах
• в кровавом энтерпрайзе
Monday, April 2, 12
30. Раздача файлов
• Быстрый старт проигрывания
• Дешевая по трафику перемотка
• Мультибитрейт
Monday, April 2, 12
31. Кровавый энтерпрайз
• Раньше была RTSP раздача файлов
• Constant bitrate, много трафика, сложно и дорого (Kasenna)
• Всё это глючит и тормозит
Monday, April 2, 12
32. Кровавый энтерпрайз
• Битрейт растет
• Растет доля OTT
• Старые технологии становятся слишком дорогими и нерабочими
• А деньги даже там терять не любят
Monday, April 2, 12
33. Всё идет к
HLS + H.264 + AAC
Monday, April 2, 12
34. Интернет
• Тут люди привыкли деньги считать и думать
• Долго жил flv + mod_flv
• До 30 мегабайт — годно
• Нет мультибитрейта, дорогая по трафику перемотка
Monday, April 2, 12
35. Всё идет к
HLS + H.264 + AAC
Monday, April 2, 12
36. Практика
• Ютуб перешел на HTTP стриминг для контента
• Apple запрещает показывать видео не по HLS
• В 2011 проекты выходили уже с HTTP стримингом
• Adobe не развивает RTMP доставку
Monday, April 2, 12
37. Почему же так?
• Кусочно-фрагментированная доставка видеопотока решает все
указанные проблемы
• Хранение файла в виде чанков позволяет осуществить раздачу
через nginx
Monday, April 2, 12
38. Какие минусы у HLS/H.264/AAC
• Родовая травма HLS в виде MPEG-TS
• Связанность соседних чанков (continuity counters)
• Большие накладные расходы (15-25%)
• Временное отсутствие спектра инструментов
Monday, April 2, 12
39. Резюме
• Старые технологии эфирного ТВ в IPTV отмирают
• Старые технологии live в интернете отмирают
• Старые технологии раздачи файлов отмирают
• Всё концентрируется на связке HLS + H.264 + AAC
Monday, April 2, 12
40. Вопросы?
Макс Лапшин
max@erlyvideo.org
Monday, April 2, 12