55

Video Streaming. NGINX RTMP in particular

Embed Size (px)

Citation preview

Page 1: Video Streaming. NGINX RTMP in particular
Page 2: Video Streaming. NGINX RTMP in particular

Основы видео стриминга. Бесплатный сервер стриминга

для себя и маленькой сети.

Page 3: Video Streaming. NGINX RTMP in particular

• Антон Пинчук

• Системный администратор

• Уже 4й год

Page 4: Video Streaming. NGINX RTMP in particular

То чторасскажу

То что хочу

рассказать

Page 5: Video Streaming. NGINX RTMP in particular

О чем я расскажу в двух частях:

?

Page 6: Video Streaming. NGINX RTMP in particular

Зачем?

Мне? Вам?

Что это такое?

История Платформы

Доставка пользователю

Виды Методы Протоколы

Схема

Теория Практика

Элементы стрима

Источники Микшеры OBS Настройки Схема

передачи на сервер

Сервер

Установка Виды настройки HDS + HLS Статистика

Первая часть

Page 7: Video Streaming. NGINX RTMP in particular

Вторая частьСхема

обработки видео

Что куда идет и зачем

BitRate

Принцип CBR VBR

CODEC

Принцип Пирамида

сжатия Прикладные

кодеки Примеры

сжатия

Page 8: Video Streaming. NGINX RTMP in particular

Для чего это понадобилось мне?

Page 9: Video Streaming. NGINX RTMP in particular

Хватит о себе, для чего это вам?

Page 10: Video Streaming. NGINX RTMP in particular

Какие бонусы?)))

Page 11: Video Streaming. NGINX RTMP in particular

Какие минусы?)))

Page 12: Video Streaming. NGINX RTMP in particular

Что же такое стриминг?

Page 13: Video Streaming. NGINX RTMP in particular

Немного истории))

Page 14: Video Streaming. NGINX RTMP in particular
Page 15: Video Streaming. NGINX RTMP in particular

Методы доставки контента

Streaming

Adaptive Bitrate Streaming

File Download

Progressive Download

Pseudo-Streaming

Page 16: Video Streaming. NGINX RTMP in particular

File Download

Page 17: Video Streaming. NGINX RTMP in particular

Progressive Download

Page 18: Video Streaming. NGINX RTMP in particular

Pseudo-StreamingTo HTTP

Page 19: Video Streaming. NGINX RTMP in particular

Streaming

Page 20: Video Streaming. NGINX RTMP in particular

Adaptive Bitrate Streaming

Page 21: Video Streaming. NGINX RTMP in particular

Виды доставки

Live (Прямой Эфир) On-Demand (По требованию)

Streaming Adaptive str. Download Streaming Progressive Dwn. Adaptive Streaming

Page 22: Video Streaming. NGINX RTMP in particular

Сложности выбора!

HLS – HDS - Dash, RTMP-RTSP, Progressive…

Page 23: Video Streaming. NGINX RTMP in particular

HLS File Structure

Master Playlist.mp4.m3u8

Playlist Bitrate 1.mp4.m3u8

Segment 1 Bitrate 1.mp4.ts

Segment 2 Bitrate 1.mp4.ts

Playlist Bitrate 2.mp4.m3u8

Segment 1 Bitrate 2.mp4.ts

Segment 2 Bitrate 2.mp4.ts

Page 24: Video Streaming. NGINX RTMP in particular

HDS File Structure

Master Manifest.f4m

Manifest Bitrate 1.f4m

Index Bitrate 1.f4x

Fragment Bitrate 1.f4f

Manifest Bitrate 2.f4m

Index Bitrate 2.f4x

Fragment Bitrate 2.f4f

Page 25: Video Streaming. NGINX RTMP in particular

Real Time Messaging Protocol (RTMP)

• TCP streaming protocol• Live and VOD • Поддерживается множеством софта• Не HTTP• Быстр

Page 26: Video Streaming. NGINX RTMP in particular

Логическая схема стриминга

Получение данных

Готовка(микширование

и сжатие)

Раздача зрителям

Практическая схемаSource Mixer Encoder Server People

Page 27: Video Streaming. NGINX RTMP in particular

