• Ubuntu18.04编译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
      
      
  • 相关阅读:
    关于旅游景点主题的HTML网页设计——北京景点 7页(带订单购物车)Html+Css+javascript
    【taro react】---- 兼容微信小程序和H5的海报绘制插件
    Django的可重用HTML模板示例
    proxy配置
    redis实现延迟队列
    XSS进阶三
    【m98】视频缓存PacketBuffer 2 :nack等填充包信息后插入
    WSL2编译安卓11源码,,刷入pixel设备,并使用asfp查看源码
    vm的生命周期钩子
    MySQL的DDL操作数据库
  • 原文地址:https://www.cnblogs.com/alps2006/p/17133634.html