Résumé de l'apprentissage de la technologie de diffusion en direct IoT

Étant donné que le travail implique un streaming multimédia en direct, l'article suivant enregistre le contenu de lecture multimédia en streaming, qui provient du solide soutien de collègues et d'Internet.

table des matières

La première partie du streaming 

Un diagramme de rationalisation de la technologie

Diagramme de structure interne des médias de deuxième flux

Diagramme de séquence d'analyse des médias à trois flux

Quatre protocoles en direct

La deuxième partie du serveur multimédia en continu (SRS)

1. Installation

Deux, marche / arrêt

Troisièmement, test de diffusion en continu

Quatre, test de débit de traction

les références


La première partie du streaming 

Feuille de route de la technologie de streaming IoT

Un diagramme de rationalisation de la technologie

La feuille de route technique est divisée en séries C / C ++ et java. La figure suivante présente la série java à titre de référence

Diagramme de structure interne des médias de deuxième flux

 

Diagramme de séquence d'analyse des médias à trois flux


Quatre protocoles de diffusion en direct

La deuxième partie du serveur multimédia en continu (SRS)

SRS (Simple RTMP Server) est un très bon logiciel de serveur de diffusion multimédia en continu open source écrit par des Chinois, qui peut être utilisé dans le service client de diffusion / enregistrement / vidéo en direct et dans d'autres scénarios. Il se positionne comme un serveur de diffusion en direct Internet de niveau opérationnel grappe.

1. Installation

Le site officiel propose trois méthodes d'installation: compiler et installer à partir du code source, utiliser docker (pour l'apprentissage) et télécharger et installer directement le package d'installation

Je crois que le but principal de beaucoup de gens est d'apprendre à utiliser srs, et peut ne pas être doué pour le langage C ++ lui-même, donc cet article ne présente que «comment utiliser le package d'installation» pour installer et déployer.

Téléchargez d'abord la dernière version stable depuis le site officiel (actuellement 3.0.97)  http://ossrs.net/srs.release/releases/files/SRS-CentOS7-x86_64-3.0.97.zip

Ensuite, téléchargez-le sur le serveur centos, décompressez-le dans le répertoire spécifié et exécutez la commande suivante pour l'installer:

1.1 Installation de la version mac

sudo ./INSTALL

 

cliquez pour voir le travail

Une fois l'installation réussie, une invite similaire à l'image ci-dessus apparaîtra.