Что же может быть источником?

Page 28: Video Streaming. NGINX RTMP in particular
Page 29: Video Streaming. NGINX RTMP in particular
Page 30: Video Streaming. NGINX RTMP in particular

А тут список Software решений• Open source[edit] Commercial[edit]• DVSwitch (Linux) avtake CutFour (SD/HD,

Microsoft Windows 7 64bit) [11] • FreeJ (Linux & OS X) [2] wdCamCamX (Mac OS X) [13]

• ScreenStudio (Linux & partially OS X) [3] ManyCam (Mac OS X and Microsoft Windows) [14]

• WebcamStudio (Linux) [4] D3DGear Broadcaster(Microsoft Windows) [15]

• Open Broadcaster Software(Linux,Microsoft Windows,OS X) [5 XSplit Broadcaster (Microsoft Windows) [19]

• CasparCG (Microsoft Windows) [6] vMix (Microsoft Windows) [17]

• Voctomix (Linux) [7] Wirecast (Mac OS X) and (Microsoft Windows) [18]

• Freeware[edit] CamTwist (Mac OS X) [8]

• FFsplit (Microsoft Windows) [9] • Wirecast for YouTube(Microsoft Windows, Mac OS X) [10] •

Page 31: Video Streaming. NGINX RTMP in particular
Page 32: Video Streaming. NGINX RTMP in particular

32

Page 33: Video Streaming. NGINX RTMP in particular

33

Page 34: Video Streaming. NGINX RTMP in particular

34

С чем имел дело я?

IP Camera+ RadioMic+AudioMixer

IP h.264+audio with lag

PC+OBSAudio In +

RTSP Module

Transformation 3000 Bitrate

RTMP

NGINX-RTMPJV Player

Page 35: Video Streaming. NGINX RTMP in particular
Page 36: Video Streaming. NGINX RTMP in particular

Качественные характеристики стрима!

• Зачем все это?• Bitrate• Quality• Theoretical Codec (FPS, Colours, Picture, Audio)• Practical Codecs

36

Page 37: Video Streaming. NGINX RTMP in particular

Bitrate

37

Page 38: Video Streaming. NGINX RTMP in particular

38

Page 39: Video Streaming. NGINX RTMP in particular

39

Page 40: Video Streaming. NGINX RTMP in particular

40

Page 41: Video Streaming. NGINX RTMP in particular

41

Page 42: Video Streaming. NGINX RTMP in particular

42

Quality(Искажения)

Computation(Вычисления)к

Comression (rate)

Page 43: Video Streaming. NGINX RTMP in particular

43

Page 44: Video Streaming. NGINX RTMP in particular

44

Page 45: Video Streaming. NGINX RTMP in particular

45

Page 46: Video Streaming. NGINX RTMP in particular

46

Page 47: Video Streaming. NGINX RTMP in particular

47

Page 48: Video Streaming. NGINX RTMP in particular

Bitrate

FileSizeQuality

48

Page 49: Video Streaming. NGINX RTMP in particular

Прикладные кодеки• H.264• Intel QuickSync• Nvidia NVENC

49

Page 50: Video Streaming. NGINX RTMP in particular

50

Page 51: Video Streaming. NGINX RTMP in particular

51

Page 52: Video Streaming. NGINX RTMP in particular

Выжимка

52

H.264 NVENC QS

Bitrate CPU Video CPU Video CPU Video Intel Video

1500 55% 10% 16% 16% 16% 34% 57%

3000 60% 10% 17% 17% 17% 35% 59%

4500 64% 10% 17% 17% 18% 38% 60%

Page 53: Video Streaming. NGINX RTMP in particular

Как это выглядит у больших компаний?

• Youtube – принимает в RTMP. А потом пережав на своих серверах, отдает уже в Dash на плеер.

• Как и Twitch –то же самое, но использует HLS.Вывод: сначала побыстрее получить поток от вас, а потом сжать и передать с помощью HTTP на CDN - дешево и сердито.

53

Page 54: Video Streaming. NGINX RTMP in particular

Не забыть• Юникаст – бродкаст – мультикаст• Безопасность.

54

Page 55: Video Streaming. NGINX RTMP in particular

55

?