Maison  >  Article  >  Opération et maintenance  >  Comment nginx utilise le module nginx-rtmp-module pour implémenter la fonction de salle de diffusion en direct

Comment nginx utilise le module nginx-rtmp-module pour implémenter la fonction de salle de diffusion en direct

WBOY
WBOYavant
2023-05-19 08:13:051557parcourir

Environnement système

wujianjun@wujianjun-work ~ $ uname -a
linux wujianjun-work 4.10.0-37-generic #41~16.04.1-ubuntu smp fri oct 6 22:42:59 utc 2017 x86_64 x86_64 x86_64 gnu/linux

Environnement logiciel

obs (logiciel de diffusion ouvert) v20.0.1 (linux)

version nginx : nginx/1.13.6

construite par gcc 5.4.0 20160609 (ubuntu 5.4.0-6ubuntu1~16.04 .5)

construit avec openssl 1.0.2g 1 mars 2016

support tls sni activé

configurer les arguments : –with-pcre=pcre-8.38 –add-module=nginx-rtmp-module-1.1.11

Installation et configuration de nginx+obs Installez obs

wujianjun@wujianjun-work ~ $ sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
wujianjun@wujianjun-work ~ $ sudo apt-get update && sudo apt-get install ffmpeg
wujianjun@wujianjun-work ~ $ sudo apt-get install obs-studio
wujianjun@wujianjun-work ~ $ sudo add-apt-repository ppa:obsproject/obs-studio
wujianjun@wujianjun-work ~ $ sudo apt-get update && sudo apt-get install obs-studio

nginx et installez le module rtmp

nginx-rtmp-module ( )

wujianjun@wujianjun-work ~ $ sudo apt-get install build-essential
wujianjun@wujianjun-work ~ $ wget wget http://nginx.org/download/nginx-1.13.6.tar.gz
wujianjun@wujianjun-work ~/nginx-1.13.6 $ wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.11.tar.gz
wujianjun@wujianjun-work ~/nginx-1.13.6 $ tar -xvf v1.1.11.tar.gz
wujianjun@wujianjun-work ~/nginx-1.13.6 $ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz
wujianjun@wujianjun-work ~/nginx-1.13.6 $ tar -xvf pcre-8.38.tar.gz
wujianjun@wujianjun-work ~/nginx-1.13.6 $ ls -all
总用量 748
drwxr-xr-x 9 wujianjun wujianjun 4096 10月 15 11:39 .
drwxr-xr-x 63 wujianjun wujianjun 4096 10月 15 11:33 ..
drwxr-xr-x 6 wujianjun wujianjun 4096 10月 15 11:33 auto
-rw-r--r-- 1 wujianjun wujianjun 282456 10月 10 23:22 changes
-rw-r--r-- 1 wujianjun wujianjun 430416 10月 10 23:22 changes.ru
drwxr-xr-x 2 wujianjun wujianjun 4096 10月 15 11:33 conf
-rwxr-xr-x 1 wujianjun wujianjun 2502 10月 10 23:22 configure
drwxr-xr-x 4 wujianjun wujianjun 4096 10月 15 11:33 contrib
drwxr-xr-x 2 wujianjun wujianjun 4096 10月 15 11:33 html
-rw-r--r-- 1 wujianjun wujianjun 1397 10月 10 23:22 license
drwxr-xr-x 2 wujianjun wujianjun 4096 10月 15 11:33 man
drwxrwxr-x 6 wujianjun wujianjun 4096 2月 13 2017 nginx-rtmp-module-1.1.11
drwxr-xr-x 7 wujianjun wujianjun 4096 11月 23 2015 pcre-8.38
-rw-r--r-- 1 wujianjun wujianjun  49 10月 10 23:22 readme
drwxr-xr-x 9 wujianjun wujianjun 4096 10月 15 11:33 src
wujianjun@wujianjun-work ~/nginx-1.13.6 $ ./configure --with-pcre=pcre-8.38 --add-module=nginx-rtmp-module-1.1.11
wujianjun@wujianjun-work ~/nginx-1.13.6 $ make && sudo make install
wujianjun@wujianjun-work ~/nginx-1.13.6 $ ls -all /usr/local/nginx/
总用量 24
drwxr-xr-x 6 root root 4096 10月 15 16:11 .
drwxr-xr-x 11 root root 4096 10月 15 16:11 ..
drwxr-xr-x 2 root root 4096 10月 15 16:11 conf
drwxr-xr-x 2 root root 4096 10月 15 16:11 html
drwxr-xr-x 2 root root 4096 10月 15 16:11 logs
drwxr-xr-x 2 root root 4096 10月 15 16:11 sbin

