最近公司要提高流媒体视频的播放性能,多方查询资料后,发现ZLMediaKit流媒体服务器的性能比较高,延迟主要存在于web播放器,而webrtc是浏览器低延时播放视频比较好的解决方案之一,查询了几天资料,终于将webrtc应用成功了,这里记录一下。
OS版本: Ubuntu 16.04
openssl版本: OpenSSL 1.1.1l-dev
国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
千万不要忘记执行这句命令
git submodule update --init
ZLMediaKit采用了C++11的语法和库,要求编译器支持完整的C++11标准,亦即:
linux上要求gcc 版本 >= 4.8(4.7应该也能支持)
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpeg
git clone https://github.com/openssl/openssl.git
或者搞一个稳定版本
wget https://github.com/openssl/openssl/archive/refs/heads/OpenSSL_1_1_1-stable.zip
unzip OpenSSL_1_1_1-stable.zip
或者
$ wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
$ tar -xvzf openssl-1.1.1k.tar.gz
然后
cd openssl
./config
make -j4
sudo make install
指定快捷方式
因为默认安装到/opt/openssl目录,或者config的时候指定/usr/lib,要不就把库链接过去,
注意libssl.so.1.1 看安装的版本(建议openssl版本1.1),可ls查看openssl目录中文件名后缀
sudo ln -s /opt/openssl/libssl.so.1.1 /usr/lib/libssl.so.1.1
sudo ln -s /opt/openssl/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
git clone https://gitee.com/mirrors/cisco-libsrtp.git
注意,这里需要将cisco-libsrtp重命名
mv cisco-libsrtp libsrtp
cd libsrtp
./configure --enable-openssl
make -j4
sudo make install
cd..
cd ZLmediaKit
mkdir build
cd build
cmake -DENABLE_WEBRTC=on ..
make -j4
(附)cmake这里可配置openssl路径
cmake .. -DENABLE_WEBRTC=true -DOPENSSL_ROOT_DIR=/opt/openssl -DOPENSSL_LIBRARIES=/opt/openssl/lib
make -j4
返回上一级
cd release/linux/Debug
sudo ./MediaServer -s ./ssl.pem
将ZLMediaKit下的整个www目录移动到/release/linux/Debug中
cp -r /opt/ZLMediaKit/www/ /opt/ZLMediaKit/release/linux/Debug/www
zlmeiakit工程自带webrtc测试播放/推流器,启动zlmediakit后,浏览器访问http://127.0.0.1/webrtc/就可以访问之。webrtc在"ZLMediaKit/release/linux/Debug/www"目录下有一文件夹“webrtc”,参考其中webrtc的使用方式,引入到自己代码中。