69
Трансляция видео в интернете Макс Лапшин [email protected] http://erlyvideo.org /

Devpoint2 video in internet

Embed Size (px)

Citation preview

Page 1: Devpoint2 video in internet

Трансляция видеов интернете

Макс Лапшин[email protected]://erlyvideo.org/

Page 2: Devpoint2 video in internet

Требования к видео

Page 3: Devpoint2 video in internet

Требования к видео

•Получше качество

Page 4: Devpoint2 video in internet

Требования к видео

•Получше качество

•Пониже битрейт

Page 5: Devpoint2 video in internet

Требования к видео

•Получше качество

•Пониже битрейт

•Поменьше задержка от прямого эфира

Page 6: Devpoint2 video in internet

Выберите два пункта?

Page 7: Devpoint2 video in internet

Нет, надо все три

Page 8: Devpoint2 video in internet

Как уменьшить битрейт, повысив качество?

Page 9: Devpoint2 video in internet

Улучшение качества и снижение битрейта —

вопрос к кодекам

Page 10: Devpoint2 video in internet

Обратить внимание на:

•H.264 — MPEG-LA. Платный, с внятной схемой лицензирования.

•VP8 — Google. Обещают свободу от патентов.

Page 11: Devpoint2 video in internet

Как работает видеокодек?

Page 12: Devpoint2 video in internet

25 раз в секунду захватывается сырое

изображение с матрицы

Page 13: Devpoint2 video in internet
Page 14: Devpoint2 video in internet
Page 15: Devpoint2 video in internet
Page 16: Devpoint2 video in internet
Page 17: Devpoint2 video in internet
Page 18: Devpoint2 video in internet

1 секунда из жизни эмигранта занимает 9 MB

сырых кадров

Page 19: Devpoint2 video in internet

В сжатом виде 20 KB

Page 20: Devpoint2 video in internet

Видео разрезается на GOP-ы

Page 21: Devpoint2 video in internet

GOP — Group Of Pictures

Page 22: Devpoint2 video in internet

В начале GOP-а идет I-Frame

Page 23: Devpoint2 video in internet

I-Frame — по сути JPEG из сырого кадра

Page 24: Devpoint2 video in internet

За ним идут P-Frame

Page 25: Devpoint2 video in internet

Основная магия сжатия в Motion Vector

Page 26: Devpoint2 video in internet
Page 27: Devpoint2 video in internet

CPU тратится на вычисление движений в

кадре

Page 28: Devpoint2 video in internet

Нет возможности ускорить аппаратно

Page 29: Devpoint2 video in internet

Размер кадра снижается с 230KB вплоть до 35 байт

Page 30: Devpoint2 video in internet

Невозможно перемотать на произвольный кадр

Page 31: Devpoint2 video in internet

Проблема контейнеров

•Либо потоковая запись: flv

•Либо перемотка в файле: mp4

Page 32: Devpoint2 video in internet

После записи потока требуется постпроцессинг

Page 33: Devpoint2 video in internet

Оптимальный вариант: паковать в mp4

Page 34: Devpoint2 video in internet

Уменьшение каждого кадра: конфиг декодера

Page 35: Devpoint2 video in internet

В FLV и VP6 дублирование достигает 25% от кадра

Page 36: Devpoint2 video in internet

В H.264 это исправлено, вынесением наружу

Page 37: Devpoint2 video in internet

Поток нельзя воспроизвести без конфига декодера

Page 38: Devpoint2 video in internet

Мультибитрейт

Page 39: Devpoint2 video in internet

Один файл/поток кодируется несколько раз

Page 40: Devpoint2 video in internet

Для деградации потока надо:

•Что бы совпадали конфиги декодеров у видео разного качества

•Дождаться I-Frame на видеопотоке нужного качества

•Переключить клиента на щадящий битрейт

•Молиться, что бы видеопотоки были синхронизированы

•А как поднять обратно?

Page 41: Devpoint2 video in internet

Есть изыскания по однократному сжатию с

мультибитрейтом

Page 42: Devpoint2 video in internet

Как же уменьшать задержку?

Page 43: Devpoint2 video in internet

Источники задержки

•Задержка кодирования

•Задержка транспорта

•Буфер у клиента

•Декодирование

Page 44: Devpoint2 video in internet

libx264 умеет отдавать кодированные

кадры через 30 мс

Page 45: Devpoint2 video in internet

Можно играть в игры через видеопоток

