centos下基于ZLMediaKit 的WebRTC 环境搭建

系列文章目录

第一篇 基于SRS 的 WebRTC 环境搭建
第二篇 基于SRS 实现RTSP接入与WebRTC播放
第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建



背景

先说下题外话,前面SRS很优秀,因为功能比较多,所以代码量也比较大,并且里面是协程的架构,虽然可以GDB调试,但想要驾驭可能要花一定的时间,对于一些对时间比较紧,需要快速熟悉,并能对开源代码进行二次开发的场景,选择ZLMediaKit可能比较合适。
ZLMediaKit 是一个高性能、跨平台的媒体服务器框架,主要用于流媒体的传输和处理。它支持多种流媒体协议,包括 RTSP、RTMP、HLS、HTTP-FLV 等,广泛应用于视频监控、直播、点播等场景。是基于C++11来编写的,性能也比较高,代码量还好,还是先把环境搭起来,跑通Demo比较重要,这里记录下我的编译和webrtc测试步骤,和官方文档上不同的地方是将其部分内容脚本化来和补充了详细的测试步骤,供后面回顾和快速搭建。

也可参照官网部署:https://docs.zlmediakit.com/zh/guide/protocol/webrtc/webrtc_compilation_and_use.html


一、主机环境

编译机器:
centos 7.9
gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
cmake version 3.28.1

二、依赖安装

1.openssl 安装

编写openssl 安装脚本openssl_install.sh
vi openssl_install.sh

#!/bin/bash
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xvzf openssl-1.1.1k.tar.gz
yum install -y zlib zlib-devel perl-CPAN
cd openssl-1.1.1k 
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install
echo "/usr/local/lib64/" >> /etc/ld.so.conf
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig
rm -rf /usr/local/bin/openssl
ln -s /usr/local/openssl/bin/openssl  /usr/local/bin/openssl # 替换系统openssl,非必须
openssl version 

给脚本可执行权限并执行
chmod 777 openssl_install.sh
./openssl_install.sh

2.libsrtp 安装

编写脚本 vi librtsp_install.sh:

#!/bin/bash
wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz
tar -xvzf v2.5.0.tar.gz
cd libsrtp-2.5.0
./configure --enable-openssl --with-openssl-dir=/usr/local/openssl
make -j8 && make install

给脚本可执行权限并执行
chmod 777 librtsp_install.sh
./librtsp_install.sh

三、编译ZLMediaKit

编写脚本 vi zlm_install.sh

#下载源码
#!/bin/bash
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 初始化子模块 
git submodule update --init

#编译
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true  -DOPENSSL_ROOT_DIR=/usr/local/openssl  -DOPENSSL_LIBRARIES=/usr/local/openssl/lib
cmake --build . --target MediaServer

给脚本可执行权限并执行
chmod 777 zlm_install.sh
./zlm_install.sh

编译成功如下
在这里插入图片描述

四、测试

1、通过hosts文件实现ZLMediaKit域名解析

最新的 zlmediakit 源码自带有效的 ssl 证书default.pem,对应的域名是default.zlmediakit.com,该域名解析到的 ip 为127.0.0.1。这里需要解决怎么在另外一台电脑上也能通过 https://default.zlmediakit.com/ 访问 ZLMediaKit 服务器。

可以选择修改 SSL 证书,配置 DNS 或修改 hosts 文件实现,这里选择修改hosts文件实现,其原理是在操作系统中,hosts 文件用于将主机名(域名)映射到 IP 地址。无论是 Linux 还是 Windows 系统,hosts 文件的作用都是将网络请求中的域名解析到指定的 IP 地址。更确切的原理是在 DNS 解析之前,系统会先查看 hosts 文件中的内容。这个文件中的映射关系优先于 DNS 服务器的解析结果。如果 hosts 文件中有某个域名的记录,系统会直接使用该记录中的 IP 地址,而不再查询 DNS 服务器。

host文件位置和格式:

Linux:/etc/hosts 文件。每一行包含一个 IP 地址和一个或多个主机名,使用空格或制表符分隔。
Windows:C:\Windows\System32\drivers\etc\hosts 文件。格式与 Linux 类似,也包含 IP 地址和主机名的映射。

修改方法:

在 Linux 中,你可以使用文本编辑器(如 vi、nano 等)以超级用户权限打开并修改 /etc/hosts 文件。添加类似 192.168.110.56 default.zlmediakit.com 的行可以将 default.zlmediakit.com 映射到 IP 地址 192.168.110.56。
在 Windows 中,你需要以管理员权限运行文本编辑器,打开并修改 hosts 文件。在文件中添加类似 192.168.110.56 default.zlmediakit.com 的行,以实现相同的映射。

在这里,我们的目标是windows机器能够访问linux下ZLMediaKit,使用的是 default.zlmediakit.com 这个域名,只需要在 Windows 机器上修改 hosts 文件,如下:

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost

#140.82.112.4 www.github.com

192.168.110.56 default.zlmediakit.com
#192.168.110.57 default.zlmediakit.com

2、运行服务

./MediaServer -s default.pem
在这里插入图片描述

3、浏览器测试

在浏览器上输入https://default.zlmediakit.com/ 进行访问,开两个不同的窗口,一个选择push推流,一个选择play播放,我测试的网络环境下200ms左右的延时,如下图。

在这里插入图片描述

总结

本文详细记录了在 CentOS 7.9 环境下编译和安装 ZLMediaKit 的全过程,涵盖了依赖项的安装、编译步骤以及如何通过修改 hosts 文件在不同机器间实现域名解析。通过这些步骤,我们成功地搭建了一个基于 WebRTC 的流媒体服务环境。
希望本文能为需要搭建类似环境的用户提供有价值的参考。如果遇到问题或有改进建议,欢迎提出讨论。

你好,我是阿灿,慢慢理解世界,慢慢更新自己,每天进步一点点,成为更好的自己。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值