背景

最近在做流媒体相关的一些东西, 比较了一些开源的流媒体服务, 目前 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

Ubuntu18.04编译ZLMediakit支持webrtc的更多相关文章

  1. Ubuntu18.04编译S3的Linux SDK(Zeta)

    按照S3官方Wiki(http://www.sochip.com.cn/s3)的陈述,推荐使用Ubuntu16.04作为Host端系统,笔者是一名乐于并热衷于尝鲜的搬砖工,于是,尝试在最新的18.04 ...

  2. Win10 WSL Ubuntu18.04 编译安装MySQL5.7

    ---恢复内容开始--- 在win10 商店中选择 ubuntu18.04 下载地址 http://dev.mysql.com/downloads/mysql/ wget https://cdn.my ...

  3. Ubuntu18.04编译Fuchsia

    编译环境 系统:Ubuntu 18.04.1 LTS 64-bit 内存:8 GiB CPU:Intel Core i5-4200M CPU @ 2.50GHz × 4 1.安装编译环境 sudo a ...

  4. ubuntu18.04编译jdk8

    准备编译环境 sudo apt-get install -y zip unzip build-essential libx11-dev libxext-dev libxrender-dev libxt ...

  5. ubuntu18.04 编译fortran出现 ‘没有f951这个文件’处理

    机器自带了gcc所以可以编译fortran文件, 使用时, gcc **.for –o ***.out 提示,没有找到f951. 然后去网上找解决方案,有的人说在其他地方找到了f951,然后把他复制到 ...

  6. ubuntu18.04 编译安装 apache php

    1. apache apache 需要依赖几个模块:apr, apr-util, pcre,也分别源码安装. 1.1 编译安装 1.1.1 apr apr-util 下载地址:http://apr.a ...

  7. Ubuntu18.04编译Zircon

    1.获取源代码 git clone https://fuchsia.googlesource.com/zircon 2.安装编译环境 sudo apt-get install texinfo libg ...

  8. ubuntu18.04编译openwrt前的准备

    1.获取openwrt源码 git clone https://github.com/openwrt/openwrt.git 2.安装一些库及必备程序: sudo apt-get install li ...

  9. Win10 Ubuntu18.04 编译安装 nignx

    nginx 下载页 http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.14.0.tar.gz //安装依 ...

  10. ubuntu18.04下挂载网络文件系统失败【学习笔记】

    作者:庄泽彬(欢迎转载,请注明作者) PC:    ubuntu18.04 说明:  之前ubuntu16.04下搭建的环境,开发板挂载网络文件系统是ok的,但是换到ubuntu18.04在启动的时候 ...

随机推荐

  1. Dubbo-Activate实现原理

    前言 在Dubbo中有Filter使用,对于Filter来说我们会遇到这样的问题,Filter自身有很多的实现,我们希望某种条件下使用A实现,另外情况下使用B实现,这个时候我们前面介绍@SPI和@Ad ...

  2. Froms

    首先看到的是一个输入框 不多说,直接bp抓下来 然后传repeater里,发现了pin值后showsource值,pin值没什么,应该是做题用的,而showsource是个隐藏的值,将其0改为1后go ...

  3. 模块/collections/random/time/datetime

    内容概要 模块--包的具体使用 编程思想介绍 软件开发--目录规范 常用模块介绍--collections模块 常用模块介绍--time.datetime 常用模块介绍--random 1.包的具体使 ...

  4. python实现AES加密解密

    1. 前言 AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个. 之前写过一片关于python AES加密解密的文章,但是这里面细节实在很多,这次我从 参数类型.加密模式.编码模式.补全 ...

  5. nuxt作为主应用接入qiankun的实践(附代码)

    上半年一直在倒腾qiankun,在使用nuxtjs接入qiankun时遇到了一些坑,记录并分享出来,希望能帮助到大家. 代码地址:nuxtjs-qiankun-demo Nuxtjs接入qiankun ...

  6. 【微服务架构设计实施】第一部分:架构篇-1:微服务架构与Spring Cloud介绍

    〇.概述 一.微服务架构与Spring Cloud (一)概念 不同说法:细粒度的.清凉组件化的小型SOA(面向服务架构) 统一说法:小型应用程序(服务组件),使用轻量级设计方法和HTTP协议通信 理 ...

  7. 【Shell案例】【!~//、grep反向查找、sed流编辑器】13、去掉所有包含this的句子

    描述写一个 bash脚本以实现一个需求,去掉输入中含有this的语句,把不含this的语句输出示例:假设输入如下:that is your bagis this your bag?to the deg ...

  8. 【每日一题】【使用list&使用辅助栈实现】2022年2月11日-NC90 包含min函数的栈

    描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop.top 和 min 函数操作时,栈中一定有元素. 此栈包含的方法有:push(value): ...

  9. 【Java EE】Day09 JavaScript基础

    一.JavaScript简介 二.JavaScript语法 三.JavaScript对象

  10. Windows10下python3和python2同时安装(三)VS 2013配置python环境

    Windows10下python3和python2同时安装(三) VS 2013配置python环境 说明:本文基于python2和python3同时安装之后,对VS 2013进行配置,下面有些地方文 ...