S'il y a un message d'erreur de Aucun package lsb_release disponible. (Cette erreur est susceptible d'apparaître sur centos 7), vous pouvez essayer d'installer d'abord yum install -y redhat-lsb

astuces: Si vous souhaitez désinstaller, exécutez la commande suivante (à condition que srs soit d'abord arrêté)

sudo rm -rf /usr/local/srs
sudo rm -rf /etc/init.d/srs

1.2 installation centos7 (installation git source)

installation

[root @ localhost cuiyaonan] # yum install -y git #Ajoute git au système

[root @ localhost cuiyaonan] # git clone https://git.oschina.net/winlinvip/srs.oschina.git #download srs

[root @ localhost cuiyaonan] # cd srs.oschina /

[root @ localhost srs.oschina] # git pull

[root @ localhost srs.oschina] # git branch -a

[root @ localhost srs.oschina] # git checkout 2.0release

[root @ localhost srs.oschina] # cd trunk /

[root @ localhost srs.oschina] # ./configure

[root @ localhost srs.oschina] # ./make

Configuration

# srstest.conf

écoutez 19351;

fichier srs_log_tank; #Le journal de configuration promet au fichier, qui doit être utilisé en conjonction avec srs_log_level

srs_log_file ./objs/srs-edge.log; #Spécifiez l'emplacement du fichier journal.

srs_log_level trace; #Développer le niveau du fichier de configuration, le niveau par défaut est trace

daemon on; #Start en tant que daemon. Si vous voulez démarrer dans la console, vous devez configurer le daemon off; et, vous devez configurer la console srs_log_tank;

max_connections 1000; #Nombre maximum de connexions

pid objs / cuiyaonan-edge.pid;

# Ceci est lié à la configuration de http-flv

http_server {

    activé sur;

    écoutez 8081;

    dir ./objs/nginx/html;

}

 

vhost __defaultVhost__ {

   

# Ceci est lié à la configuration de http-flv

     http_remux {

        activé sur;

        mount [hôte virtuel] / [app] / [flux] .flv;

        hstrs on;

     }

 

# Ceci est la configuration de hls

 hls {

        activé sur;

        hls_fragment 10;

        hls_window 60;

        hls_path ./objs/nginx/html;

        hls_m3u8_file [app] / [flux] .m3u8;

        hls_ts_file [app] / [stream] - [seq] .ts;

 }

}

 

Deux, marche / arrêt

2.1 Démarrer

sudo /etc/init.d/srs start

2.2 Arrêt

sudo /etc/init.d/srs stop

De même, en plus de start / stop, il existe d'autres options, telles que: reload | status

1 [~]$ /etc/init.d/srs
2 Usage: /etc/init.d/srs {start|stop|status|restart|reload}

 

Troisièmement, test de diffusion en continu

Push streaming: publier la vidéo sur le serveur multimédia en streaming (prise en charge du fichier local ou de la caméra comme source vidéo)

 

3.1 Push streaming avec FFmpeg

FFmpeg est un ensemble de logiciels open source qui peuvent être utilisés pour enregistrer, convertir l'audio et la vidéo numériques, les convertir en flux et l'utiliser pour pousser des fichiers vidéo natifs vers SRS. Après le téléchargement depuis le site officiel de FFmpeg, décompressez-le directement sur cette machine pour l'exécuter.

astuces: Le code source srs est livré avec un exemple de flv, le chemin est ./trunk/doc/source.200kbps.768x320.flv

Commande de diffusion en continu:

./ffmpeg -re -i source.200kbps.768x320.flv -vcodec copie -acodec copie -f flv -y rtmp: // srs_server_ip: 1

Remarque: Le chemin complet de l'adresse IP du serveur flv et srs dans la commande ci-dessus doit être remplacé par les valeurs réelles en fonction de la situation. De plus: Par défaut, le rtmp de srs utilise le port 1935. Si le port est occupé ou si le port de srs.conf est modifié, veuillez l'ajuster en fonction de la situation; si le pare-feu est activé, vérifiez si 1935 est autorisé à accéder.

 

./ffmpeg -re -i /Users/jimmy/code/srs/trunk/doc/source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://*.*.*.*:1935/live/livestream
ffmpeg version 4.1.3-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2019 the FFmpeg developers
  built with Apple LLVM version 10.0.1 (clang-1001.0.46.3)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100
Input #0, flv, from '/Users/jimmy/code/srs/trunk/doc/source.200kbps.768x320.flv':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf54.63.104
  Duration: 00:03:30.73, start: 0.034000, bitrate: 251 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 768x320 [SAR 1:1 DAR 12:5], 212 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 30 kb/s
Output #0, flv, to 'rtmp://10.2.72.62:1935/live/livestream':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
    Stream #0:0: Video: h264 (High) ([7][0][0][0] / 0x0007), yuv420p(progressive), 768x320 [SAR 1:1 DAR 12:5], q=2-31, 212 kb/s, 25 fps, 25 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: aac (LC) ([10][0][0][0] / 0x000A), 44100 Hz, stereo, fltp, 30 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  508 fps= 25 q=-1.0 size=     693kB time=00:00:20.24 bitrate= 280.4kbits/s speed=   1x

 

 Si cela se passe bien, vous verrez une sortie similaire à celle ci-dessus, indiquant que le flux vidéo est poussé vers srs.

 

3.2 Utiliser obs pour collecter la caméra et pousser le flux

La ligne de commande de FFmpeg n'est pas très conviviale. Il est recommandé d'utiliser le logiciel de streaming open source OBS grand public. Vous pouvez  télécharger la dernière version sur le site officiel https://obsproject.com/ . À l'heure actuelle, de nombreux webcasteurs l'utilisent pour diffusion en direct. Le logiciel prend en charge les fichiers vidéo locaux et la diffusion en continu par caméra.

 

3.2.1 Poussée de fichiers

Commencez par en ajouter un: "source multimédia"

 Ensuite, créez un nouveau nom (entrez-le simplement)

Sélectionnez le fichier vidéo natif

 Vient ensuite la partie clé, entrez les paramètres:

Cliquez pour voir l'image source

 Dans Stream -> Server, entrez l'adresse de srs: rtmp: // srs_server_ip: 1935 / live (notez qu'aucun livestream n'est inclus ici), puis dans la clé de streaming, entrez livestream

Cliquez pour voir l'image source

Après le réglage, vous pouvez cliquer sur "Démarrer le flux push". Si cela se passe bien, la barre d'état ci-dessous affichera des données en temps réel:

Cliquez pour voir l'image source

 

3.2.2 Streaming push de la caméra

C'est presque la même chose que ci-dessus, la différence consiste simplement à ajouter un "périphérique de capture vidéo"

Sélectionnez ensuite l'appareil photo détecté par la machine (par exemple: l'image suivante montre la caméra FaceTime HD fournie avec le notebook mac)

L'opération suivante est la même:

 

Quatre, test de débit de traction

Pull stream: lisez le flux vidéo à partir du serveur de diffusion multimédia (pour le dire franchement: il suffit de jouer)

Il est recommandé d'utiliser le lecteur VLC open source  (bien sûr, tout autre lecteur prenant en charge la lecture de sources multimédia en réseau le fera), File -> Open Network, saisissez l'adresse rtmp: // srs_server_ip: 1935 / live / livestream 

Cliquez pour voir l'image source

Si cela se passe bien, il peut être joué normalement.

Cliquez pour voir l'image source

Je l'ai suspendu pour des raisons professionnelles. J'ai l'opportunité ou l'intérêt d'écrire à l'avenir. Merci pour votre soutien.

les références

 

https://www.cnblogs.com/yjmyzz/p/srs_study_1_install_push_and_pull_stream.html
http://ossrs.net/srs.release/releases/

Je suppose que tu aimes

Origine blog.csdn.net/u013380694/article/details/105536005
conseillé
Classement