Compilez et exécutez ZLMediaKit sur Ubuntu

Résumé

Cet article décrit comment créer le code source du projet ZLMediaKIt sur Ubuntu et comment découvrir ses fonctions de streaming et de lecture WebRTC.

environnement de laboratoire

操作系统版本:Ubuntu 22.04.3 LTS
gcc版本:11.4.0
g++版本:11.4.0

Installation de bibliothèque dépendante

#让ZLMediaKit媒体服务器具备WebRTC流转发功能的必备依赖包
sudo apt install cmake pkg-config gcc g++ libssl-dev libsrtp2-dev libusrsctp-dev
#其它可选依赖包,请根据实际需要决定是否安装。
sudo apt install libsdl-dev libavcodec-dev libavutil-dev ffmpeg

#检查已安装的必备依赖库的版本
#示例版本为3.0.2
pkg-config --modversion libcrypto libssl
#示例版本为2.4.2
pkg-config --modversion libsrtp2
#示例版本为0.9.5.0
pkg-config --modversion usrsctp

Récupérer le code source de ZLMediaKit

ZLMediaKit recommande officiellement d'utiliser git pour cloner le code de ZLMediaKit. L'exemple est le suivant :

#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init

Générer le script de build ZLMediaKit

cd ZLMediaKit
mkdir -p build
cd build

#采用默认条件编译参数,生成Makefile文件
cmake -S .. -B .

Au cours du processus de génération de script de build ci-dessus, cmake affichera une série de messages d'invite. Veuillez vous assurer que vous pouvez voir les informations suivantes :

Faites attention à l'information pointée par la flèche rouge, si vous ne la voyez pas, la fonction WebRTC ne doit pas fonctionner correctement.

Construire ZLMediaKit

#用cmake命令并行编译
cmake --build . -j 16
#或者用make命令并行编译
make -j16
#耐心等待编译进度走到[100%]。

Modifier la configuration du MediaServer

Dans la nouvelle version de ZLMediaKit, les responsables exigent une modification de la configuration de la clé secrète.

Ouvrez le fichier de configuration MediaServer ZLMediaKit/release/linux/Debug/config.ini avec un éditeur de texte , recherchez l'élément de configuration secret et modifiez la clé par défaut.

Ouvrez ZLMediaKit/release/linux/Debug/www/webrtc/index.html avec un éditeur de texte , recherchez le mot-clé secret et assurez-vous que les paramètres clés de l'URL sont cohérents avec ceux du config.ini, sinon la liste des flux en direct sera toujours rencontré dans les expériences ultérieures.Problème vide.

Exécution de MediaServer

#cd到ZLMediaKit的构建输出目录
cd release/linux/Debug

#通过-h可以了解启动参数
./MediaServer -h

#在调试时,不带参数启动,方便观察控制台输出,退出请按Ctrl+C。
./MediaServer

#正式部署时,官方建议以守护进程模式启动
./MediaServer -d &

#杀死MediaServer守护进程的方法
killall -2 MediaServer

Expérience push WebRTC

Sur l'hôte sur lequel MediaServer est exécuté, ouvrez une instance (ou un onglet) de navigateur et saisissez : dans la barre d'adresse :

#示例为了避免端口冲突,将config.ini中的[http]节区的port修改为8080
http://localhost:8080/webrtc/

#如果未修改过默认的http服务端口,则应输入如下地址:
http://localhost/webrtc/

Dans la page Web de test WebRTC du navigateur, la résolution de la caméra peut être définie.

En tant que push end WebRTC, sélectionnez push comme option de méthode, vérifiez datachannel et cliquez sur le bouton Démarrer.

Sans surprise, vous pouvez voir l'écran suivant :

 Lorsque vous voyez l'image dans l'image ci-dessus, cela signifie que la diffusion en continu a commencé et que vous pouvez démarrer l'expérience de lecture WebRTC.

Expérience de lecture WebRTC

Ouvrez une autre instance (ou onglet) de navigateur et entrez la même adresse que l'expérience de streaming WebRTC dans la barre d'adresse.

En tant que lecteur WebRTC, sélectionnez play pour l'option de méthode, vérifiez datachannel et cliquez sur le bouton Démarrer.

Sans surprise, vous pouvez voir l'écran suivant :

 En voyant l'image ci-dessus, cela signifie que l'expérience de streaming et de lecture WebRTC basée sur le serveur multimédia ZLMediaKit a été réussie. Félicitations, vous avez franchi le seuil du développement d'applications WebRTC.

Expérience de streaming et de lecture RSTP

Cette section décrit comment transmettre un fichier mp4 local au serveur multimédia ZLMediaKit via le protocole RTSP et permettre aux utilisateurs de le regarder via le lecteur WebRTC dans le navigateur.

Modifier la configuration du serveur :

Ouvrez le fichier de configuration du serveur multimédia config.ini et modifiez la valeur de l'élément de configuration directProxy sur 0. L'exemple est le suivant :

[rtsp]
#此配置项必须设置为0,否则WebRTC播放会失败。
directProxy=0

Push streaming avec ffmpeg :

#参数“-re”表示模拟实际播放的速度进行推流。
#参数“-stream_loop -l”表示循环播放test.mp4。
#参数“-bf 0”表示视频编码时,BFrame数量为0,即禁止使用B帧,避免WebRTC播放时卡顿。
#参数“-b:v 1500000”表示视频编码码率为1.5Mbps,码率越高,视频画面越清晰,对网络带宽要求越高,可省略此参数,采用默认编码码率。
#参数“-b:a 96000”表示音频编码码率为96Kbps,可省略此参数,采用默认编码码率。
ffmpeg -re -stream_loop -1 -i "test.mp4" -bf 0 -vcodec h264 -acodec libopus -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

Regardez des diffusions en direct avec VLC :

在MediaServer中观察流地址(比如:.../rtp/36731AF0)。
打开VLC播放器,在【媒体】菜单中选择【打开网络串流】,输入如下网络 URL:
rtsp://127.0.0.1/live/test
点击【播放】按钮。

Regardez la diffusion en direct avec un navigateur :

La méthode de lecture est la même que celle de [Expérience de lecture WebRTC]. Entrez l'URL suivante dans le navigateur :

http://127.0.0.1/webrtc

Cliquez sur la liste des diffusions en direct sur le côté gauche de la page du lecteur WebRTC pour commencer à regarder.

Résumer

ZLMediaKit possède des fonctions complètes, d'excellentes performances et une forte capacité multiplateforme. Il s'agit d'une solution d'application multimédia de streaming de niveau commercial. C'est également un excellent exemple pour apprendre le développement d'applications multimédias de streaming et la programmation C++11. Il est digne de mention dans -étude et compréhension approfondies.

Je suppose que tu aimes

Origine blog.csdn.net/bigwave2000/article/details/132268733
conseillé
Classement