28
Стриминг для сервиса, который хранит миллионы видеофайлов. Лев Толмачев

Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

  • Upload
    yandex

  • View
    232

  • Download
    0

Embed Size (px)

DESCRIPTION

Я расскажу о том, как организовать проигрывание видео на всевозможных устройствах при таких условиях: 99% загруженных роликов никто никогда не посмотрит, 0,5% откроют один раз, а 0,1% будут смотреть тысячи людей в сутки.

Citation preview

Page 1: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

Стриминг для сервиса, который хранит миллионы видеофайлов.

Лев Толмачев

Page 2: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

〉Более 40 млн пользователей

〉Более 10 млрд файлов

〉Более 20 млн новых файлов в сутки

2

Page 3: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

3

mkv

wmv

mp4

webm

avi ogv

Page 4: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

〉Разные исходные форматы

〉Размер файла и скорость сети

〉Некоторые форматы требуют скачивания файла целиком

〉Различные разрешения

4

Проблемы

Page 5: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

5

Диск - не видеохостинг!

Page 6: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

6

Архитектура

Storage

iOS

Android

Firefox

Safari

Yandex.BrowserWinPhone

Chrome

Page 7: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

7

Архитектура

Storage

Transcoder

avi, mkv, ogv, …

iOS

Android

Firefox

Safari

Yandex.BrowserWinPhone

Chrome

mp4, webm, hls

Page 8: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

8

Архитектура

Core

Controller

File 1 File 2 File 3

Free Free

Transcoder

Core Core Core Core Core Core Core

Page 9: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

Ffmpeg

9

Архитектура.Транскодер

Storage

HTTP

/…/file.mp4

Controller

GETstart

file.mp4

Page 10: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

Ffmpeg

10

Архитектура.Транскодер

Storage

HTTP

file.mp4

Controller

GETstart

file2.mp4

Page 11: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

11

HLS

#EXTINF:5

a0.ts

#EXTINF:7

a1.ts

#EXTINF:3

a2.ts

…..

#EXT-X-ENDLIST

a0.ts

a1.ts

a2.ts

playlist.m3u8

Page 12: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

12

HLS

#EXTINF:5

a0.ts

#EXTINF:7

a1.ts

a0.ts

a1.ts

playlist.m3u8

Page 13: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

13

HLS

a0.ts a1.ts a2.ts a3.ts a4.ts a5.ts a6.ts a7.ts a8.ts a9.ts

Ffmpeg

Page 14: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

14

HLS

a0.ts a1.ts a2.ts a3.ts a4.ts a5.ts a6.ts a7.ts a8.ts a9.ts

Ffmpeg

Page 15: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

15

HLS

a0.ts a1.ts a2.ts a3.ts a4.ts a5.ts a6.ts a7.ts a8.ts a9.ts

Ffmpeg

Page 16: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

16

HLS

a0.ts a1.ts a2.ts a3.ts a4.ts a5.ts a6.ts a7.ts a8.ts a9.ts

Ffmpeg

Ffmpeg

Page 17: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

17

HLS

Ffmpeg

Ffmpeg

Ffmpeg

Page 18: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

18

Архитектура

Storage

Transcoder

avi, mkv, ogv, …

iOS

Android

Firefox

Safari

Yandex.BrowserWinPhone

Chrome

mp4, webm, hls

Page 19: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

19

АрхитектураPlayer

Balancer

Transcoder TranscoderTranscoder

Storage

Page 20: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

20

АрхитектураPlayer

Balancer

Transcoder TranscoderTranscoder

Storage

Balancer

Page 21: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

21

АрхитектураPlayer

Balancer

Transcoder TranscoderTranscoder

Storage

Balancer

video content

Page 22: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

〉Один файл - несколько ядер процессора

〉Один меньше 50 файлов одновременно

22

Проблема

Page 23: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

〉Один файл - несколько ядер процессора

〉Один меньше 50 файлов одновременно

23

Проблема

Идея!

Используем дедубликацию. Не будем конвертировать файл несколько раз для разных клиентов.

Page 24: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

24

Популярные файлы

Balancer

Клиент 1

Storage

Transcoder

Клиент 2

Клиент 3

Клиент 4

Page 25: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

〉Один файл - один транскодер

〉Один транскодер - один датацентр

〉Все запросы про файл попадают на одну машину

25

Проблема

Page 26: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

26

Очень популярные файлы

API

Клиент 1

RealtimeOffline

Конвертация

Клиент 2

Подсчет числа просмотров

Популярные файлы

Page 27: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

〉Работаем как с личными так и с очень популярными роликами

〉Миллионы просмотров в сутки

〉Экономия ресурсов

27

Результат

Page 28: Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Толмачев

Лев Толмачев

Руководитель группы облачного медиа

Контакты

[email protected]