Page 46: Devpoint2 video in internet

В ближайшее время будет использоваться на

практике

Page 47: Devpoint2 video in internet

Пытаются передавать видео по UDP вместо TCP

Page 48: Devpoint2 video in internet

Голова поворачивается, уши остаются

Page 49: Devpoint2 video in internet

Проблема не-TCP каналов:чем замещать нехватающую информацию?

Page 50: Devpoint2 video in internet

Работающая практика:

•Звук замещать тишиной

•Видео предыдущим кадром, если есть время на пережатие

Page 51: Devpoint2 video in internet

Хочется иметь видеокодек,

проставляющий QoS метки пакетам

Page 52: Devpoint2 video in internet

Транспорт в видеотелефонах должен

был бы уметь перезапрашивать кадры

по UDP

Page 53: Devpoint2 video in internet

Мало кто умеет

Page 54: Devpoint2 video in internet

Плотность информации в видеопотоке

диктует выбор TCP

Page 55: Devpoint2 video in internet

Каким транспортом доставлять?

Page 56: Devpoint2 video in internet

Файлы

•Самый надежный и простой транспорт

•Нет отчета о доставке и просмотре

•Большая задержка

•Apple HTTP Live Streaming — очень плохой протокол

•Microsoft Smooth Streaming — годный протокол

Page 57: Devpoint2 video in internet

MPEG-TS

•Идет со спутника

•Работает без IP сетей

•Может в себе нести что угодно

•Огромные издержки на контейнер: до 25%

•Поддерживает мультикаст

•Используется для IP-TV из-за мультикаста

Page 58: Devpoint2 video in internet

RTSP

•Близок к SIP-у (тот же транспорт для контента)

•По сути остался для мобильников

•Ютуб раздает этим протоколом видео на мобильники

•Отмирает

Page 59: Devpoint2 video in internet

RTMP•Дизайн протокола по принципу надстройки курятника

•Закрытый

•Поддерживается флешем

•Основной способ доставить прямую трансляцию в интернете

•Есть наработки по Peer-to-peer: RTMFP

•RTMFP уже взломан, в течении года расползется код

Page 60: Devpoint2 video in internet

HTML5 <video>

Page 61: Devpoint2 video in internet

Разброд и шатание

Page 62: Devpoint2 video in internet

Реалии тега <video>•Опера и Firefox не хотят покупать H.264

•Apple не видит смысла в VP8

•Гугл пропихивает всем VP8, доставляющийся по WEBM (Matroska)

•Microsoft готов согласиться со всеми

•VP8 ощутимо хуже H.264

•Остальной IT мир только в процессе миграции на H.264

•Возможно получится два основных кодека: общий и «для веба»

Page 63: Devpoint2 video in internet

Что творится на клиенте?

Page 64: Devpoint2 video in internet

Буферизация видео

•Сглаживает неравномерность скорости сети

•Увеличивает задержку

•Непросто подобрать размер буфера

•Хорошее правило: буфер размером в GOP

Page 65: Devpoint2 video in internet

Декодирование

•Пожалуй, самая развитая часть видеотракта

•Аппаратная поддержка

•Хорошие результаты даже на маломощных телефонах

Page 66: Devpoint2 video in internet

Что же использовать сегодня

•Adobe Flash Media Live Encoder или Wirecast для захвата видео в интерактивном режиме

•VLC для транскодирования

•RTMP сервер

•Флеш для доставки пользователю

•HTTP Live Streaming, если есть пользователи с iPad-ами

•RTSP на мобильные телефоны

Page 67: Devpoint2 video in internet

Проблемы при трансляции

•Очень сложно выбрать нужный пользователю битрейт

•Сильные флукуации качества канала

•На сервере сложно узнать, видно видео или нет

•Корпоративные прокси мешают RTMP/RTSP

•Комфорт от просмотра живой трансляции гарантированно ниже, чем от скачанных с торрентов фильмов

Page 68: Devpoint2 video in internet

Выводы

•Видеокодеки подошли к порогу оптимизируемости живым человеком

•Впереди основательная проработка инфраструктуры: мультибитрейт, QoS и т.п.

•С транспортами видео вавилонское столпотворение: будут развиваться HTTP способы доставки

•Пока что целиковые файлы или поток по RTMP + HLS

Page 69: Devpoint2 video in internet

Вопросы?

Макс Лапшин

[email protected]

http://erlyvideo.org/