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

Post on 08-Jul-2015

232 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Лев Толмачев

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

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

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

2

3

mkv

wmv

mp4

webm

avi ogv

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

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

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

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

4

Проблемы

5

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

6

Архитектура

Storage

iOS

Android

Firefox

Safari

Yandex.BrowserWinPhone

Chrome

7

Архитектура

Storage

Transcoder

avi, mkv, ogv, …

iOS

Android

Firefox

Safari

Yandex.BrowserWinPhone

Chrome

mp4, webm, hls

8

Архитектура

Core

Controller

File 1 File 2 File 3

Free Free

Transcoder

Core Core Core Core Core Core Core

Ffmpeg

9

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

Storage

HTTP

/…/file.mp4

Controller

GETstart

file.mp4

Ffmpeg

10

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

Storage

HTTP

file.mp4

Controller

GETstart

file2.mp4

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

12

HLS

#EXTINF:5

a0.ts

#EXTINF:7

a1.ts

a0.ts

a1.ts

playlist.m3u8

13

HLS

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

Ffmpeg

14

HLS

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

Ffmpeg

15

HLS

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

Ffmpeg

16

HLS

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

Ffmpeg

Ffmpeg

17

HLS

Ffmpeg

Ffmpeg

Ffmpeg

18

Архитектура

Storage

Transcoder

avi, mkv, ogv, …

iOS

Android

Firefox

Safari

Yandex.BrowserWinPhone

Chrome

mp4, webm, hls

19

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

Balancer

Transcoder TranscoderTranscoder

Storage

20

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

Balancer

Transcoder TranscoderTranscoder

Storage

Balancer

21

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

Balancer

Transcoder TranscoderTranscoder

Storage

Balancer

video content

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

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

22

Проблема

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

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

23

Проблема

Идея!

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

24

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

Balancer

Клиент 1

Storage

Transcoder

Клиент 2

Клиент 3

Клиент 4

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

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

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

25

Проблема

26

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

API

Клиент 1

RealtimeOffline

Конвертация

Клиент 2

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

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

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

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

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

27

Результат

Лев Толмачев

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

Контакты

tolmalev@yandex-team.ru

top related