Ubuntu18.04编译ZLMediakit支持webrtc
2024-10-20 21:07:02
背景
最近在做流媒体相关的一些东西, 比较了一些开源的流媒体服务, 目前 srs
和 ZlmediaKit
项目是评价比较高的, 今天主要在 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
最新文章
- ORACLE告警日志文件
- C语言退出多层嵌套循环技巧
- ASP.NET 操作Cookie详解 增加,修改,删除
- Jetty 嵌入式开发(实例)
- 佳佳的魔法药水 (vijos 1285)
- 用状态矩阵解决有序操作的case爆炸问题(转载)
- Git教程(10)git比较复杂的功能
- [leetcode-575-Distribute Candies]
- WebAssembly:随风潜入夜
- 仿滴滴抢单倒计时的Demo
- Bootstrap col-md
- 利用redis实现分布式锁
- Web框架之Bootstrap
- 去除swagger ui的红色 error 错误提示
- Codeforces Round #131 Div1 B
- css按钮口诀 - CSS BUG顺口溜
- laravel 5.4在控制器构造函数中获取auth中间件失败
- 【剑指offer】替换空格
- PM2使用及介绍
- BZOJ4036 [HAOI2015]按位或 【minmax容斥 + 期望 + FWT】
热门文章
- devexpress中searchLookUpEdit赋值不显示
- React综合使用联系
- day08 final关键字&;面向对象——多态&;抽象类、方法&;向上、向下转型
- 架构解析:Dubbo3 应用级服务发现如何应对双11百万集群实例
- 将 Vue.js 项目部署至静态网站托管,并开启 Gzip 压缩
- 【Day03】Spring cloud:源码讲解与容器化初探
- 1分钟理清楚C++类模板和模板类区别
- 【FAQ】申请Health Kit权限的常见问题及解答
- 1、debug调试
- 对于goland相对较新一些版本新建项目时没用go mod模式选项的坑