当前位置: 首页 > news >正文

ZLMediaKit 编译以及测试(Centos 7.9 环境)

文章目录

  • 一、前言
  • 二、编译器
    • 1、获取代码
    • 2、编译器
      • 2.1 编译器版本要求
      • 2.2 安装编译器
    • 3、安装cmake
    • 4、依赖库
      • 4.1 依赖库列表
      • 4.2 安装依赖库
        • 4.2.1 安装libssl-dev和libsdl-dev
        • 4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖
  • 三、构建和编译项目(启用WebRTC功能)
    • 1、 openssl 安装 (openssl版本要求1.1以上)
    • 2、 libsrtp安装
    • 3、 编译ZLM
  • 四、运行


一、前言

  ZLMediaKit的作者是使用Ubuntu 16开发的,但是如果要跑到测试甚至于生产上必须要部署到centos上,笔者使用的是centos7.9环境,因为有需求就装完给大家分享一下。

二、编译器

1、获取代码

如果没有git,需要先安装git,有了yum都不是难事。

yum install git

验证git安装情况

[root@localhost zlm]# git version
git version 1.8.3.1

拉取代码

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

2、编译器

2.1 编译器版本要求

ZLMediaKit采用了C++11的语法和库,要求编译器支持完整的C++11标准,即:

linux上要求gcc 版本 >= 4.8(4.7应该也能支持)

2.2 安装编译器

如果你是centos7或以上用户,你可以这样安装gcc编译器:

yum -y install gcc
yum -y install gcc-c++

3、安装cmake

ZLMediaKit采用cmake来构建项目,通过cmake才能生成Makefile(或Xcode/VS工程),所以必须先安装cmake才能完成后续步骤。

ZLMediaKit官网的办法,安装cmake,发现版本还是太低,不满足最低的cmake版本要求。

#官方提供的安装办法(版本太低)
yum -y install cmake

作者使用下面的办法进行安装,首先下载对应的安装包,如果github的资源无法下载,可以先去找对应的文件,手动拷贝到目标机器上,进行后续的操作。

wget https://github.com/Kitware/CMake/releases/download/v3.26.3/cmake-3.26.3.tar.gz
#解压
tar -zxvf cmake-3.26.3.tar.gzcd cmake-3.26.3
./bootstrap#这步耗时较长,请耐心等待
gmake#进行安装
gmake install#检查版本
cmake --version

出现了错误

[root@localhost cmake-3.26.3]# cmake -version
CMake Error: Could not find CMAKE_ROOT !!!
CMake has most likely not been installed correctly.
Modules directory not found in
/usr/local/bin
段错误(吐核)

解决办法

原因:cmake 命令本来存在,然后进行了安装。 类似于缓存导致失败的一样。

hash -r

然后再执行

[root@localhost cmake-3.26.3]# cmake --version
cmake version 3.26.3CMake suite maintained and supported by Kitware (kitware.com/cmake).

版本已经升级了

4、依赖库

4.1 依赖库列表

  ZLMediaKit可选依赖一些第三方库,这些库都不是必选的;在构建ZLMediaKit时,cmake能查找系统路径中的这些库,并根据安装情况选择是否开启相关特性,你可以选择安装这些依赖并启用相关特性:

  • openssl

    • flash player在播放rtmp时,采用的是复杂握手模式,如果不安装该库,flash player将播放不了zlmediakit 提供的rtmp url.
    • 同时ZLMediaKit的https/rtsps/webrtc相关功能需要使用openssl才能开启。
  • ffmpeg

    • zlmediakit可以通过fork ffmpeg进程的方式实现多种协议的拉流,编译时不需要安装FFmpeg。
  • sdl、avcodec、avutil

    • 这3个库供ZLMediaKit的test_player测试程序使用,你通常不需要安装这3个库。

    4.2 安装依赖库

4.2.1 安装libssl-dev和libsdl-dev
#安装libssl-dev
yum install openssl-devel#安装libsdl-dev
yum install SDL-devel
4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖

直接安装可能会提示 没有可用软件包 的问题

[root@localhost ZLMediaKit]# yum install ffmpeg ffmpeg-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirror.lzu.edu.cn* epel: mirrors.tuna.tsinghua.edu.cn* extras: mirror.lzu.edu.cn* updates: mirrors.ustc.edu.cn
没有可用软件包 ffmpeg。
没有可用软件包 ffmpeg-devel。
错误:无须任何处理

这里就要更新下yum源,按照以下步骤进行操作。

执行下面这条命令

#安装 epel-release
yum install epel-release -y
#通过rpmfusion存储库安装 rpm
yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
#清理缓存
yum clean all
#重新生成缓存
yum makecache
#升级yum源
yum uptade
#安装依赖 ffmpeg-devel
yum install ffmpeg-devel
#安装依赖ffmpeg
yum install ffmpeg

