lamess / ZLMediaKit编译

Created Mon, 12 Aug 2024 09:06:18 +0800 Modified Tue, 04 Mar 2025 09:37:41 +0800

OpenEuler安装ZLMediaKit

首先安装基础软件包。

dnf install gcc g++ git -y

安装最新版本cmake。

wget https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz
tar -xvf cmake-3.30.2-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.30.2-linux-x86_64 /usr/local/cmake
echo 'export PATH="/usr/local/cmake/bin:$PATH"' >> /etc/profile
source /etc/profile

安装vcpkg,并使用vcpkg安装ZLMediaKit。

git clone https://github.com/microsoft/vcpkg
./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install zlmediakit\[core,mp4,openssl,webrtc,sctp\]

等待约半小时后完成编译。

之后从git源码中拷贝其它必要文件。

mkdir MediaKit
cp vcpkg/installed/x64-linux/tools/zlmediakit/MediaServer MediaKit/
git clone https://gitee.com/xia-chu/ZLMediaKit
cp ZLMediaKit/conf/config.ini MediaKit/
cp -r ZLMediaKit/www MediaKit/
cp ZLMediaKit/default.pem MediaKit/

添加systemd守护。

cat > /usr/lib/systemd/system/MediaKit.service <<EOF
[Unit]
Description=MediaKit Service
After=network.target

[Service]
ExecStart=/opt/MediaKit/MediaServer -d
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start MediaKit

CentOS7安装ZLMediaKit

首先安装基础软件包。

yum install gcc gcc-c++ perl wget -y

如果没有git命令,可以使用endpoint安装新版本git。

yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum install git -y

下载部署CMake

wget https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz
tar -xvf cmake-3.30.2-linux-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/cmake-3.30.2-linux-x86_64 /usr/local/cmake
echo 'export PATH="/usr/local/cmake/bin:$PATH"' >> /etc/profile
source /etc/profile

CentOS7自带了1.0.2k版本的OpenSSL,不满足运行要求,先编译安装1.1.1w版本的OpenSSL

tar zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config shared --prefix=/usr/local/openssl && make && make install
mv /usr/bin/openssl{,.bak}
ln -s /usr/local/openssl/bin/openssl  /usr/bin/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig
openssl version

之后编译安装libsrtp

wget https://codeload.github.com/cisco/libsrtp/tar.gz/refs/tags/v2.3.0
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

下载ZLMediaKit源码。

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

将生成的文件提取出来。

mkdir /opt/MediaKit
cp /opt/ZLMediaKit/release/linux/Debug/MediaServer /opt/MediaKit/
cp /opt/ZLMediaKit/release/linux/Debug/config.ini /opt/MediaKit/
cp /opt/ZLMediaKit/release/linux/Debug/default.pem /opt/MediaKit/
cp -r /opt/ZLMediaKit/release/linux/Debug/www/ /opt/MediaKit/

添加systemd守护。

cat > /usr/lib/systemd/system/MediaKit.service <<EOF
[Unit]
Description=MediaKit Service
After=network.target

[Service]
ExecStart=/opt/MediaKit/MediaServer -d
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start MediaKit