Александр Тоболь, Кадры решают все, или стриминг видео...

Post on 26-Jun-2015

364 views 0 download

description

Александр расскажет, как им удалось ускорить более чем в 10 раз старт просмотра кино и сериалов с использованием технологий адаптивного стриминга MPEG-DASH и HLS. Вы узнаете, какие технологии попали в поле зрения команды, как инфраструктурные особенности и размер аудитории, а также специфика потребления на разных пользовательских устройствах повлияли на принятие решение о выборе технологии. И, конечно, будет дан подробный отчет о результатах внедрения и полученном эффекте.

Transcript of Александр Тоболь, Кадры решают все, или стриминг видео...

«Кадры решают все, или

стриминг видео в

Одноклассниках»

Александр Тоболь

• 10 млн уников в сутки по всему миру• 75 млн просмотров в сутки• 100 тысяч загрузок в день

Видеоплатформа изнутри

temp2storage

persistent2storage

upload2server

download2server

transformation2server

MPEG1/2/4, DivX, h.264, WMV7/8/9, VC-1

COder DECoder

MP3, AAC, OGG Vorbis, DTS

Контейнер

MKV, QuickTime, FLV, 3GP, MP4, .TS

Выбор кодека и контейнера

MP4 H.264 AAC

22

FLV

H.263

MP3

22

WebM

VP8

Vorbis, MP3

22

Трансформация видео

Transformation2server

persistent storage

ffmpeg mp4box2

mp4parser

MP4, H.264, AAC2

144 240, 360, 480

720 1080, 1440

2160

temp storage

Any container/codec22

WxH

Видео изнутри

temp storage

persistent storage

upload server

download server

transformation server

mp4 pseudo-streamingMOOV data1 data2 data N

v1 a1 vN aNv0 a0Fast start

data m

vm am

data N data m

HTTP 2byte-range

request

start time parameter in the request

URL

MOOV data N data m

«Длинный хвост»

Архитектура раздачи

download server

persistent storage

RAM - 96GB

SSD - 4TB

1-й уровень

2-й уровень

Segment256Kb

LRU

FIFO

sendfile vs send

download server

RAM - 96GB1-й уровень

ssize_t send(int sockfd, const void *buf, size_t len, int flags);

ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);

/dev/shm/cache.memLRU

Производительность раздачи

download

persistent storage

RAM – 96Gb2SSD - 4Tb

eth21 x 10 Gbpseth2

4 x 10 Gbps

80%

20%

Появились видео от блогеров и партнеров - сериалы, шоу, кино

Двухчасовой mp4 фильм в среднем стартует: - 12 секунд в проводных сетях - 21 секунду в мобильных сетях

Header data1 data2 data N data k … …

6 Mb

Что происходит?

- перемотка фильма занимает 6 секунд- 30% буферизаций ведут к закрытию плеера

1. Ускорить старт видео в 2-3 раза

2. Ускорить перемотку в 3-6 раз

3. Уменьшить колличество беферизаций2

4. Решить проблему на мобильных устройствах

Задачи

Автокачество в зависимости от разрешения окна плеера и скорости Интернет

Технологии стриминга

Параметр

кодек любой h264,aacконтейнер MP4, MPEG2-TS MPEG2-TS

flash dash.as

device Android iOS, Android 4 SmartTV

pluginsавтокачество mpd m3u8

HDSHLS

h264,mp3,aacf4m

MPEG-DASH

f4vnative

-

HTML5 Chrome, dash.js Safari -

Распространение протоколов

статистика от wmspanel.com

Dynamic Adaptive Streaming over HTTPHeader data1 data2 data N data k … …

He data1 data2 data N data k … …

MP4

MPEG-DASH

MPEG2-TS

MPEG-DASH manifest

He data1 data2 data N data k … …He data1 data2 data N data k … …He data1 data2 data N data k … …

http://example.com/manifest.mpd 2<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" mediaPresentationDuration="PT0H3M1.63S" minBufferTime="PT1.5S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011"2type="static">2 <Period duration="PT0H3M1.63S" start="PT0S">

144p720p2160p

bandwidth

time

Http Live Streaming

MPEG2 Transport stream

http://example.com/video.m3u8 2#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=200000 lowest.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=311111 low.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=484444 medium.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=737777 high.m3u8

http://example.com/lowest.m3u8 …

http://example.com/low.m3u8 …

http://example.com/medium.m3u8 …

http://example.com/lowest.m3u8 2#EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:11 #EXTINF:10.083333, high000.ts #EXTINF:9.958333, high001.ts #EXTINF:10.000000, high002.ts …

http://example.com/high000.ts

http://example.com/high001.ts

http://example.com/high002.ts

Простое решение

dash

FFMPEG

Upload FFMPEG

mp4

MP4BOX

hls

10Пб x 3

Экономное решение

dashUpload

persistent storage

mp4

hls

aac

h264

download server

Delta

transformation server

Проблемы HLS1.ts 2.ts N.ts k.ts … …HLS

…MPEG2-TS

40Гбит/сек по 188байт пакет = 26 млн пакетов в сек

Решение

persistent2storage

mp4, h264, aac

Delta

HLS

DASH

MPEG-DASH поток на лету

Кодирование MPEG-DASHHeader data1 data2 data N data k … …

He data1 data2 data N data k … …

He

He Offsets

MP4

DASH

DELTAtransformation

server

Раздача MPEG-DASH

Header data1 data2 data N data k … …

He

He

He data1 data2 data N data k … …

MP4

DELTA

DASH

download server

Проблемы DASH

He data1 data2 data N data k … …

He data1 data2 data N data k … …

720p

2160pfragmented MP4

Header dataMP4

Header data

720p

2160p

Header dataMP4

Header data

720p

2160p

FLASH плеер и MPEG-DASH форматФИЧИ:21. Интерлив видео/аудио22. Замена UrlLoader на UrlStream 23. Доработка алгоритма Автокачества24. Умный ретрай, кеширование sidx25. Умный фронтбуффер26. Работа с частично битым видео 27. Идеальный интерлив меседжей и борьба с хрюканием

Базовая as3 реализация dash https://github.com/castlabs/dashas

HLS поток на лету

Кодирование HLS

mpeg2 fragments

m3u8 playlist

delta

delta index

mp4 FFMPEGFFMPEGUpload

persistent storage

Panda diff

…MPEG2

MP4 …

DELTA

INDEX

Производительность раздачи

download

persistent storage

RAM – 96Gb2SSD - 4Tb

eth21 x 10 Gbpseth2

4 x 10 Gbps

80%

20%

MP4 ~ 40 Гбит/секDASH ~ 40 Гбит/секHLS ~ 10 Гбит/сек

Результаты

Параметр

старый формат (MP4) 2

средняя длина/2 часа

adaptive bitrate streaming MPEG-Dash/HLS

средняя длина/2 часастарт 4 сек/12 сек 1.5 сек

перемотка 4 сек/12 сек 1.3 сек

стоимость хранения - +10%

стоимость раздачи - +20% CPU

Первый кадр в 6 раз быстрее!

Мобильные экраны – смартфоны, планшеты, SmartTV

ИТОГО1. DASH-видео на FLASH2

2. DASH-видео на HTML-5 плеерах на стандартной библиотеке dash.js

3. Автоматически выбор качества в зависимости от разрешения и скорости Интернет2

4. HLS видео в iOS- плеерах и SmartTV 5. Экономное хранение форматов и сохранение

скорости раздачи

Быстрее нас только этот чувак в красном!

Быстрее нас только этот мужчина в болиде!

Спасибо