libwebrtc & libmediasoupclient编译
本文简单介绍在Ubuntu下libwebrtc的编译过程。
由于网速限制,实际编译过程是在远程vps上编译滴。
系统环境
Ubuntu 18.04系统的虚拟主机。
root@vultr:~# pwd
/root
root@vultr:~# cat /etc/issue
Ubuntu 18.04. LTS \n \l
编译webrtc
安装依赖工具
获取webrtc源代码需要使用Chromium depot tools。
root@vultr:~# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git # 下载工具
export PATH=$PATH:/path-to/depot_tools # 添加到环境变量
# 临时添加,如
root@vultr:~# export PATH=$PATH:/root/depot_tools
# 添加到/etc/profile中,
root@vultr:~# vim /etc/profile
...
export PATH=$PATH:/root/depot_tools # 在文件最后一行添加,wq!退出
root@vultr:~# source /etc/profile # 使配置生效
这样便可使用相关命令了。
下载源代码
创建一个保存webrtc源代码的目录webrtc-checkout。
root@vultr:~# mkdir webrtc-checkout
root@vultr:~# cd webrtc-checkout
root@vultr:~/webrtc-checkout# apt install python -y # 需要python 支持
root@vultr:~/webrtc-checkout# fetch --nohooks webrtc # 获取和同步代码,下载量很大,约12G
root@vultr:~/webrtc-checkout# gclient sync &
Linux (Ubuntu/Debian)系统,在执行完gclient sync命令之后,还需执行如下命令:
root@vultr:~/webrtc-checkout# cd src
root@vultr:~/webrtc-checkout/src# ./build/install-build-deps.sh
Building
两种编译方式,具体解释可查看Building。
Debug模式:(本文采用这种模式)
root@vultr:~/webrtc-checkout/src# gn gen out/Default
Done. Made targets from files in 644ms
Release模式
gn gen out/Default --args='is_debug=false'
清理目录
gn clean out/Default
编译
大致需要编译一个小时左右。
root@vultr:~/webrtc-checkout/src# ninja -C out/Default

这样就编译出libwebrtc.a文件,编译结束。
root@vultr:~# du -sh *
170M depot_tools
17G webrtc-checkout
编译mediasoupclient
Requirements
POSIX or Windows based operating system
cmake >= 3.5
gcc and g++ >= 4.9 or clang (with C++ support)
如果是CentOS7系统的话,上面两项都不满足,版本较老,需要先升级,因此不太推荐在CentOS7系统上编译,比较繁琐,Ubuntu较方便。
编译
mediasoupclient依赖libwebrtc,具体编译过程可参考libmediasoupclient v3 Installation。
仅一点关于编译需稍微指出:
cmake . -Bbuild \
-DLIBWEBRTC_INCLUDE_PATH:PATH=PATH_TO_LIBWEBRTC_SOURCES \ # src源代码目录
-DLIBWEBRTC_BINARY_PATH:PATH=PATH_TO_LIBWEBRTC_BINARY # 编译出libwebrtc.a目录
此处的环境设置如下:
cmake . -Bbuild \
-DLIBWEBRTC_INCLUDE_PATH:PATH=root/webrtc-checkout/src \
-DLIBWEBRTC_BINARY_PATH:PATH=/root/webrtc-checkout/src/out/Default/obj
其它地方应该没什么大问题。
参考
https://webrtc.org/native-code/development/
https://mediasoup.org/documentation/v3/libmediasoupclient/installation/
libwebrtc & libmediasoupclient编译的更多相关文章
- 2015GitWebRTC编译实录12
2015.07.20 libjingle_peerconnection 编译通过[1382/1600 ] CXX obj/talk/app /webrtc/libjingle_peerconnecti ...
- webrtc编译
webrtc编译 最近研究 libmediasoupclient,而 libmediasoupclient 又依赖 libwebrtc,所以首先就想着先在windows上编译一个webrtc的库,先是 ...
- WebRTC音频预处理单元APM的整体编译及使用
正文 行的gnu静态库链接路径是针对NDK版本 r8d 的,如读者版本不匹配,请自行找到 libgnustl_static.a 静态库的路径进行替换. 3)本示例并不打算编译 WebRTC 的测试工程 ...
- Ubuntu18.04 从头开始编译 Android Native WebRTC
本文详细记录Mac下使用PD虚拟机安装ubuntu18.4桌面版,编译Android Native WebRTC的过程. 注意如果仅仅是使用WebRTC没必要手动编译源码,直接用官方提供的预编译包即可 ...
- TODO:macOS编译PHP7.1
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
- Centos6.5下编译安装mysql 5.6
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- CENTOS 6.5 平台离线编译安装 Mysql5.6.22
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
- Android注解使用之注解编译android-apt如何切换到annotationProcessor
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
随机推荐
- 各大中间件底层技术-分布式一致性协议 Raft 详解
前言 正式介绍 Raft 协议之前,我们先来举个职场产研团队的一个例子
- webpack实践(一)- 先入个门
一.前言 webpack是个啥呢?看官网的这段描述. webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler) 在我以前做纯html.css. ...
- Linux搭建rsync服务
一.Rsync的简单介绍 Rsync是一款开源的.快速的.多功能的.可实现全量及增量(全量备份是指全部备份,增量备份是在上一次备份的基础上只备份更新的内容)的本地货远程数据同步备份的优秀工具.Rsyn ...
- eclipse Outline里图标的含义
source: http://www.cnblogs.com/qdwyg2013/p/6489019.html 先说颜色: 绿色:public 黄色:protected 蓝色:no modifier ...
- Vsftpd运行的两种模式-xinetd运行模式和 standalone模式
vsftpd运行的两种模式-xinetd运行模式和 standalone模式 vsftpd提供了standalone和inetd(inetd或xinetd)两种运行模式. standalone一次性启 ...
- 设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示(1.准备工作)
本案例适用于开发者入门理解Azure Functions/ IoT Hub / Service Bus / Power BI等几款产品. 主要实战的内容为: 将设备遥测数据上传到物联网中心, 将遥测数 ...
- RecyclerView 添加自定义分割线
默认的浅灰色的分割线在某些时候并不能满足我们的要求,这时就需要自定义分割线了. 我们可以通过两种方式来实现:调用 DividerItemDecoration.setDrawable 方法或者继承实现 ...
- Leetcode刷题笔记(Python 找出所有相加之和为n的k个组合,组合中只允许含有1-9的正整数,并且每种组合中不存在重复的数字。)
eg:输入:k=3,n=9 输出: [[1,2,6],[1,3,5],[2,3,4]] 输入:k=2,n=5 输出:[[1,4][2,3]] #!/usr/bin/env python # -*- c ...
- java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.解决方案
解决方案: 首先查看数据库的版本号,删除旧的jar包,将mysql-connector-java.jar更换成对应版本号 同时在连接数据库的url后加上?useUnicode=true&cha ...
- 使用系统定时器SysTick实现精确延时微秒和毫秒函数
SysTick定时器简介 SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 ...