SlideShare a Scribd company logo
«Кадры решают все, или 
стриминг видео в 
Одноклассниках» 
Александр Тоболь
• 10 млн уников в сутки по всему миру 
• 75 млн просмотров в сутки 
• 100 тысяч загрузок в день
Видеоплатформа изнутри 
temp2 
storage 
persistent2 
storage 
upload2 
server 
download2 
server 
transformation2 
server
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 
2 
2 
FLV 
H.263 
MP3 
2 
2 
WebM 
VP8 
Vorbis, MP3 
2 
2
Трансформация видео 
Transformation2 
server 
persistent storage 
ffmpeg 
mp4box2 
mp4parser 
MP4, H.264, AAC2 
144 
240, 360, 480 
720 
1080, 1440 
2160 
temp storage 
Any container/codec2 
2 
WxH
Видео изнутри 
temp 
storage 
persistent 
storage 
upload 
server 
download 
server 
transformation 
server
mp4 pseudo-streaming 
MOOV data1 data2 data m 
data N 
Fast start v0 a0 v1 a1 vN aN 
vm am 
HTTP 2 
byte-range 
request 
data m data N 
start time 
parameter in 
the request 
URL 
MOOV data m data N
«Длинный хвост»
Архитектура раздачи 
download 
server 
persistent 
storage 
RAM - 96GB 
SSD - 4TB 
1-й уровень 
2-й уровень 
Segment 
256Kb 
LRU 
FIFO
sendfile vs send 
download 
server 
LRU 1-й уровень RAM - 96GB 
/dev/shm/cache.mem 
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); 
ssize_t send(int sockfd, const void *buf, size_t len, int flags);
Производительность раздачи 
download 
persistent 
storage 
RAM – 96Gb2 
SSD - 4Tb 
eth2 
eth2 1 x 10 Gbps 
4 x 10 Gbps 
80% 
20%
Появились видео от блогеров и партнеров - 
сериалы, шоу, кино
Двухчасовой mp4 фильм в среднем стартует: 
- 12 секунд в проводных сетях 
- 21 секунду в мобильных сетях
Что происходит? 
Header data1 data2… data k … data N 
6 Mb
- перемотка фильма занимает 6 секунд 
- 30% буферизаций ведут к закрытию плеера
Задачи 
1. Ускорить старт видео в 2-3 раза 
2. Ускорить перемотку в 3-6 раз 
3. Уменьшить колличество беферизаций2 
4. Решить проблему на мобильных устройствах
Автокачество в зависимости от разрешения 
окна плеера и скорости Интернет
Технологии стриминга 
Параметр 
кодек любой h264,aac 
контейнер MP4, MPEG2-TS MPEG2-TS 
HLS HDS 
автокачество mpd m3u8 
flash dash.as 
plugins 
HTML5 Chrome, dash.js Safari - 
device Android iOS, Android 4 
SmartTV 
h264,mp3,aac 
f4m 
MPEG-DASH 
f4v 
native 
-
Распространение протоколов 
статистика от wmspanel.com
Dynamic Adaptive Streaming over HTTP 
Header data1 data2 … data k … data N 
He data1 data2… data k … data N 
MP4 
MPEG-DASH 
MPEG2-TS
MPEG-DASH manifest 
He data1 data2… data k … data N 
He data1 data2… data k … data N 
He data1 data2… data k … data N 
http://example.com/manifest.mpd 
2 
<MPD xmlns="urn:mpeg:DASH:schema:MPD: 
2011" 
mediaPresentationDuration="PT0H3M1.63 
S" minBufferTime="PT1.5S" 
profiles="urn:mpeg:dash:profile:isoff 
-on-demand:2011"2 
type="static">2 
<Period duration="PT0H3M1.63S" 
start="PT0S"> 
144p 
720p 
2160p 
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
Экономное решение 
h264 
Upload dash 
persistent 
storage 
mp4 
hls 
aac 
download 
server 
Delta 
transformation 
server
Проблемы HLS 
HLS 1.ts 2.ts … k.ts … N.ts 
MPEG2-TS … 
40Гбит/сек по 188байт пакет = 26 млн пакетов в сек
Решение 
persistent2 
storage 
mp4, h264, aac 
Delta 
HLS 
DASH
MPEG-DASH поток на лету
Кодирование MPEG-DASH 
Header data1 data2 … data k … data N 
He data1 data2… data k … data N 
He 
He Offsets 
MP4 
DASH 
DELTA 
transformation 
server
Раздача MPEG-DASH 
He 
He 
Header data1 data2… data k … data N 
He data1 data2… data k… data N 
DELTA 
MP4 
DASH 
download 
server
Проблемы DASH 
Header data 
Header data 
He data1 data2… data k … data N 
He data1 data2… data k … data N 
720p 
2160p 
MP4 
fragmented MP4 
720p 
2160p 
Header data 
MP4 
Header data 
720p 
2160p
FLASH плеер и MPEG-DASH формат 
ФИЧИ:2 
1. Интерлив видео/аудио2 
2. Замена UrlLoader на UrlStream 2 
3. Доработка алгоритма Автокачества2 
4. Умный ретрай, кеширование sidx2 
5. Умный фронтбуффер2 
6. Работа с частично битым видео 2 
7. Идеальный интерлив меседжей и 
борьба с хрюканием 
Базовая as3 реализация dash https://github.com/ 
castlabs/dashas
HLS поток на лету
Кодирование HLS 
Upload FFMPEG mp4 FFMPEG 
mpeg2 
fragments 
m3u8 
playlist 
delta index 
delta 
persistent 
storage
Panda diff 
MPEG2 … 
MP4 … 
DELTA 
INDEX
Производительность раздачи 
download 
persistent 
storage 
RAM – 96Gb2 
SSD - 4Tb 
eth2 
eth2 1 x 10 Gbps 
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. Экономное хранение форматов и сохранение 
скорости раздачи
Быстрее нас только этот 
мужчина в болиде! 
Быстрее нас только этот чувак в красном!
Спасибо

