Compile y ejecute ZLMediaKit en Ubuntu

Resumen

Este artículo describe cómo construir el código fuente del proyecto ZLMediaKIt en Ubuntu y cómo experimentar sus funciones de transmisión y reproducción WebRTC.

ambiente de laboratorio

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

Instalación de biblioteca dependiente

#让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

Obtenga el código fuente de ZLMediaKit

ZLMediaKit recomienda oficialmente usar git para clonar el código ZLMediaKit, el ejemplo es el siguiente:

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

Generar script de compilación ZLMediaKit

cd ZLMediaKit
mkdir -p build
cd build

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

Durante el proceso de generación del script de compilación anterior, cmake generará una serie de mensajes. Asegúrese de poder ver la siguiente información:

Preste atención a la información que señala la flecha roja, si no la ve, la función WebRTC no debe funcionar correctamente.

Construir ZLMediaKit

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

Modificar la configuración de MediaServer

En la nueva versión de ZLMediaKit, los funcionarios exigen la modificación de la configuración de la clave secreta.

Utilice un editor de texto para abrir el archivo de configuración de MediaServer ZLMediaKit/release/linux/Debug/config.ini , busque el elemento de configuración secreto y modifique la clave predeterminada.

Abra ZLMediaKit/release/linux/Debug/www/webrtc/index.html con un editor de texto , busque la palabra clave secreta y asegúrese de que los parámetros clave de la URL sean consistentes con los de config.ini; de lo contrario, se encontrarán experimentos posteriores. Listas de transmisión en vivo. Problema vacío.

EjecutandoMediaServer

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

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

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

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

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

Experimento de inserción WebRTC

En el host donde se ejecuta MediaServer, abra una instancia (o pestaña) del navegador e ingrese: en la barra de direcciones:

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

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

En la página web de prueba WebRTC del navegador, se puede configurar la resolución de la cámara.

Como extremo de inserción de WebRTC, seleccione insertar como opción de método, verifique el canal de datos y haga clic en el botón de inicio.

No es de extrañar que puedas ver la siguiente pantalla:

 Cuando vea la imagen en la imagen de arriba, significa que la transmisión ha comenzado y puede iniciar el experimento de reproducción WebRTC.

Experimento de reproducción WebRTC

Abra otra instancia (o pestaña) del navegador e ingrese la misma dirección que el experimento de transmisión WebRTC en la barra de direcciones.

Como reproductor WebRTC, seleccione reproducir para la opción de método, verifique el canal de datos y haga clic en el botón de inicio.

No es de extrañar que puedas ver la siguiente pantalla:

 Ver la imagen de arriba indica que el experimento de transmisión y reproducción de WebRTC basado en el servidor de medios ZLMediaKit ha sido exitoso. Felicitaciones, ha ingresado al umbral del desarrollo de aplicaciones WebRTC.

Experimento de reproducción y transmisión RSTP

Esta sección describe cómo enviar un archivo mp4 local al servidor de medios ZLMediaKit a través del protocolo RTSP y permitir a los usuarios verlo a través del reproductor WebRTC en el navegador.

Modificar la configuración del servidor:

Abra el archivo de configuración del servidor de medios config.ini y cambie el valor del elemento de configuración directProxy a 0. El ejemplo es el siguiente:

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

Transmisión push con 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

Mira transmisiones en vivo con VLC:

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

Mira la transmisión en vivo con un navegador:

El método de reproducción es el mismo que el [experimento de reproducción WebRTC] Ingrese la siguiente URL en el navegador:

http://127.0.0.1/webrtc

Haga clic en la lista de transmisiones en vivo en el lado izquierdo de la página del reproductor WebRTC para comenzar a mirar.

Resumir

ZLMediaKit tiene funciones completas, excelente rendimiento y sólidas capacidades multiplataforma. Es una solución de aplicación de medios de streaming a nivel comercial. También es un excelente ejemplo para aprender a desarrollar aplicaciones de medios de streaming y programación en C++11. Es digno de -Estudio y comprensión en profundidad.

Supongo que te gusta

Origin blog.csdn.net/bigwave2000/article/details/132268733
Recomendado
Clasificación