Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Алексей Акулович (ВКонтакте), Сквозь тернии к с...

CodeFest
January 31, 2018

Алексей Акулович (ВКонтакте), Сквозь тернии к своей платформе live трансляций, CodeFest 2017

https://2017.codefest.ru/lecture/1151

В докладе расскажу про:
● что вообще за "платформа live трансляций";
● какие были требования к ней;
● какие доступные решения рассматривали (речь зайдет о Wowza, Flussonic/Erlyvideo, Nimble Streamer и даже nginx с плагинами), а какие и почему даже не стали;
● какие пробовали запускать в продакшен: плюсы, и как обходили минусы;
● что было выбрано, и как оно работает сейчас;
● какие есть планы по технической части.

CodeFest

January 31, 2018
Tweet

More Decks by CodeFest

Other Decks in Programming

Transcript

  1. Мультимедиа backend: Чем я вообще занимаюсь? Видео Пуши Фотографии Истории

    Аудио Голосовые сообщения Документы Live трансляции
  2. Red5 Субъективно “как Wowza, только хуже” Не лучшие отзывы от

    тех, кто пробовал ранее Не стали тестить. Вот такие мы ненаучные :)
  3. Wowza совсем минусы Уже на тестах свопила машину (16G RAM

    + 4G SWAP) Иногда битые записи при реконнектах стримеров
  4. Nimble Streamer Отечественная команда Заинтересовались сотрудничеством Нужные нам фичи уже

    были в их планах Была своя клиентская либа для iphone/android Сервер написан на C++
  5. Nimble Streamer плюсы Интерфейс панели Потребление ресурсов cpu/mem API для

    настройки и получения состояния Панель+транскодер стоят ощутимо дешевле Wowza
  6. $ curl https://site.com/playlist.m3u8 #EXTM3U https://site.com/chunks.m3u8 $ curl https://site.com/chunks.m3u8 #EXTM3U chunk0.ts

    chunk1.ts <...> $ curl https://site.com/chunk0.ts <...> Nimble Streamer минусы - m3u8
  7. $ curl https://site.com/playlist.m3u8 #EXTM3U http://site.com/chunks.m3u8 nginx conf: sub_filter 'http://site.com' 'https://site.com;

    sub_filter_once on; sub_filter_types 'application/vnd.apple.mpegurl'; Nimble Streamer минусы - m3u8
  8. Nimble Streamer минусы - API Запросы к стороннему домену API

    Доступ по whitelist с отдельными IP (без подсетей)
  9. Nimble Streamer минусы - API Запросы к стороннему домену API

    Доступ по whitelist с отдельными IP (без подсетей) Nimble синхронизируется с API время от времени
  10. Nimble Streamer минусы - API Запросы к стороннему домену API

    Доступ по whitelist с отдельными IP (без подсетей) Nimble синхронизируется с API время от времени Docker + nginx tcp proxy + hosts
  11. Nimble Streamer минусы - API Запросы к стороннему домену API

    Доступ по whitelist с отдельными IP (без подсетей) Nimble синхронизируется с API время от времени Docker + nginx tcp proxy + hosts Настраивается не всё
  12. Nimble Streamer минусы - DVR Хранение записанных трансляций на диске

    У каждого стримера своя папка на все его стримы Удалить можно только целой папкой Но есть лимиты по времени и по месту
  13. Архитектура - входящий стрим rtmp { application myapp { live

    on; on_publish http://localhost:8080/remote_redirect ; notify_method get; } } http { location /remote_redirect { rewrite ^.*$ rtmp://1.2.3.4/app/$arg_name? permanent; } } https://github.com/arut/nginx-rtmp-module/wiki/Directives#on_play
  14. Архитектура - раздача рабочий рабочий раздающий раздающий раздающий раздающий раздающий

    раздающий раздающий зритель Внутренности зритель зритель зритель
  15. Архитектура - раздача рабочий рабочий раздающий раздающий раздающий раздающий раздающий

    раздающий раздающий зритель Внутренности зритель зритель зритель
  16. Архитектура - раздача $ curl -v https://site.com/stream_name < HTTP/1.1 302

    Moved Temporarily < Location: rtmp://site.com/stream_name $ curl -v https://site1.com/stream_name < HTTP/1.1 302 Moved Temporarily < Location: https://site2.com/stream_name
  17. Архитектура - раздача рабочий рабочий раздающий раздающий раздающий раздающий раздающий

    раздающий раздающий раздающий раздающий раздающий раздающий зритель Внутренности
  18. Архитектура входящий входящий рабочий рабочий раздающий раздающий раздающий раздающий раздающий

    раздающий раздающий раздающий раздающий раздающий раздающий стример зритель Внутренности
  19. Что было Dota2 The International в августе 2016 — 24к

    Dota2 The Boston Major в декабре 2016 — 26к Футбольные матчи — 34к
  20. Что есть iPhone — 3-4кк просмотров в день iPhone +

    Android — 5-7кк в день (пик 11кк) 200к новых стримов в день (пик 330к) Нагрузку вообще не замечаем :)