More Related Content

What's hot

Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуYandex
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 
HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5Technopark
 
HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2Technopark
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSYandex
 
Get inside stage2 new
Get inside stage2 newGet inside stage2 new
Get inside stage2 new
InfoTeCS
 
VDS: обнаружение, выявление причин и устранение проблемных ситуаций. Диагнос...
VDS: обнаружение, выявление причин и устранение проблемных ситуаций.  Диагнос...VDS: обнаружение, выявление причин и устранение проблемных ситуаций.  Диагнос...
VDS: обнаружение, выявление причин и устранение проблемных ситуаций. Диагнос...
Oleg Lipin
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1rit2011
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6Technopark
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Ontico
 
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикадSpblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Konstantin Novakovksy
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
7bits
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
Dmitry Samsonov
 
More Smoked CTFs для Leet Chicken, пожалуйста!
More Smoked CTFs для Leet Chicken, пожалуйста!More Smoked CTFs для Leet Chicken, пожалуйста!
More Smoked CTFs для Leet Chicken, пожалуйста!
snowytoxa
 
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Ontico
 
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Ontico
 
iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché
iRidiumMobile365
 

What's hot (18)

Марина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизуМарина Широчкина: Верстка. Вид снизу
Марина Широчкина: Верстка. Вид снизу
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 
HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5HighLoad весна 2014 лекция 5
HighLoad весна 2014 лекция 5
 
HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2HighLoad весна 2014 лекция 2
HighLoad весна 2014 лекция 2
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
 
Get inside stage2 new
Get inside stage2 newGet inside stage2 new
Get inside stage2 new
 
VDS: обнаружение, выявление причин и устранение проблемных ситуаций. Диагнос...
VDS: обнаружение, выявление причин и устранение проблемных ситуаций.  Диагнос...VDS: обнаружение, выявление причин и устранение проблемных ситуаций.  Диагнос...
VDS: обнаружение, выявление причин и устранение проблемных ситуаций. Диагнос...
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1
 
HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6HighLoad весна 2014 лекция 6
HighLoad весна 2014 лекция 6
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
 
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикадSpblug. Борьба с DDoS в хостинге - по обе стороны баррикад
Spblug. Борьба с DDoS в хостинге - по обе стороны баррикад
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...Тюним память  и сетевой стек в Linux: история перевода высоконагруженных  сер...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных сер...
 
More Smoked CTFs для Leet Chicken, пожалуйста!
More Smoked CTFs для Leet Chicken, пожалуйста!More Smoked CTFs для Leet Chicken, пожалуйста!
More Smoked CTFs для Leet Chicken, пожалуйста!
 
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
Positive Hack Days. Павлов. Мастер-класс: Анализ защищенности сетевой инфраст...
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 
SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)SOA: строим свой service mesh / Иван Круглов (Booking.com)
SOA: строим свой service mesh / Иван Круглов (Booking.com)
 
iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché iRidium для AV & Custom Systems и Global Caché
iRidium для AV & Custom Systems и Global Caché
 

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

Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Ontico
 
Devpoint2 video in internet
Devpoint2 video in internetDevpoint2 video in internet
Devpoint2 video in internetMax Lapshin
 
Видеохостинг своими руками
Видеохостинг своими рукамиВидеохостинг своими руками
Видеохостинг своими руками
StanislavMalkin
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
DotNetConf
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
Видео в сети
Видео в сетиВидео в сети
Видео в сети
GetDev.NET
 
Video 111127013709-phpapp02
Video 111127013709-phpapp02Video 111127013709-phpapp02
Video 111127013709-phpapp02LLC NewLink
 
Video 111127013709-phpapp02
Video 111127013709-phpapp02Video 111127013709-phpapp02
Video 111127013709-phpapp02Newlink
 
Презентация "Это что-то новенькое"
Презентация "Это что-то новенькое"Презентация "Это что-то новенькое"
Презентация "Это что-то новенькое"Дмитрий Костюк
 
Security Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.Ru
Security Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.RuSecurity Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.Ru
Security Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.Ru
Mail.ru Group
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
a15464321646213
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Yandex
 
3 рекордеры, мобильный клиент, pssct
3   рекордеры, мобильный клиент, pssct3   рекордеры, мобильный клиент, pssct
3 рекордеры, мобильный клиент, pssct
journalrubezh
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
ARCCN
 
20201021 Технополис: Сетевой стек
20201021 Технополис: Сетевой стек20201021 Технополис: Сетевой стек
20201021 Технополис: Сетевой стек
Dmitry Samsonov
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructОбратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai Struct
Positive Hack Days
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Ontico
 
внутренний семинар: обработка видео и аудио сигналов, передача данных
внутренний семинар: обработка видео и аудио сигналов, передача данныхвнутренний семинар: обработка видео и аудио сигналов, передача данных
внутренний семинар: обработка видео и аудио сигналов, передача данныхOksana Teslenko
 

Similar to Александр Тоболь, Кадры решают все, или стриминг видео в Одноклассниках (20)

Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
Кадры решают все, или стриминг видео, Александр Тоболь (Одноклассники)
 
Devpoint2 video in internet
Devpoint2 video in internetDevpoint2 video in internet
Devpoint2 video in internet
 
Видеохостинг своими руками
Видеохостинг своими рукамиВидеохостинг своими руками
Видеохостинг своими руками
 
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
Особенности передачи и обработки видео данных. Приправа из кодеков или с чем ...
 
Реактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/musicРеактивный раздатчик ok.ru/music
Реактивный раздатчик ok.ru/music
 
Видео в сети
Видео в сетиВидео в сети
Видео в сети
 
Видео в сети
Видео в сетиВидео в сети
Видео в сети
 
Video 111127013709-phpapp02
Video 111127013709-phpapp02Video 111127013709-phpapp02
Video 111127013709-phpapp02
 
Video 111127013709-phpapp02
Video 111127013709-phpapp02Video 111127013709-phpapp02
Video 111127013709-phpapp02
 
Презентация "Это что-то новенькое"
Презентация "Это что-то новенькое"Презентация "Это что-то новенькое"
Презентация "Это что-то новенькое"
 
Security Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.Ru
Security Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.RuSecurity Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.Ru
Security Meetup 22 октября. «Опасное видео». Максим Андреев. Облако Mail.Ru
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
 
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
 
3 рекордеры, мобильный клиент, pssct
3   рекордеры, мобильный клиент, pssct3   рекордеры, мобильный клиент, pssct
3 рекордеры, мобильный клиент, pssct
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
 
20201021 Технополис: Сетевой стек
20201021 Технополис: Сетевой стек20201021 Технополис: Сетевой стек
20201021 Технополис: Сетевой стек
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai StructОбратная разработка бинарных форматов с помощью Kaitai Struct
Обратная разработка бинарных форматов с помощью Kaitai Struct
 
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
Как обслужить 60 миллионов абонентов, Артем Руфанов (ПЕТЕР-СЕРВИС)
 
внутренний семинар: обработка видео и аудио сигналов, передача данных
внутренний семинар: обработка видео и аудио сигналов, передача данныхвнутренний семинар: обработка видео и аудио сигналов, передача данных
внутренний семинар: обработка видео и аудио сигналов, передача данных
 

More from Tanya Denisyuk

Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Tanya Denisyuk
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Tanya Denisyuk
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Tanya Denisyuk
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
Tanya Denisyuk
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
Tanya Denisyuk
 
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Tanya Denisyuk
 
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Левон  Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"Левон  Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Tanya Denisyuk
 
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Tanya Denisyuk
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Tanya Denisyuk
 
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Tanya Denisyuk
 
Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "
Tanya Denisyuk
 
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Tanya Denisyuk
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Tanya Denisyuk
 
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Tanya Denisyuk
 
Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»
Tanya Denisyuk
 
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Tanya Denisyuk
 
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Tanya Denisyuk
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Tanya Denisyuk
 
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Tanya Denisyuk
 
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Tanya Denisyuk
 

More from Tanya Denisyuk (20)

Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
 
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
 
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
Сергей Сверчков "Want to build a secure private cloud for IoT with high avail...
 
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Левон  Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"Левон  Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
Левон Авакян "Архитектура мета игры Wargaming. Глобальная карта 2.0"
 
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
 
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
Артем Маринов "Сегментируем 600 млн. пользователей в режиме реального времени...
 
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
Артем Гавриченков "The Dark Side of Things: Distributed Denial of Service Att...
 
Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "Алексей Лесовский "Тюнинг Linux для баз данных. "
Алексей Лесовский "Тюнинг Linux для баз данных. "
 
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
Александр Краковецкий "Разработка интеллектуальных ботов с помощью Microsoft ...
 
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
Андрей Светлов-«Делаем своё решение для оптимальной загрузки кластера»
 
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
Александр Ломов-«Как перестать беспокоиться и начать использовать Cloud Foundry»
 
Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»Алексей Залесов-«Управление контейнерами в облаках»
Алексей Залесов-«Управление контейнерами в облаках»
 
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
Максим Барышиков-«WoT: Geographically distributed cluster of clusters»
 
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
Левон Авакян-«Эволюция кланов в Wargaming. От веб страницы на танковом портал...
 
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
Юрий Насретдинов-«Сбор логов в «облаке» в Badoo»
 
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
Павел Вейник-«Программирование и лингвистика: как понять язык и как извлечь з...
 
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
Михаил Серченя-«Построение отказоустойчивой масштабируемой среды для WEB и бе...
 

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

  • 1. «Кадры решают все, или стриминг видео в Одноклассниках» Александр Тоболь
  • 2. • 10 млн уников в сутки по всему миру • 75 млн просмотров в сутки • 100 тысяч загрузок в день
  • 3. Видеоплатформа изнутри temp2 storage persistent2 storage upload2 server download2 server transformation2 server
  • 4. MPEG1/2/4, DivX, h.264, WMV7/8/9, VC-1 COder DECoder MP3, AAC, OGG Vorbis, DTS
  • 6. Выбор кодека и контейнера MP4 H.264 AAC 2 2 FLV H.263 MP3 2 2 WebM VP8 Vorbis, MP3 2 2
  • 7. Трансформация видео Transformation2 server persistent storage ffmpeg mp4box2 mp4parser MP4, H.264, AAC2 144 240, 360, 480 720 1080, 1440 2160 temp storage Any container/codec2 2 WxH
  • 8. Видео изнутри temp storage persistent storage upload server download server transformation server
  • 9. mp4 pseudo-streaming MOOV data1 data2 data m data N Fast start v0 a0 v1 a1 vN aN vm am HTTP 2 byte-range request data m data N start time parameter in the request URL MOOV data m data N
  • 11. Архитектура раздачи download server persistent storage RAM - 96GB SSD - 4TB 1-й уровень 2-й уровень Segment 256Kb LRU FIFO
  • 12. sendfile vs send download server LRU 1-й уровень RAM - 96GB /dev/shm/cache.mem ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); ssize_t send(int sockfd, const void *buf, size_t len, int flags);
  • 13. Производительность раздачи download persistent storage RAM – 96Gb2 SSD - 4Tb eth2 eth2 1 x 10 Gbps 4 x 10 Gbps 80% 20%
  • 14. Появились видео от блогеров и партнеров - сериалы, шоу, кино
  • 15. Двухчасовой mp4 фильм в среднем стартует: - 12 секунд в проводных сетях - 21 секунду в мобильных сетях
  • 16. Что происходит? Header data1 data2… data k … data N 6 Mb
  • 17. - перемотка фильма занимает 6 секунд - 30% буферизаций ведут к закрытию плеера
  • 18. Задачи 1. Ускорить старт видео в 2-3 раза 2. Ускорить перемотку в 3-6 раз 3. Уменьшить колличество беферизаций2 4. Решить проблему на мобильных устройствах
  • 19. Автокачество в зависимости от разрешения окна плеера и скорости Интернет
  • 20. Технологии стриминга Параметр кодек любой h264,aac контейнер MP4, MPEG2-TS MPEG2-TS HLS HDS автокачество mpd m3u8 flash dash.as plugins HTML5 Chrome, dash.js Safari - device Android iOS, Android 4 SmartTV h264,mp3,aac f4m MPEG-DASH f4v native -
  • 22. Dynamic Adaptive Streaming over HTTP Header data1 data2 … data k … data N He data1 data2… data k … data N MP4 MPEG-DASH MPEG2-TS
  • 23. MPEG-DASH manifest He data1 data2… data k … data N He data1 data2… data k … data N He data1 data2… data k … data N http://example.com/manifest.mpd 2 <MPD xmlns="urn:mpeg:DASH:schema:MPD: 2011" mediaPresentationDuration="PT0H3M1.63 S" minBufferTime="PT1.5S" profiles="urn:mpeg:dash:profile:isoff -on-demand:2011"2 type="static">2 <Period duration="PT0H3M1.63S" start="PT0S"> 144p 720p 2160p bandwidth time
  • 24. 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
  • 25. Простое решение dash FFMPEG Upload FFMPEG mp4 MP4BOX hls 10Пб x 3
  • 26. Экономное решение h264 Upload dash persistent storage mp4 hls aac download server Delta transformation server
  • 27. Проблемы HLS HLS 1.ts 2.ts … k.ts … N.ts MPEG2-TS … 40Гбит/сек по 188байт пакет = 26 млн пакетов в сек
  • 28. Решение persistent2 storage mp4, h264, aac Delta HLS DASH
  • 30. Кодирование MPEG-DASH Header data1 data2 … data k … data N He data1 data2… data k … data N He He Offsets MP4 DASH DELTA transformation server
  • 31. Раздача MPEG-DASH He He Header data1 data2… data k … data N He data1 data2… data k… data N DELTA MP4 DASH download server
  • 32. Проблемы DASH Header data Header data He data1 data2… data k … data N He data1 data2… data k … data N 720p 2160p MP4 fragmented MP4 720p 2160p Header data MP4 Header data 720p 2160p
  • 33. FLASH плеер и MPEG-DASH формат ФИЧИ:2 1. Интерлив видео/аудио2 2. Замена UrlLoader на UrlStream 2 3. Доработка алгоритма Автокачества2 4. Умный ретрай, кеширование sidx2 5. Умный фронтбуффер2 6. Работа с частично битым видео 2 7. Идеальный интерлив меседжей и борьба с хрюканием Базовая as3 реализация dash https://github.com/ castlabs/dashas
  • 35. Кодирование HLS Upload FFMPEG mp4 FFMPEG mpeg2 fragments m3u8 playlist delta index delta persistent storage
  • 36. Panda diff MPEG2 … MP4 … DELTA INDEX
  • 37. Производительность раздачи download persistent storage RAM – 96Gb2 SSD - 4Tb eth2 eth2 1 x 10 Gbps 4 x 10 Gbps 80% 20% MP4 ~ 40 Гбит/сек DASH ~ 40 Гбит/сек HLS ~ 10 Гбит/сек
  • 39. Параметр старый формат (MP4) 2 средняя длина/2 часа adaptive bitrate streaming MPEG-Dash/HLS средняя длина/2 часа старт 4 сек/12 сек 1.5 сек перемотка 4 сек/12 сек 1.3 сек стоимость хранения - +10% стоимость раздачи - +20% CPU Первый кадр в 6 раз быстрее!
  • 40. Мобильные экраны – смартфоны, планшеты, SmartTV
  • 41. ИТОГО 1. DASH-видео на FLASH2 2. DASH-видео на HTML-5 плеерах на стандартной библиотеке dash.js 3. Автоматически выбор качества в зависимости от разрешения и скорости Интернет2 4. HLS видео в iOS- плеерах и SmartTV 5. Экономное хранение форматов и сохранение скорости раздачи
  • 42. Быстрее нас только этот мужчина в болиде! Быстрее нас только этот чувак в красном!