Tout a commencĂ© lorsque, en m'utilisant, en utilisant OBS Studio et une sorte de programme pour animer des fonds d'Ă©cran, j'ai créé un logo vidĂ©o Ă partir du logo (qui Ă©tait Ă©galement animĂ© sous la musique en cours). Ă ce moment, j'ai rĂ©alisĂ© que OBS Studio peut BEAUCOUP plus que de simples jeux en streaming. AprĂšs une connaissance plus Ă©troite avec OBS Studio, elle prĂ©tend ĂȘtre le programme le plus cool que j'ai jamais rencontrĂ© .
J'ai dĂ» diffuser un petit Ă©vĂ©nement pour des amis, mais comme j'ai le matĂ©riel pour un bon son et l'envie de faire cool, j'ai Ă©tĂ© intriguĂ© par l'organisation du stream avec un son sĂ©parĂ© et plusieurs camĂ©ras. Pour diverses raisons, le flux s'est avĂ©rĂ© ĂȘtre moyen, mais aprĂšs cette expĂ©rience, je semble imaginer comment cela devrait ĂȘtre. Et je veux partager. Ici.

Quoi?
L'idĂ©e est de trouver 2-3 opĂ©rateurs sans fil qui se rendent sur diffĂ©rents sites de l'Ă©vĂ©nement, communiquent avec les gens, dĂ©collent du trafic, etc. (enfin, comme des mecs sĂ©rieux, bref). Et quelqu'un s'assoit, communique avec lui sur le talkie-walkie et forme Ă partir de tout cela (et d'autre chose, par exemple, n'importe quel type de fenĂȘtres / moniteurs / projecteurs restreints) un contenu vidĂ©o intĂ©ressant qui n'est pas ennuyeux Ă regarder.
Vous pouvez Ă©galement combiner les Ă©crans de plusieurs ordinateurs en un seul flux, cela peut ĂȘtre utile pour les jeux. Bien qu'il existe trĂšs probablement d'autres technologies spĂ©cifiquement pour cette tĂąche.
Pourquoi?
Parce que cela vous permet de faire trÚs cool et de déplacer considérablement le plafond technologique de la qualité du flux presque pour rien.
Lorsque vous utilisez un tas de flux vidéo, la fraßcheur du flux sera déterminée par la composante créative et organisationnelle (enfin, et la qualité des connexions).
Quoi?
- Ordinateur portable
1.1. Obs studio
1.2. nginx avec module rtmp - Les opérateurs avec leurs smartphones
2.1. Une sorte d'application émettant la demande "stream rtmp", par exemple Larix Broadcaster , ou (s'il y a un peu d'argent supplémentaire) Ace Live Streaming ou BitStream - Wi-Fi stable, de préférence 5 GHz
- Liaison montante stable
S'il y a autre chose, vous pouvez faire un bon son, au moins sur des camĂ©ras fixes (qui peuvent ĂȘtre n'importe quelle toile de relativement haute qualitĂ©).
Et s'il y a un autre ordinateur Linux (ils disent que mĂȘme le Raspberry Pi est correct pour â€3 flux), vous pouvez lĂ©gĂšrement dĂ©charger l'ordinateur principal et son rĂ©seau pour traiter et envoyer le flux.
Comment?
Le protocole reconnu pour le streaming vidéo est RTMP . Essayer d'utiliser autre chose mÚne à des retards sauvages, ce fut ma principale erreur.
En toute honnĂȘtetĂ©, il convient de noter la technologie propriĂ©taire NewTek NDI (merci, Alexsey ), qui semble plus cool que RTMP. Cependant, pour notre cas d'utilisation, l'utilisation de NDI nĂ©cessitera beaucoup d'argent supplĂ©mentaire.
Il s'avÚre que l'acceptation d'un flux RTMP et sa redirection vers OBS Studio est aussi simple que de pilonner des poires. Il vous suffit de compiler nginx avec un module personnalisé et d'écrire une config. Mais plus à ce sujet plus tard.
Dans le bon sens, vous devez faire quelque chose comme ceci:

