热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在CentOS7上部署WebRTC网关Janus

1.Janus简介Janus 是由Meetecho设计和开发的开源、通用的基于SFU架构的WebRTC流媒体服务器,它支持在Linux的服务器或MacOS上的机器进行编译和安装。由于Janus 是使用

1.Janus简介

Janus 是由Meetecho设计和开发的开源、通用的基于SFU架构的WebRTC流媒体服务器,它支持在Linux的服务器或MacOS上的机器进行编译和安装。由于Janus 是使用C语言进行编写的,因此它的性能十分优秀。Janus 的整体架构图如下图所示。

Janus 主要由三个部分组成,分别是Core、Plugin和Transport,下面是相关模块的介绍:

  1. Core: Janus的核心部分,其作用是处理数据流的转发,以及各种协议的接入,是WebRTC技术的具体实现。
  2. Plugin:Janus插件,Janus的业务管理是按照Plugin的方式管理的,因此开发者可以在Janus中根据自己的需要实现自己的业务插件。实际上,对于一般性的需求,Janus已经有相关的插件。其中,可使用 VideoRoom视频房间插件进行多人音视频互动。
  3. Transport:Janus的信令传输层,Janus并没有限定信令接口使用的信令传输协议,当前支持的协议有HTTP、WebSocket、MQTT、NanoMsg和RabbitMQ。

从整体架构上看,Janus支持众多传输协议,并且采用业务插件架构设计模式。因此,Janus流媒体服务器十分适合多种业务模型或业务经常变化的公司或项目使用。

2.安装步骤

2.1安装依赖组件

yum install -y epel-release
yum update -y


安装依赖包

yum install jansson-devel \
   openssl-devel glib2-devel \
   opus-devel libogg-devel pkgconfig gengetopt \
   libconfig-devel libtool autoconf automake gtk-doc make gcc gcc-c++ git cmake 
yum install glib22-devel
yum install doxygen graphviz

//有时会报找到glibc2.0,执行下面的安装可以解决
 

yum install libgnomeui-devel

//安装curl要求7.45以前,太新的版也不支持,会报错,这里安装7.47.1版本,下rpm包安装
 

rpm -qa|grep curl
rpm -e curl-devel
rpm -e --nodeps libcurl
rpm -e --nodeps curl
rpm -e --nodeps curl-devel
rpm -qa|grep curl
rpm -ivh libcurl-7.47.1-1.1.el7.x86_64.rpm
rpm -ivh libcurl-devel-7.47.1-1.1.el7.x86_64.rpm
rpm -ivh curl-7.47.1-1.1.el7.x86_64.rpm  
rpm -ivh curl-debuginfo-7.47.1-1.1.el7.x86_64.rpm

 2.2 安装libnice  0.1.16

需要先卸载系统安装的老版本

安装步骤如下:

cd libnice
./autogen.sh
./configure --prefix=/usr
make && sudo make install

2.3 安装libsrtp,1.X或2.X都可以  1.54   2.2

wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz
tar xfv v1.5.4.tar.gz
cd libsrtp-1.5.4
./configure --prefix=/usr --enable-openssl
make shared_library && sudo make install

2.4 安装usrsctp

需要卸载系统安装的老版本

安装步骤如下:

cd usrsctp
./bootstrap
./configure --prefix=/usr && make && sudo make install

2.5 安装libmicrohttpd,当启用http-rest接口时需要使用,最低v0.9.70
 

cd libmicrohttpd-0.9.70
./configure 
make && make install

2.6 安装libwebsockets

git clone https://github.com/warmcat/libwebsockets && \
mkdir libwebsockets/build && cd libwebsockets/build && \
cmake -DMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" .. && \
make && make install

有几次安装-DMAKE_INSTALL_PREFIX:PATH=/usr参数不生效,需要增加环境变量export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

2.7 安装janus-gateway

export PKG_CONFIG_PATH=:/usr/lib/pkgconfig:/usr/local/lib/pkgconfig
cd janus-gateway
sh autogen.sh
./configure --prefix=/opt/janus --enable-docs --disable-rabbitmq --disable-mqtt --enable-rest
make && make install && make configs

如果启动的时候如报找不到库则可以增加LD_LIBRARY_PATH的路径


推荐阅读
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文深入探讨了 Java 编程语言的基础,特别是其跨平台特性和 JVM 的工作原理。通过介绍 Java 的发展历史和生态系统,帮助初学者理解如何编写并运行第一个 Java 程序。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
author-avatar
gaoyong0713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有