一.ZLMediaKit(webrtc)在CentOS7部署與啟動
# 1. 卸載舊版本
yum remove git
# 2. 安裝 yum 源的 Git 版本
yum install -y git
# 3. 查看版本
git version
# 輸出 git version 1.8.3.1配置全局環境變量
# 1. 編輯配置文件
vim /etc/profile
# 2. 在 /etc/profile 文件中末尾追加以下內容(相信你肯定已熟練掌握 Vim 使用啦)
export PATH=$PATH:/usr/local/git/bin
# 3. 回到終端, 刷新配置
source /etc/profile
# 4. 查看版本
git version
# 輸出 git version 2.35.1
步驟1:安裝ffmpeg
wget http://www.ffmpeg.org/releases/ffmpeg-3.1.tar.gz
tar -zxvf ffmpeg-3.1.tar.gzcd ffmpeg-3.1
./configure --prefix=/usr/local/ffmpeg
make && make installvi /etc/profile
在最后PATH添加環境變量:
export PATH=$PATH:/usr/local/ffmpeg/bin
保存退出
查看是否生效
source /ect/profile 設置生效ffmpeg -version
步驟2:gcc安裝
yum remove gcc
yum -y install bzip2
yum install gcc-c++
# 如果下載慢 可以瀏覽器輸入地址下載
curl https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 -O
# j對應bz2編碼 J對應gz編碼
tar xvfj gcc-5.4.0.tar.bz2
yum install gmp-devel mpfr-devel libmpc-devel
mkdir gcc-5.4.0-build
cd gcc-5.4.0-build
../gcc-5.4.0/configure --enable-languages=c,c++ --disable-multilib
make -j$(nproc) && make install # note: nproc is the number of threads (e.g.2or 4 or 8 )
步驟3:cmake安裝
安裝gcc等必備程序包(已安裝則略過此步)上面已安裝gc
yum install -y gcc gcc-c++ make automake 安裝wget (已安裝則略過此步)
yum install -y wget獲取CMake源碼包
wget https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5.tar.gz解壓CMake源碼包
tar -zxvf cmake-3.20.5.tar.gz進入目錄
cd cmake-3.20.5編譯安裝
./bootstrap && make -j4 && sudo make install
version `GLIBCXX_3.4.20‘ not found 解決方法
su root
cd /usr/local/lib64
# 下載最新版本的libstdc.so_.6.0.26
sudo wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
# 將下載的最新版本拷貝到 /usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64
cd /usr/lib64
# 查看 /usr/lib64下libstdc++.so.6鏈接的版本
ls -l | grep libstdc++
libstdc++.so.6 ->libstdc++.so.6.0.19
# 刪除/usr/lib64原來的軟連接libstdc++.so.6,刪除之前先備份一份
sudo rm libstdc++.so.6
# 鏈接新的版本
sudo ln -s libstdc++.so.6.0.26 libstdc++.so.6
# 查看新版本,成功
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
...
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_DEBUG_MESSAGE_LENGTH
步驟4:openssl 安裝 (openssl版本要求1.1以上)
$ 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=/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
$ ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl # 替換系統openssl,非必須
$ openssl version -a
步驟5:安裝 yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install
步驟6: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
步驟7:下載zlm源碼
#如果沒安裝git 那么安裝
yum install -y git
#國內用戶推薦從同步鏡像網站gitee下載
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
# 最終輸出
[ 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
修改配置文件
(1)由于webrtc協議需要告知播放器服務器所在ip,如果該ip對播放器不可見,會導致webrtc無法聯通。
請修改配置文件中rtc.externIP為播放器可見ip,如果不設置該配置項,zlmediakit將獲取網卡ip(一般是內網ip),
那么將無法跨域nat使用webrtc。
[rtc]
#rtc播放推流、播放超時時間
timeoutSec=15
#本機對rtc客戶端的可見ip,作為服務器時一般為公網ip,置空時,會自動獲取網卡ip
externIP=
#rtc udp服務器監聽端口號,所有rtc客戶端將通過該端口傳輸stun/dtls/srtp/srtcp數據,
#該端口是多線程的,同時支持客戶端網絡切換導致的連接遷移
#需要注意的是,如果服務器在nat內,需要做端口映射時,必須確保外網映射端口跟該端口一致
port=8000
#設置remb比特率,非0時關閉twcc并開啟remb。該設置在rtc推流時有效,可以控制推流畫質
rembBitRate=1000000(2)config.ini 配置文件注意,如果用不到hook,不要開啟。開啟后,所有的推拉流都會進行鑒權。
[hook]
#是否啟用hook事件,啟用后,推拉流都將進行鑒權
enable=0
運行
cd ZLMediaKit/release/linux/Debug
#通過-h可以了解啟動參數
./MediaServer -h
#以守護進程模式啟動
./MediaServer -d &
#以自定義配置文件啟動
./MediaServer -c 配置文件具體地址
(nohup ./MediaServer -c 配置文件具體地址 &)
測試webrtc:
地址為 http://192.168.41.252:8091/webrtc/ 。8091為config.ini文件中http配置的port。