Окончательное решение вопроса трансляции видео в...
Transcript of Окончательное решение вопроса трансляции видео в...
Резюме
Сегодня уникальная ситуация:
• один аудиокодек
• один видеокодек
• один транспортный контейнер (почти один)
Monday, April 2, 12
Экскурс в историю ТВ
• Аналоговая передача была удобной• Никакой компрессии, никаких задержек• Рисуем синхронно с сигналом
• Вещатель управляет клиентом
Monday, April 2, 12
Потом появилось IPTV
• Решения не поменялись• Multicast UDP / DVB-S MPEG-TS пакеты
• Constant bitrate
• Всё почти как в аналоге• И тормозные CMS-ки на Java по 100 тыс Евро
Monday, April 2, 12
С constant bitrate хорошо
• Время и трафик друг в друга конвертируются одной формулой• Перемотка элементарна• Нагрузка на сеть постоянна• Просто качество ужасное и трафик кошмарный
Monday, April 2, 12
Вдруг появился интернет
• Только «у них» это называется OTT — Over The Top
• А в нём потери пакетов и jitter
• UDP не работает, мультикаста вообще нет
• TCP заменители UDP тоже не ахти
Monday, April 2, 12
Пришли HLS/H.264/AAC
• Доставка кусков MPEG-TS потока по HTTP
• С задержкой видео. Ну и пусть, люди уже привыкли.
• Кодеки тоже подоспели: H.264 экономит деньги.
Monday, April 2, 12
Всё в рамках MPEG
• Инженеры IPTV рады.
• Им лишь бы кровавый энтерпрайз со стандартами.
• Ведь у многих из них «HTTP пакеты бьются, надо чексуммы проверять».
Monday, April 2, 12
Что творилось в интернете?
В отличие от IPTV:
• Совершенно другой мир• Денег мало и их умеют считать• Умеют программировать• Понимают, как это работает
Monday, April 2, 12
Напрограммировали от души
• RTSP
• PNA
• MMS
• RTMP
Monday, April 2, 12
Общая родовая травма
Сервер управляет клиентом и равномерно во времени шлет кадры
Monday, April 2, 12
Общая родовая травма
Получается два плеера:
• один на клиенте равномерно проигрывает кадры от сервера
• второй на сервере равномерно шлет кадры
Их слишком сложно синхронизировать
Monday, April 2, 12
Тупиковый подход
• стриминговые TCP протоколы не масштабируются
• слишком дороги в обслуживании
• мало чего могут• все плохо работают
Monday, April 2, 12
Не-HTTP доставкане работает
Monday, April 2, 12
Динозавры пытаются выжить
• Adobe выпускает HDS. Но убивает флеш.
• Microsoft выпускает SmoothStreaming. Но убивает Silverlight.
Monday, April 2, 12
Другие динозавры сдохли
• Quicktime Player
• RealPlayer
• MMS проигрыватели
а вместе с ними и серверы, вещающие туда
Monday, April 2, 12
Альтернативные кодеки
• MPEG-2 и MPEG-4 уже перестали тухнуть и дурно пахнуть
• VP8 — обман и лицемерство по поводу patent-free
Monday, April 2, 12
Сухой остаток
• HLS/H.264/AAC
• небольшой временный атавизм в виде HDS для флеша
Monday, April 2, 12
Причины изменений
Monday, April 2, 12
Равномерность кадров
• Клиент равномерно во времени засовывает кадры в железо
• Энкодер равномерно во времени сжимает кадры в поток
• Между ними рвущийся, тормозной, лагающий интернет• И ещё микроволновка возле WiFi точки
Monday, April 2, 12
UDP
• UDP передает данные с маленькой задержкой и с маленьким jitter
• В изолированной сети вроде даже работает• Но в интернете нет• И нет мультикаста
• Слишком велика плата за потери кадров в H.264
Monday, April 2, 12
TCP
• Одно решили, другое поломали• Потерь данных нет, зато есть jitter
• Для компенсации jitter-а придумали буфер клиента
• Для компенсации буфера придумали prepush
• Оптимизация перемотки в рамках prepush буфера
• А ещё мультибитрейт
Monday, April 2, 12
TCP (RTMP, RTSP)
Всё это глючит и тормозити не проходит через файрволы
Monday, April 2, 12
Не-HTTP доставка контентане работает
Monday, April 2, 12
Решение 30-летних проблем
Пускай клиент сам решает что смотреть
Monday, April 2, 12
HTTP Streaming
• Сервер рассказывает клиенту о доступных вариантах контента• Клиент скачивает чанки видео как обычные мегабайтные файлы• Если время скачивания чанка больше его длительности, значит интегральной скорости сети не хватает
• Если чанков в очереди много, значит сеть хорошая
Monday, April 2, 12
HTTP Streaming
• Позволил перейти от ненадежных моментальных замеров качества к надежным интегральным
• Во много раз удешевил «кластеризацию»: обычный HTTP-кеш даёт эффект близкий к мультикасту
• Раздача файлов по HTTP. Просто как топор.
Monday, April 2, 12
HLS уже работает
• в компьютерах• в современных мобильных устройствах• в телевизионных приставках (Set-top-box)
• в телевизорах• в кровавом энтерпрайзе
Monday, April 2, 12
Трансляция прямого эфира
HLS + H.264 + AAC
временно немножко HDS для флеша
Monday, April 2, 12
Раздача файлов
• Быстрый старт проигрывания• Дешевая по трафику перемотка• Мультибитрейт
Monday, April 2, 12
Кровавый энтерпрайз
• Раньше была RTSP раздача файлов
• Constant bitrate, много трафика, сложно и дорого (Kasenna)
• Всё это глючит и тормозит
Monday, April 2, 12
Кровавый энтерпрайз
• Битрейт растет• Растет доля OTT
• Старые технологии становятся слишком дорогими и нерабочими
• А деньги даже там терять не любят
Monday, April 2, 12
Всё идет к
HLS + H.264 + AAC
Monday, April 2, 12
Интернет
• Тут люди привыкли деньги считать и думать• Долго жил flv + mod_flv
• До 30 мегабайт — годно
• Нет мультибитрейта, дорогая по трафику перемотка
Monday, April 2, 12
Всё идет к
HLS + H.264 + AAC
Monday, April 2, 12
Практика
• Ютуб перешел на HTTP стриминг для контента
• Apple запрещает показывать видео не по HLS
• В 2011 проекты выходили уже с HTTP стримингом
• Adobe не развивает RTMP доставку
Monday, April 2, 12
Почему же так?
• Кусочно-фрагментированная доставка видеопотока решает все указанные проблемы
• Хранение файла в виде чанков позволяет осуществить раздачу через nginx
Monday, April 2, 12
Какие минусы у HLS/H.264/AAC
• Родовая травма HLS в виде MPEG-TS
• Связанность соседних чанков (continuity counters)
• Большие накладные расходы (15-25%)
• Временное отсутствие спектра инструментов
Monday, April 2, 12
Резюме
• Старые технологии эфирного ТВ в IPTV отмирают
• Старые технологии live в интернете отмирают
• Старые технологии раздачи файлов отмирают• Всё концентрируется на связке HLS + H.264 + AAC
Monday, April 2, 12
Вопросы?
Макс Лапшин
Monday, April 2, 12