Auteur | mind_programmonkey
Zebian | Wu Xingling
Produit | Blog RPSC
Le serveur de streaming avec un haut Ngix + RTMP + FFmpeg, effets simples en direct.
Nginx est un serveur Web léger / serveur proxy inverse et e-mail (IMAP / POP3) serveur proxy. nginx-RMTP-module est un serveur multimédia en continu fiche Nginx. Module Nginx fourni par le service RTMP RTMP, FFmpeg pousser un flux RTMP Nginx, puis le client en vous rendant Nginx pour regarder des vidéos en streaming en direct.
Quoi qu'il en soit, ont encore à sourire dans le visage de celui-ci!
Actuellement type de produits en direct
-
Pan spectacles
Pepper, se reflètent sur l'autre point d'ancrage de divertissement, ainsi que d'autres jeux en direct Betta
-
en direct interactif en temps réel
Conférences audio et vidéo, la diffusion et l'éducation d'autres, comme les ongles, réunion Tencent
1. Pan architecture de divertissement en direct
2. l'architecture en direct interactive en temps réel
Des connaissances supplémentaires: réseau CDN
1. Le site de mode d'accès général
Regardez d'abord sur le site de mode d'accès général.
Lorsqu'un utilisateur veut accéder à un site Web, indiquez le nom de domaine de ce site, DNS résoudra l'adresse du nom de domaine, l'utilisateur demande d'adresse, renvoie une page Web. Tout comme vous voulez acheter quelque chose, il faut d'abord trouver l'emplacement du magasin, puis est allé à l'intérieur du magasin pour trouver ce qu'ils veulent, et enfin tenir retour à la maison quelque chose.
CDN: réseau de contenu de livraison, le réseau de fournisseur de contenu (distribution).
2. Utiliser le « dépôt intermédiaire » pour optimiser
Par exemple, vous allez acheter site du fournisseur d'électricité chose, il faut chose, de l'entrepôt central dans le siège du secteur de l'électricité d'envoyer dessus? L'original est fondamentalement comme celui-ci, chaque individu est la distribution, de sorte que vous pouvez prendre beaucoup de temps pour recevoir votre bébé. Mais après que le système logistique site Web appel de plus sages, ils ont établi dans tout le pays beaucoup d'entrepôts, plutôt que seul le siège de l'entrepôt central avant de pouvoir livrer.
Selon les statistiques site du fournisseur d'électricité savent probablement, Pékin, Shanghai, Guangzhou, Shenzhen, Hangzhou et d'autres endroits, combien peuvent vendre des livres, du papier toilette, sacs, appareils électriques et d'autres durée de vie relativement longue des objets de tous les jours. Ces articles ne doivent pas envoyer d'un entrepôt central, donc en général, ils peuvent être distribués autour de l'entrepôt, d'un seul client, l'entrepôt le plus proche est délivré, peut être reçu le lendemain.
De cette façon, l'expérience utilisateur est grandement améliorée.
3. Réseau dans la « distribution le plus proche »
Il y a tellement de centre de données globales, peu importe où l'Internet, sont essentiellement non loin près du centre de données. N'est pas en mesure de déployer plusieurs machines dans le centre de données, la formation d'un cache de cluster pour mettre en cache des données, puis lorsque l'utilisateur l'accès aux données, vous pouvez accéder au plus proche de celui-ci?
Bien sûr, nous pouvons. Ces nuds centres de données respectifs situés en divers endroits, il est appelé nuds de bord.
Étant donné que le nombre de noeuds bord plus, mais chaque taille de cluster de noeud de bord est relativement faible, il ne peut pas être mis en mémoire cache toutes choses, et par conséquent ne peut pas être touché. Cette volonté sur le nud de bord, il y aura des nuds régionaux, à plus grande échelle est nécessaire, les données mises en cache est plus, plus la probabilité de toucher. Sur une surface du nud est le point central, plus grandes, plus les données du cache. Si vous ne frappez, je l'avais visité l'arrière du site à la source.
Ngix + RTMP + FFmpeg un serveur simple flux
Nginx est un serveur Web léger / serveur proxy inverse et e-mail (IMAP / POP3) serveur proxy. nginx-RMTP-module est un serveur multimédia en continu fiche Nginx. Module Nginx fourni par le service RTMP RTMP, FFmpeg pousser un flux RTMP nginx, puis le client en vous rendant Nginx pour regarder des vidéos en streaming en direct.
Ainsi, l'étape suivante consiste à construire l'environnement, allez, allez, allez! ! ! !
Pour télécharger rapidement, source de miroir peut le remplacer. Ubuntu apt-get remplacement de la source miroir domestique https://blog.csdn.net/qq_21095573/article/details/99736630
1. Sur la base de l'ensemble des services Linux RTMP jusqu'à Nginx
a. Télécharger nginx
wget
b. décompression nginx
tar xvf nginx-1.15.3.tar.gzc. Télécharger le module du Nginx
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.1.tar.gz
d. décompression
tar xvf v1.2.1.tar.gz
e. Installer les bibliothèques nécessaires pour compiler nginx
Sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev
f. être nginx répertoire
cd nginx-1.15.3
g. # -add-module pointant vers le répertoire du module d'exécution rtmp
./configure prefix =. / bin --AJOUTEZ-module = .. / nginx-RTMP-module 1.2.1
h. compilé et installé dans le répertoire bin du répertoire courant
make && make install
Vous pouvez commencer dans le répertoire courant exécuter bin / sbin / nginx
bin / sbin / nginx -s arrêt d'arrêt
Dans le navigateur, entrez [IP]: 8080
Remarque:
Notez que si le port est occupé par le répertoire, comme si 8080 le port est occupé, peut être changé en 8081, puis besoin de ports ouverts.
Port inspection d'occupation: lsof -i: 8080
2.FFmpeg
FFmpeg monté deux manières: l'une est simple, l'autre est un peu plus complexe.
a. Installation simple
Premier arrivé simple, en trois étapes
Première étape: Ajouter la source.
ppa add-apt sudo-dépôt: djcj / hybride
Deuxième étape: source de mise à jour.
Sudo apt-get update
La troisième étape: télécharger et installer.
Sudo apt-get install ffmpeg
b. installation compliquée
La première étape pour soutenir la bibliothèque est installée
Sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool-dev libva libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg- config texinfo wget zlib1g-dev
apt install libavformat-dev apt install libavcodec-dev apt install libswresample-dev apt install libswscale-dev apt install libavutil-dev apt install libsdl1.2-dev Sudo apt-get install yasmLa deuxième étape, x264
gir clone https://github.com/qupai/x264 cd x264 ./configure --enable-pthread --enable-shared --enable-pic faire make installLa troisième étape, FFmpeg
Site officiel de téléchargement: http: //www.ffmpeg.org/download.html
goudron -jxvf ffmpeg-4.1.tar.bz2 cd ffmpeg-4.1 ./configure --enable-libx264 enable-gpl --enable-shared --extra-cflags = -I / usr / local / inclure --extra-ldflags = -L / usr / local / lib --enable pic faire sudo make install export LD_LIBRARY_PATH = / usr / local / ffmpeg / lib: $ LD_LIBRARY_PATH ldd ffmpegSi vous rencontrez ce problème:
ffmpeg: Erreur lors du chargement des bibliothèques partagées: libavdevice.so.58: ne peut pas ouvrir le fichier objet partagé: Aucun fichier ou répertoire - trouver sudo / -name libavdevice.so.58 # trouver le fichier d'adresse correspondant - vim sudo /etc/ld.so.conf # fin de fichier ajouter une ligne à / usr / local / lib - exécution de ldconfig sudo # de la phrase, l'entrée en vigueur du fichier ci-dessusRéexécutez -encoders ffmpeg | grep x264 constateront que l'installation a réussi
Après une installation réussie, vérifier les résultats, ffmpeg -version
3. Poussez flux Tirer le flux commence
flux Plug se réfère à la phase d'acquisition de contenu de bonne transmission de paquets au processus du serveur, l'extrémité d'ancrage de la voix poussé localement recueilli le serveur multimédia streaming vidéo. Il est de signaux vidéo en direct au réseau de processus.
Ensuite, vous montrer:
Le fichier hôte dans Windows Media 1.mp4 flux à Ubuntu pousser la machine virtuelle serveur de streaming multimédia Nginx, puis dans le menu déroulant ubuntu écoulement par le jeu de FFplayer ce processus.
Windows PUSHDOWN flux:
ffmpeg -i 1.mp4 -f flv rtmp: //192.168.8.169/live/room
ubuntu ouvrir le service Nginx
fichier nginx.conf dans ce qui suit le contenu nouvellement ajouté, la fonctionnalité d'augmentation RTMP et faire Nginx peut avoir la fonction de surveillance de l'état en direct:
Après cela, démarrez le service
bin / sbin / nginx
ubuntu tirer en streaming
ffplay rtmp: //192.168.8.169: 1935 / live / chambre
Et vous avez terminé! ! !
Eh bien, cette fois-ci sur le premier cas.
Avertissement: Cet article est l'article original blogueurs RPSC « de mind_programmonkey », et suivi CC BY-SA 4.0 accord du droit d'auteur, reproduit, s'il vous plaît joindre le lien source d'origine et cette déclaration.
Lien original: https: //blog.csdn.net/Mind_programmonkey/article/details/104584444