Autrement dit, ne donnez pas aux téléphones mobiles Internet afin qu'ils ne dépensent pas de ressources pour autre chose qu'un flux.
Mais s'il existe dĂ©jĂ une bonne connexion Wi-Fi avec Internet (et qu'il n'y a pas de point d'accĂšs supplĂ©mentaire Ă 5 GHz), alors vous ne pouvez pas dĂ©daigner et utiliser les connexions existantes. Cependant, il est toujours souhaitable d'envoyer le flux final Ă partir d'une autre connexion, ou, dans des cas extrĂȘmes, Ă partir de la mĂȘme, mais via un cĂąble.
S'il est nĂ©cessaire de recevoir des flux de camĂ©ras et d'envoyer le flux final via le mĂȘme wifi, testez soigneusement la stabilitĂ© (et notez qu'elle diminuera considĂ©rablement si une foule d'appareils saute sur ce wifi).
Comment monter le serveur RTMP?
Il est préférable de le faire sous Linux, afin de ne pas rencontrer de problÚmes avec toutes sortes de MINGW / MSYS. Et sur un matériel séparé (pas forcément puissant). Ou dans le menu fixe , vous pouvez ignorer cette section, car le fichier docker existe déjà . Grùce à WSL, il est également possible, mais il sera nécessaire de transférer manuellement le port TCP 1935 dans le pare-feu.
Voici un excellent manuel Comment configurer votre propre serveur RTMP privé à l'aide de nginx , et il est également écrit dans le dock . Un bref récit du freestyle:
Nous mettons les dépendances:
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev
Téléchargez la derniÚre version Mainline de la source ici :
wget http://nginx.org/download/nginx-1.15.2.tar.gz
Téléchargez la derniÚre version du module RTMP :
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip -O rtmp-module.zip unzip !$ -d .
Créez un Makefile:
./configure --with-http_ssl_module --add-module=./nginx-rtmp-module-master
Si vous tombez avant d'atteindre le Configuration summary
la Configuration summary
, nous résolvons les problÚmes.
Cette commande configurera votre streamer nginx pour qu'il vive dans /usr/local/nginx/
et s'exécutera avec la commande sudo /usr/local/nginx/sbin/nginx
. Ainsi, nginx du rĂ©fĂ©rentiel ne ressent rien. Cela peut ĂȘtre changĂ© en examinant ./configure --help
.
Nous compilons:
make -j4
Installer:
echo "nginx with RTMP module" > description-pak sudo checkinstall --pkgname nginx-rtmp --provides nginx --nodoc --deldesc -y sudo mkdir /usr/local/nginx/logs/ # Doesn't start without it
En principe, utiliser make install
dans ce cas est sûr, mais ce n'est toujours pas nécessaire .
Vérifier
$ /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.15.2
Personnaliser
sudo vim /usr/local/nginx/conf/nginx.conf
Ă la fin, ajoutez la configuration du serveur RTMP:
rtmp { server { listen 1935; application live { live on; record off; } } }
Si vous le souhaitez, vous pouvez configurer le serveur HTTP pour afficher des statistiques .
Le dock décrit ce que vous pouvez configurer d'autre, il y a vraiment beaucoup de choses. Si vous savez comment le faire mieux, je serai heureux d'ajouter une section sur la configuration du serveur avec du matériel des commentaires.
Nous le rendons pratique
alias rtmp-start="sudo /usr/local/nginx/sbin/nginx" alias rtmp-stop="sudo /usr/local/nginx/sbin/nginx -s stop" alias rtmp-status="cat /usr/local/nginx/logs/nginx.pid"
Que faire avec le serveur RTMP?
Envoyez-lui un flux depuis l'application mobile Ă rtmp://< IP>:1935/live/habr
oĂč live
est le nom de l'application RTMP dans la configuration nginx, et habr
est la clĂ© de flux , qui doit ĂȘtre modifiĂ©e pour diffĂ©rentes camĂ©ras.
Si vous avez configuré pour afficher les statistiques (et que vous n'avez pas oublié de modifier le chemin d'accÚs au fichier stat.xsl
), vérifiez que le flux est arrivé (à http: // localhost: 8080 / stat ).
Connectez-vous Ă tous les flux OBS Studio.


PROFIT !!!
De toute Ă©vidence, le serveur peut ĂȘtre non seulement local, mais Ă©galement accessible de l'extĂ©rieur, ce qui vous permettra de faire de mĂȘme, mais pas via Wi-Fi, mais via Internet. Vous pouvez crĂ©er votre propre analogue de flux de groupe Instagram et, en gĂ©nĂ©ral, des possibilitĂ©s illimitĂ©es))
C'est tout?
Il y a quelques autres choses que j'ai apprises d'erreurs et que je voudrais partager:
- Il est possible et nécessaire de modifier le débit binaire cible du flux final pendant la diffusion et de s'adapter à la connectivité. Restream, par exemple, dessine des graphiques sympas qui montrent combien vous devez réduire. Il existe une demande d'extraction pour sélectionner automatiquement un débit binaire , mais elle a bloqué ((
- Il existe un tel paramĂštre d' intervalle d'image clĂ© , et il doit ĂȘtre supĂ©rieur Ă une seconde (il doit ĂȘtre dĂ©fini manuellement dans la version avancĂ©e des paramĂštres de sortie ). Restream n'en parle qu'aprĂšs la fin du stream, UX est Ă son meilleur! )))
- Il y a une autre Pull Request extrĂȘmement utile , Ă laquelle j'ai participĂ© et pour laquelle je me noie activement, mais elle semble Ă©galement au point mort, bien que le responsable l'ait rĂ©cemment rappelĂ©e et repensĂ©e. Comme, pliz, si vous pensez aussi que l'absence du bouton Monitor sur les canaux audio est terrible.
Maintenant tout est sûr, merci de votre attention ^ _ ^
PS
Pour ceux qui essaient encore de construire nginx pour l'omniprĂ©sente Venda, voici le rĂąteau sur lequel j'ai marchĂ©, cette quĂȘte s'est avĂ©rĂ©e ĂȘtre, j'avais tellement peur de ce processus pour rien:
- Il est nécessaire de prendre le code source EXACTEMENT auprÚs de Mercurial (c'est bien qu'il y ait un bouton "télécharger zip"), il n'y a pas de dossier
src\os\win32
dans les archives du site. Si vous avez des codes sources sur le site, il y aura une erreur don't know how to make 'src/os/win32/ngx_win32_config.h'
. - Besoin d'un ancien MinGW d'ici et non
un peu moins ancien MSYS2. - Lors de l'installation de
mingw-developer-toolkit
vous devez supprimer la case Ă cocher de Perl. Perl doit ĂȘtre Windows. - Cette rĂ©ponse a bien aidĂ©.
- Lors de la compilation,
rc.exe
utilisé à partir de %ProgramFiles(x86)%\Windows Kits\10\bin\10.0.16299.0\x64
, vous devez ajouter ce dossier manuellement dans PATH - Il est nécessaire de supprimer l'indicateur
-WX
de CFLAGS
dans le Makefile pour que les vorings n'interrompent pas la compilation, il y a des vorings dans 1.15.3 ...
Total, j'ai quelque chose comme ça: