乐趣区

关于webrtc:Ubuntu1804编译ZLMediakit支持webrtc

背景

最近在做流媒体相干的一些货色, 比拟了一些开源的流媒体服务, 目前 srsZlmediaKit 我的项目是评估比拟高的, 明天次要在 Ubuntu18.04 上编译 ZlmediaKit, 并反对 webrtc 协定.

筹备

源码筹备

下载 zlmediakit 源码及其依赖组件源码.


git clone --depth 1 https://github.com/ZLMediaKit/ZLMediaKit.git

# 下载依赖组件源码
git submodule update --init

装置或编译依赖

查问是否曾经装置 openssl 1.1.1 及以上版本, 个别 ubuntu18.04 应该曾经有了.

# 查看 openssl 的版本
openssl version -a

下载 libsrtp 源码, 用于编译 webrtc 时所依赖.

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
make -j8
sudo make install

应用 apt-get 装置其它相干依赖.

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

编译


cd ./ZLMediaKit
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true
cmake --build . --target MediaServer

编译门路在我的项目 release 目录.

[master][~/Downloads/zlmediakit-checkout/ZLMediaKit/release/linux/Debug]$ pwd

# output
/Users/guoxiangxun/Downloads/zlmediakit-checkout/ZLMediaKit/release/linux/Debug

运行

进入到编译后果目录, 间接应用 sh./ 运行. 如果须要后盾运行, 能够加上 -d 参数.

./MediaServer -d &

但按以上命令执行, 还会时不时在终端上打印日志, 我最终优化了下, 写了两个脚本用于启动和进行.

启动脚本 start_mediakit.sh


#!/usr/bin/env bash

# 把输入抛弃
./MediaServer -d > /dev/null 2>&1 &

进行脚本 kill_mediakit.sh


#!/usr/bin/env bash

# kill 掉所有过程 (可能有 fork 过程)
ps -eaf | grep MediaServer | tr -s "" | cut -d" " -f2 | xargs kill

运行胜利后, 应用 chrome 浏览器拜访: http://192.168.1.113:8080/webrtc/ 进行测试.

FAQ

  • 启动 MediaServer 时提醒端口创立失败, 没有权限.

    须要应用 root 用户或者 sudo 运行.

  • 如果通过 nginx 反向代理拜访 mediakit, 开启 hook 有效.

    有可能须要在 config.ini 配置 forwarded_ip_header 参数为服务器 ip.

    # 能够把 http 代理前实在客户端 ip 放在 http 头中:https://github.com/ZLMediaKit/ZLMediaKit/issues/1388
    #切勿裸露此 key,否则可能导致伪造客户端 ip
    forwarded_ip_header=xxx.xxx.xxx.xxx
    
退出移动版