Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Доставка live-video на Go
Search
Iskander (Alex) Sharipov
October 13, 2019
Programming
0
180
Доставка live-video на Go
Iskander (Alex) Sharipov
October 13, 2019
Tweet
Share
More Decks by Iskander (Alex) Sharipov
See All by Iskander (Alex) Sharipov
Go gamedev: XM music
quasilyte
0
39
Zero alloc pathfinding
quasilyte
0
180
Mycelium
quasilyte
0
15
Roboden game pitch
quasilyte
0
81
Ebitengine Ecosystem Overview
quasilyte
1
450
Go gamedev patterns
quasilyte
0
300
profile-guided code analysis
quasilyte
0
230
Go inlining
quasilyte
0
95
KPHP FFI
quasilyte
0
320
Other Decks in Programming
See All in Programming
ファイル先頭の use の意味、説明できますか? 〜PHP の namespace と autoloading の関係を正しく理解しよう〜 / namespace and autoloading in php
okashoi
2
470
TCA魔法学入門🪄
dazy
0
280
Compiling Python to WebAssembly with py2wasm
syrusakbary
0
130
せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
kuboaki
1
1.2k
WasmOS: Wasmを実行する自作Microkernel
riru
0
370
Deep Dive 大規模システムアーキテクチャ/開発組織エンジニアリング / Deep Dive Large-Scale System Architecture, Development Organization Engineering
nrslib
15
2.9k
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
7
2.1k
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
330
PHPアプリケーションのスケーラビリティと 信頼性を革新する nginx+ngx_mrubyとGoの融合
pyama86
2
240
とにかくHTTP3をライトニングに話す / Anyway, I'll talk to Lightning about HTTP3.
seike460
PRO
0
120
Laravel標準バリデーションでできること
hmb_ok
2
360
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
10
4.5k
Six Lessons from altMBA
skipperchong
19
2.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.2k
Become a Pro
speakerdeck
PRO
8
4.4k
Adopting Sorbet at Scale
ufuk
66
8.5k
A Tale of Four Properties
chriscoyier
150
22k
The Pragmatic Product Professional
lauravandoore
24
5.7k
Building a Scalable Design System with Sketch
lauravandoore
455
32k
GitHub's CSS Performance
jonrohan
1023
450k
What's new in Ruby 2.0
geeforr
335
31k
Transcript
Доставка live-video на Go Илья Щербак
[email protected]
Принципиальная схема Live
Реальная схема Live
Контейнер выполняет функцию оркестрации медиа Хранит метаинформацию о файле
Про контейнеры Указывает плееру где находятся нужные фреймы Хранит информацию по таймингу 1 2 3 4
Какие бывают контейнеры ▪ MP4 ▪ MPEG-TS ▪ OGG ▪
FLV ▪ Matroska
Транспортные медиа протоколы ▪ RTP/SRTP ▪ RTMP ▪ HLS ▪
MPEG-DASH ▪ HDS
RTMP ▪ Плохой дизайн протокола ▪ Спецификация не соответствует реализации
Flash Player ▪ Индивидуальный поток для каждого пользователя ▪ Очень плохо кешируется ▪ RTMP всё
HLS ▪ Хорошо кэшируется ▪ Быстро раздается ▪ Хорошо подходит
для broadcast ▪ Поддерживается на многих платформах ▪ Рабочий адаптивный стриминг
Как выглядит транспорт RTMP HLS
Добавляем транскодер Mediaserver Transcoder Transcoder RTMP HLS
Why Go is a good choice? ▪ SMP ▪ Channels
▪ C-style code ▪ Native back-pressure ▪ Easy build and deploy ▪ Easy to learn
Links ▪ https://github.com/VKCOM/kive – наш медиа сервер ▪ https://github.com/VKCOM/joy4 –
библиотека для работы с media ▪ https://www.ffmpeg.org/ – ffmpeg ▪ https://vk.com/video-147415323_456239030 – доклад про транскодинг и отладку