当前位置:首页 » 《我的小黑屋》 » 正文

centos下基于ZLMediaKit 的WebRTC 环境搭建

0 人参与  2024年10月05日 08:40  分类 : 《我的小黑屋》  评论

点击全文阅读


系列文章目录

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


文章目录

系列文章目录背景一、主机环境二、依赖安装1.openssl 安装2.libsrtp 安装 三、编译ZLMediaKit四、测试1、通过hosts文件实现ZLMediaKit域名解析host文件位置和格式:修改方法: 2、运行服务3、浏览器测试 总结


背景

先说下题外话,前面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.9gcc (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/bashwget https://www.openssl.org/source/openssl-1.1.1k.tar.gztar -xvzf openssl-1.1.1k.tar.gzyum install -y zlib zlib-devel perl-CPANcd openssl-1.1.1k ./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/opensslmake && make installecho "/usr/local/lib64/" >> /etc/ld.so.confecho "/usr/local/openssl/lib" >> /etc/ld.so.confldconfigrm -rf /usr/local/bin/opensslln -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/bashwget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gztar -xvzf v2.5.0.tar.gzcd libsrtp-2.5.0./configure --enable-openssl --with-openssl-dir=/usr/local/opensslmake -j8 && make install

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

三、编译ZLMediaKit

编写脚本 vi zlm_install.sh

#下载源码#!/bin/bashgit clone --depth 1 https://gitee.com/xia-chu/ZLMediaKitcd ZLMediaKit# 初始化子模块 git submodule update --init#编译mkdir buildcd buildcmake .. -DENABLE_WEBRTC=true  -DOPENSSL_ROOT_DIR=/usr/local/openssl  -DOPENSSL_LIBRARIES=/usr/local/openssl/libcmake --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.com192.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 的流媒体服务环境。
希望本文能为需要搭建类似环境的用户提供有价值的参考。如果遇到问题或有改进建议,欢迎提出讨论。

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/167820.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1