输出一下内容即表示安装完成,执行ffmpeg version命令,可以直接打印版本等信息。
在这里插入图片描述

三、构建和编译项目(启用WebRTC功能)

作者编译zlm启用了webrtc功能

编译机器:

centos 7.9
gcc version 4.8.5 (GCC)
cmake version 3.26.3

1、 openssl 安装 (openssl版本要求1.1以上)

新建文件夹openssl

mkdir /openssl
cd /openssl
$ 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
$ ./config shared --openssldir=/openssl/openssl-1.1.1k --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
$ ln -s /usr/local/openssl/bin/openssl  /usr/local/bin/openssl # 替换系统openssl,非必须
$ openssl version -a

2、 libsrtp安装

去 这里 下载。

$ tar -xvzf libsrtp-2.3.0.tar.gz
$ cd libsrtp-2.3.0
$ ./configure --enable-openssl --with-openssl-dir=/usr/local/openssl
$ make -j8 && make install

如果对于一些比较新的编译环境(如GCC 10+),编译 libsrtp-2.3.0 可能会存在问题,可以考虑切换到 2.5.0 版本,即

$ wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz
$ tar -xvzf libsrtp-2.5.0.tar.gz
$ cd libsrtp-2.5.0

3、 编译ZLM

终于到了最振奋人心的时刻了,哈哈

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

输出

[ 96%] Built target test_rtcp_fci
[ 96%] Building CXX object tests/CMakeFiles/test_rtp.dir/test_rtp.cpp.o
[ 97%] Linking CXX executable ../../release/linux/Debug/test_rtp
[ 97%] Built target test_rtp
[ 97%] Building CXX object tests/CMakeFiles/test_wsServer.dir/test_wsServer.cpp.o
[ 97%] Linking CXX executable ../../release/linux/Debug/test_wsServer
[ 97%] Built target test_wsServer
[ 97%] Building CXX object tests/CMakeFiles/test_server.dir/test_server.cpp.o
[ 97%] Linking CXX executable ../../release/linux/Debug/test_server
[ 97%] Built target test_server
[ 98%] Built target jsoncpp
[ 98%] Linking CXX executable ../../release/linux/Debug/MediaServer
[100%] Built target MediaServer

四、运行

ZLMediaKit工程主要生成的二进制目标文件在release目录下。
这是ZLMediaKit作为服务器的主进程,该进程可以在免去开发的情况下直接作为测试流媒体服务器使用,如果你需要更复杂的业务逻辑,可以通过Web HOOK和RESTful API实现,同时你可以通过 配置文件 控制其参数。

在linux下启动:

cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &

根据 config.ini 文件中 http 部分的配置,启动之后通过浏览器直接访问,如果看到如下界面,就表示已经启动成功了。
在这里插入图片描述

停止或者关闭命令。

killall -2 MediaServer
http://www.lryc.cn/news/260005.html

相关文章:

  • 汽车清除积碳和清洗节气门
  • RocketMQ 总体概括
  • 使用qemu在arm上模拟x86并运行docker
  • IIS配置多域名跨域
  • el-form表单校验输入框值为0时 提示校验不通过
  • Vue3后台管理-项目总结
  • 利用Pytorch预训练模型进行图像分类
  • MSF学习
  • Mybatis与Spring结合深探——MapperFactoryBean的奥秘
  • processon使用及流程图和泳道图的绘画(登录界面流程图,门诊流程图绘制门诊泳道图,住院泳道图,OA会议泳道图),Axure自定义元件
  • 【虹科干货】关于JSON数据库
  • 区块链的可拓展性研究【03】扩容整理
  • golang学习笔记——互斥锁sync.Mutex、计数器sync.WaitGroup、读写锁sync.RWMutex
  • MFC 加载本地文件设置图标
  • 飞天使-linux操作的一些技巧与知识点6-ansible结合jinja2使用,可规范化进行自动化管控
  • ROS2 Control分析讲解
  • Java TCP(一对一)聊天简易版
  • 2.4 C语言之运算符
  • 做题笔记:SQL Sever 方式做牛客SQL的题目--SQL157
  • 微信小程序map视野发生改变时切换定位点
  • javaweb搭配ajax和json
  • VS2022 将项目打包,导出为exe运行
  • 【Py/Java/C++三种语言OD2023C卷真题】20天拿下华为OD笔试【DP】2023C-分班【欧弟算法】全网注释最详细分类最全的华为OD真题题解
  • pr模板哪个网站好?免费Pr模板视频素材下载网站 Prmuban.com
  • 【论文阅读】LoRA: Low-Rank Adaptation of Large Language Models
  • MybatisPlus的分页插件
  • 保障网络安全:了解威胁检测和风险评分的重要性
  • 3D摄影棚布光:Set A Light 3D Studio
  • #HarmonyOS:应用的包名配置--应用图标和标签配置--配置链接
  • docker小白第三天