É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
La deuxième partie du serveur multimédia en continu (SRS)
Troisièmement, test de diffusion en continu
Quatre, test de débit de traction
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
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:
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
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:
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
Si cela se passe bien, il peut être joué normalement.
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/