OBS studio и протоколы RTMP и HLS на NGINX

FussesDemon

Администратор
Администратор
9 Фев 2005
4.474
615
113
www.unifree.ru
Предыстория
Захотел человек стримы свои делать собрал народ И его стримы должны быть на протяжении 1 часа. Зум жабиться больше 40 минут нельзя бесплатно. Стримы и другие площадки не всегда бесплатные.

Человеку нужно в начале было взаимодействовать со всеми А это значит он должен был видеть всех. Конференция это называют. Это говори о том что вся публика тоже должна стримить потоковое видео. Но от этого человек думаю скоро откажется. Потому что условия у всех разные бывают. Плюс если будет несколько десятков людей или даже сотен в час не уложится Но все же это в ходит в задачу на данный момент.

Я решил сам организовать бесплатный аналог зум Это можно было сделать и средствами freeswitch Есть тут тема об этом Но не совсем стабильно клиентская часть. Коммерческие не знаю не юзал.

И так взял за пример OBS https://obsproject.com/
Очень развился и полностью технически устраивает. Настройки особо никакой нет. Захватить камеру и все.

Дальше мне нужен был сервер RTMP который примет от OBS потоковое видео В качестве RTMP выступить мог и freeswitch но оказалось там настроек RTMP довольно мало и в основном нужен для внутреннего вывода информации.
Мой выбор пал на nginx https://nginx.org/
За последние 5 лет он реально развился как веб сервер и плюс у него есть модуль RTMP. Но тут сказывается винда и нет совсем компиляции под винду, новых версий нет попросту. И прошлось юзать сборку от 15 года. Как раз на пике популярности стримов.
Столкнулся с тем что нет информации описания на русском языке. Все на английском и даже на китайском ))
Ещё подумываю свою сборку скомпилировать средствами WSL https://ru.wikipedia.org/wiki/Windows_Subsystem_for_Linux Это будет другая история. )))

Итог
1 Из OBS захватываем источник видео
2 Созданный RTMP направляем из локальной сети используя OBS
3 Принимаем RTMP на сервере NGINX во внешнем глобальной сеть интернет (стандартный порт 1935)
4 Средствами NGINX его модуля RTMP оборачиваем данные в HLS
5 HLS готовит плейлист с видео для WEB сервера.
6 Веб сервер с помощью JavaScript и HTML уже транслирует картинку потокового видео

Вот такой конструктор. Я не смог добиться без HLS сразу гнать потоковое видео в RTMP на веб сервер. Но я там лоханулся когда все это собирал. В браузерах нельзя запускать с localhost адреса для потокового видео в браузерах. Я этого не знал и не подозревал. Нужно в адресе обязательно заходит с IP адреса! Что понял это через много часов.
RTMP легко запустить в программах, VLC проигрыватель легко хавает. Можно дальше все что хочешь делать с видео потоком.
У меня остался открытым вопрос возможно RTMP сразу на веб отправить ? Или нужно обязательно конвертировать с кодаками. Это уже получится как webrtc Но webrtc из браузера конвертировать опять в RTMP?)) Получается если поднять локально WebRTC то его опять захвать OBS или чем то ещё..)) Когда сам OBS легче без посредников браузера захватить источник видео. А если это источник уже в интернете то опять через RTMP?

Что такое


Вот такая история. Отпишусь если получится найти готовый портал по видео аналог ютуба куба тик тока. И реализовать стрим только для одного человека. Вывести его на веб И уже средствами веб объединять пользователей в конференцию. В аналог зума и со всеми инструментами в нем. Так же и с мобильника можно транслировать на OBS и через общую сеть захватывать с них видео и дальше по схеме выше.
 
  • Like
Реакции: Bingo

FussesDemon

Администратор
Администратор
9 Фев 2005
4.474
615
113
www.unifree.ru
Почитал тут бегло ребят и понял что RTMP загнать в браузер можно но через кодаки ..как бы

Открыл на мобильнике приложения которые пуляют RTMP с камеры. То есть в реальности при своем сервере можно легко организовать стрим чего угодно и куда угодно и когда угодно. Так же как через FreeSWITCH транслировал рабочий стол через VoIP передачей SIP
Один RTMP можно транслировать куда угодно. Не углублялся но вроде еще и накладывать друг на друга.

Если получится попрошу людей создать нагрузку и определить задержки трансляции. Сейчас они составляют пару секунд за счет HLS Думаю как сократить время еще больше. Заставить NGINX перегонять HLS на RAMDISK это сократит потери чтения/записи
 

FussesDemon

Администратор
Администратор
9 Фев 2005
4.474
615
113
www.unifree.ru
Начал задаваться битрейдом

1639437965318.png

1639438078785.png


1639438348176.png


bitrates
So you know your upload speed and the limits of what it can do — what now? Let’s look at some examples of setups you can use for your stream based on your bitrate.
1080p 60 fps (Full HD, high framerate)
Recommended upload speed: 6.5–8+ Mbps
Resolution: 1920 x 1080
Bitrate: 4500 to 6000 kbps
Framerate: 60 fps
720p 60 fps (HD, high framerate)
Recommended upload speed: 5.5–7 Mbps
Resolution: 1280 x 720
Bitrate: 3500 to 5000 kbps
Framerate: 60 fps

1080p 30 fps (Full HD, standard framerate)
Recommended upload: 5.5–7+ Mbps
Resolution: 1920 x 1080
Bitrate: 3500 to 5000 kbps
Framerate: 30 fps
720p 30fps (HD, standard framerate) *START HERE*
Recommended upload speed: 4.5–6 Mbps
Resolution: 1280 x 720
Bitrate: 2500 to 4000 kbps
Framerate: 30 fps

480p 60 fps (SD, high framerate)
Recommended upload speed: 3.5–5 Mbps
Resolution: 640 x 480
Bitrate: 1500 to 2500 kbps
Framerate: 60 fps

Conclusion: Underst
 
Последнее редактирование:

FussesDemon

Администратор
Администратор
9 Фев 2005
4.474
615
113
www.unifree.ru
И так что с таймлайном? После несколько дней изучений гайдов и далее несколько дней проектировки и все ещё на стадии программирования на view-me.ru
У меня уже созрел план промо ролика на стадии изучения гайдов. Из которого последуют другие запилы проектов долгострои. И в надежде мне хватит мотивации наконец-то реализовать все проекты. А так же уже начать масштабный краудфандинг для более нескольких десятков проектов.

Сейчас основное время уходит на проектировку кодингда 15-25% от общего времени.
Для полноценного запуска сырого бета платформы ещё пилить минимум 50% осталось времени. Между альфой версией на которую мне понадобилось больше времени на поиски изучения гайдов и тестов. Сама реализация альфо версии было выполнено за 12-16 часов.
1639640340139.png