Ajouter la configuration du protocole rtmp

wujianjun@wujianjun-work ~/nginx-1.13.6 $ sudo vi /usr/local/nginx/conf/nginx.conf

Ajoutez la configuration du protocole rtmp suivante à la fin du nginx. conf file

rtmp {
 server {
  listen 1935;
  chunk_size 4096;

  application live {
   live on;
   record off;
  }
 }
}

Start & Test

Start nginx

wujianjun@wujianjun-work ~/nginx-1.13.6 $ sudo /usr/local/nginx/sbin/nginx

Start obs

Ouvrez le logiciel obs nouvellement installé, configurez la source push de l'image à la source (je choisis la capture de fenêtre ici), cliquez sur "Paramètres" dans le coin inférieur droit, comme indiqué ci-dessous Configurez l'adresse push de streaming

Comment nginx utilise le module nginx-rtmp-module pour implémenter la fonction de salle de diffusion en direct

Une fois la configuration terminée, cliquez sur "Démarrer le streaming"

Démarrez le lecteur vidéo qui prend en charge la lecture en streaming réseau (la démonstration utilise le lecteur vlc)

Configurez l'adresse pour la lecture en streaming réseau, comme indiqué ci-dessous :

Comment nginx utilise le module nginx-rtmp-module pour implémenter la fonction de salle de diffusion en direct

Après avoir cliqué sur "Play", attendez quelques secondes et vous verrez le lecteur afficher l'image capturée par obs.

Comment nginx utilise le module nginx-rtmp-module pour implémenter la fonction de salle de diffusion en direct

Étant donné que le flux vidéo doit être transmis via le réseau, il y aura un retard de plusieurs secondes dans l'image en direct.

Accès http à la vidéo en direct

1. Modifiez la configuration dans nginx.conf, ajoutez la configuration hls (hls est un dossier utilisé pour stocker les médias en streaming dans le serveur multimédia en streaming) et définissez le répertoire où se trouve hls sur http. à nouveau le répertoire d'accès au protocole. , la configuration modifiée est la suivante :

rtmp {
 server {
  listen 1935;
  chunk_size 4096;

  application live {
   live on;
   hls on;
   hls_path /usr/share/nginx/html/hls;
   hls_fragment 5s;
  }
 }
}

http {
 server {
 listen 80;
 .....
 location / {
   #root html;
   root /usr/share/nginx/html;
   index index.html index.htm;
 }
 .....
 }
}

Remarque : l'utilisateur de nginx dans le répertoire où se trouve hls doit avoir l'autorisation d'écriture.

2. Le logiciel Obs configure le nom du flux d'enregistrement

Sous la configuration de l'URL du flux push obs, il y a un endroit pour définir le "nom du flux". Vous pouvez remplir un nom ici (je remplis "test" dans l'exemple ici)

3. Redémarrez les logiciels nginx et obs, et nous pouvons saisir http://ip/hls/test.m3u8 dans le navigateur mobile pour lire la vidéo en direct sur le téléphone mobile. (Le délai de diffusion en direct est un peu important, et l'article sera optimisé ultérieurement)

Comment nginx utilise le module nginx-rtmp-module pour implémenter la fonction de salle de diffusion en direct

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer