Download - стриминг видео на ок
![Page 1: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/1.jpg)
Кадры решают все, или стриминг видео в одноклассникахАлександр Тоболь
![Page 2: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/2.jpg)
• 10 млн уников в сутки по всему миру• 75 млн просмотров в сутки• 100 тысяч загрузок в день
![Page 3: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/3.jpg)
Видеоплатформа изнутри
temp6storage
persistent6storage
upload6server
download6server
transformation6server
http://habrahabr.ru/company/odnoklassniki/blog/
![Page 4: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/4.jpg)
MPEG1/2/4, DivX, h.264, WMV7/8/9
COder DECoder
MP3, AAC, OGG Vorbis, DTS
![Page 5: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/5.jpg)
Контейнер
MKV, QuickTime, FLV, 3GP, MP4, .TS
![Page 6: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/6.jpg)
Выбор кодека и контейнера
MP4
H.264
AAC
66
FLV
H.263
MP3
66
WebM
VP8
Vorbis, MP3
66
![Page 7: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/7.jpg)
Трансформация видео
Transformation6server
persistent storage
ffmpeg mp4box6
mp4parser
MP4, H.264, AAC6
144, 240, 360, 480, 7201080, 1440, 2160
temp storage
Any container/codec66
WxH
![Page 8: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/8.jpg)
Трансформация видео
ffmpeg -i original.mp4 -threads 3 -loglevel info -y -filter_complex [0:0]yadif=0:-1:0,split=3[split0][split1][split2];[split0]scale=640:356[out0];[split1]scale=256:142[out1];[split2]scale=426:236[out2] -vcodec libx264 -map [out0] -vb 559k -r 25 -g 60 -vprofile high -acodec libfdk_aac -refs 1 -bf 3 -x264opts b-pyramid:mixed-refs:weightb:8x8dct:deblock=2,2:no-scenecut -b_strategy 1 -wpredp 2 -qdiff 4 -flags +loop -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -me_method dis -keyint_min 25 -map_metadata -1 -qmin 10 -me_range 16 -qcomp 0.6 -qmax 51 -i_qfactor 0.71 -subq 2 -af aresample=first_pts=0 -pix_fmt yuv420p -coder 1 -trellis 0 -map 0:1 -ac 2 -ab 55k -ar 44100 -sn -f mp4 LOW -vcodec libx264 -map [out0] -vb 80k -r 25 -g 60 -vprofile baseline -acodec libfdk_aac -refs 1 -bf 3 -x264opts b-pyramid:mixed-refs:weightb:deblock=2,2:no-scenecut -b_strategy 2 -wpredp 2 -qdiff 4 -flags +loop -partitions +parti4x4 -me_method full -keyint_min 25 -map_metadata -1 -qmin 10 -me_range 16 -qcomp 0.6 -qmax 51 -i_qfactor 0.71 -subq 2 -af aresample=first_pts=0 -pix_fmt yuv420p -coder 1 -trellis 0 -map 0:1 -ac 2 -ab 32k -ar 44100 -sn -f mp4 MOBILE -vcodec libx264 -map [out0] -vb 250k -r 25 -g 60 -vprofile baseline -acodec libfdk_aac -refs 1 -bf 3 -x264opts b-pyramid:mixed-refs:weightb:deblock=2,2:no-scenecut -b_strategy 2 -wpredp 2 -qdiff 4 -flags +loop -partitions +parti4x4 -me_method full -keyint_min 25 -map_metadata -1 -qmin 10 -me_range 16 -qcomp 0.6 -qmax 51 -i_qfactor 0.71 -subq 2 -af aresample=first_pts=0 -pix_fmt yuv420p -coder 1 -trellis 0 -map 0:1 -ac 2 -ab 48k -ar 44100 -sn -f mp4 LOWEST
![Page 9: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/9.jpg)
Видео изнутри
temp6storage
persistent6storage
upload6server
download6server
transformation6server
![Page 10: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/10.jpg)
MOOV data1 data2 data N
v1 a1 vN aNv0 a0Fast start
data m
vm am
data N data m
HTTP 6byte-range
request
start time parameter in the request
URL
MOOV data N data m
mp4 pseudo-streaming
![Page 11: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/11.jpg)
«Длинный хвост»
![Page 12: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/12.jpg)
download server
persistent storage
RAM - 96GB
SSD - 4TB
1-й уровень
2-й уровень
Segment256Kb
LRU
FIFO
Архитектура раздачи
![Page 13: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/13.jpg)
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
Zero-copy
https://github.com/odnoklassniki/one-nio/
![Page 14: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/14.jpg)
download
persistent storage
RAM – 96Gb6SSD - 4Tb
eth64 x 10 Gbps
80%
20%
Производительность раздачи
eth610 Gbps
![Page 15: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/15.jpg)
Появились видео от блогеров и партнеров - сериалы, шоу, кино
![Page 16: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/16.jpg)
Двухчасовой mp4 фильм в среднем стартует: - 12 секунд в проводных сетях - 21 секунду в мобильных сетях
![Page 17: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/17.jpg)
Header data1 data2 data N data k … …
6 Mb
Что происходит?
![Page 18: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/18.jpg)
- перемотка фильма занимает 6 секунд- 30% буферизаций ведут к закрытию плеера
![Page 19: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/19.jpg)
1. Ускорить старт видео в 2-3 раза
2. Ускорить перемотку в 3-6 раз
3. Уменьшить колличество беферизаций6
4. Решить проблему на мобильных устройствах
Задачи
![Page 20: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/20.jpg)
Автокачество в зависимости от разрешения окна плеера и скорости Интернет
![Page 21: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/21.jpg)
Технологии стриминга
Параметр
кодек любой h264,aacконтейнер MP4, MPEG2-TS MPEG2-TS
plugins
автокачество mpd m3u8
HDSHLS
h264,mp3,aacf4m
DASH
f4v
nativedash.js
![Page 23: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/23.jpg)
Header data1 data2 data N data k … …
He data1 data2 data N data k … …
MP4
MPEG-DASH
MPEG2-TS
Dynamic Adaptive Streaming over HTTP
![Page 24: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/24.jpg)
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 6<MPD xmlns="urn:mpeg:DASH:schema:MPD:2011" mediaPresentationDuration="PT0H3M1.63S" minBufferTime="PT1.5S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011"6type="static">6 <Period duration="PT0H3M1.63S" start="PT0S"> 144p
720p2160p
bandwidth
time
MPEG-DASH manifest
He
![Page 25: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/25.jpg)
MPEG2 Transport stream
http://example.com/video.m3u8 6#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 6#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
Http Live Streaming
![Page 26: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/26.jpg)
dash
FFMPEG
Upload FFMPEG
mp4
MP4BOX
hls
10Пб x 3
Простое решение
![Page 27: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/27.jpg)
dashUpload
persistent storage
mp4
hls
aac
h264
download server
Delta
transformation server
Экономное решение
![Page 28: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/28.jpg)
1.ts 2.ts N.ts k.ts … …HLS
…MPEG2-TS
40Гбит/сек по 188байт пакет = 26 млн пакетов в сек
Проблемы HLS
![Page 29: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/29.jpg)
persistent6storage
mp4: h264, aac
Delta
HLS
DASH
Решение
![Page 30: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/30.jpg)
MPEG-DASH поток на лету
![Page 31: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/31.jpg)
Header data1 data2 data N data k … …
He data1 data2 data N data k … …
He
He Offsets
MP4
DASH
DELTAtransformation
server mp4box
Кодирование DASH
![Page 32: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/32.jpg)
Header data1 data2 data N data k … …
He
He
He data1 data2 data N data k … …
MP4
DELTA
DASH
download server
Раздача DASH
![Page 33: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/33.jpg)
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
Проблемы DASH
![Page 34: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/34.jpg)
ФИЧИ:61. Интерлив видео/аудио62. Замена UrlLoader на UrlStream 63. Доработка алгоритма Автокачества64. Умный ретрай, кеширование sidx65. Умный фронтбуффер66. Работа с частично битым видео
Базовая as3 реализация dash https://github.com/castlabs/dashas
FLASH плеер и MPEG-DASH формат
![Page 35: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/35.jpg)
HLS поток на лету
![Page 36: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/36.jpg)
m3u8 playlist
delta
delta index
mp4 FFMPEGFFMPEGUpload
persistent storage
Кодирование HLS
mpeg2 fragments
![Page 37: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/37.jpg)
…MPEG2
MP4 …
Panda diff
DELTA
IND
EX
![Page 38: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/38.jpg)
MP4 ~50 Гбит/секDASH ~40 Гбит/секHLS ~20 Гбит/сек
download
persistent storage
RAM – 96Gb6SSD - 4Tb
eth64 x 10 Gbps
80%
20%
eth610 Gbps
Производительность раздачи
![Page 39: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/39.jpg)
Результаты
![Page 40: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/40.jpg)
Параметр
старый формат (MP4)
66
средняя длина/2 часа
adaptive bitrate streaming MPEG-Dash/HLS
6константа
старт 4 сек/12 сек 1.5 секперемотка 4 сек/12 сек 1.3 сек
стоимость хранения - +10%
стоимость раздачи - +20% CPU
Первый кадр в 6 раз быстрее!
![Page 41: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/41.jpg)
Мобильные экраны – смартфоны, планшеты, SmartTV
![Page 42: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/42.jpg)
1. Автоматически выбор качества в зависимости от разрешения и скорости Интернет
2. DASH-видео на FLASH и HTML-5 3. HLS видео в iOS- плеерах и SmartTV 4. Экономное хранение форматов и сохранение
производительности раздачи 5. Экономия времени пользователей 6 лет / сутки
50 млн просмотров/сутки * 4 сек = 200 млн сек / сутки
Итого
![Page 43: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/43.jpg)
Быстрее нас только этот чувак в красном!
Быстрее нас только этот мужчина в болиде!
![Page 44: стриминг видео на ок](https://reader030.vdocuments.us/reader030/viewer/2022020101/55a386501a28abf7578b4575/html5/thumbnails/44.jpg)
Спасибо