`
cgs1999
  • 浏览: 536242 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CentOS下编译webrtc2sip实战

阅读更多
0、引言
在研究WebRTC服务端画面合成和混音处理,需要实现浏览器端与服务器端的点对点,网上找了好些参考的项目,webrtc2sip项目就是其中之一,该项目基于doubango的框架,需要自行编译搭建环境,根据webrtc2sip中的《技术指南1.0》(注:《technical guide1.0》)文档进行了编译,本文记录编译过程及相关问题的处理。

1、准备
(1)VMware;
(2)CentOS 64位版本(本人使用CentOS 6.4 的64位版本);
(3)安装的虚拟机要可以上网,建议网络使用NAT,相关方法可网上查找;

2、构建Doubango IMS框架
2.1 更新及安装软件
(1)更新CentOS系统软件至最新版本
sudo yum update

(2)安装需要的软件
sudo yum install make libtool autoconf subversion git cvs wget libogg-devel gcc gcc-c++ pkgconfig


2.2 安装libsrtp
libsrtp为必须组件,相关命令如下:
git clone https://github.com/cisco/libsrtp/
cd libsrtp
CFLAGS="-fPIC" ./configure --enable-pic && make && make install


2.3 安装OpenSSL
OpenSSL为必须组件,相关命令如下:
// 以下为新版本1.0.2h的编译命令
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
tar -xvzf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config shared --prefix=/usr/local --openssldir=/usr/local/openssl && make depend && make && make install


// 以下为老版本1.0.1c的编译命令
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -xvzf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config shared --prefix=/usr/local --openssldir=/usr/local/openssl && make && make install


2.4 安装libspeex和libspeexdsp
libspeex为可选组件,libspeexdsp为必须组件,相关命令如下:
(1)直接安装开发包
yum install speex-devel

(2)或者直接从源代码中构建
wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz
tar -xvzf speex-1.2rc1.tar.gz
cd speex-1.2rc1
./configure --disable-oggtest --without-libogg && make && make install

注:技术指南中使用的是speex-1.2beta3版本,本人则直接使用了rc1的版本

2.5 安装YASM
该组件启用VPX (VP8视频编解码)或x264 (H.264 编解码)时必须,相关命令如下:
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar -xvzf yasm-1.2.0.tar.gz
cd yasm-1.2.0
mkdir m4
./configure && make && make install

注:技术指南中没有“mkdir m4”,本人在编译时,老是编译出错,后来网上找了一下解决方案,增加了该命令后编译通过

2.6 安装libvpx
该组件用于支持VP8是可选的,若你想支持Chrome或FireFox的视频则强烈推荐安装,相关命令如下:
(1)直接安装开发包
sudo yum install libvpx-devel

(2)或者直接从源代码中构建
git clone http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure --enable-realtime-only --enable-error-concealment --disable-examples --enable-vp8 --enable-pic --enable-shared --as=yasm
make && make install


2.7 安装libyuv
该组件为可选,可视情况进行编译,相关命令如下:
mkdir libyuv && cd libyuv
svn co http://src.chromium.org/svn/trunk/tools/depot_tools .
./gclient config http://libyuv.googlecode.com/svn/trunk
./gclient sync && cd trunk
make -j6 V=1 -r libyuv BUILDTYPE=Release
make -j6 V=1 -r libjpeg BUILDTYPE=Release
cp out/Release/obj.target/libyuv.a /usr/local/lib
cp out/Release/obj.target/third_party/libjpeg_turbo/libjpeg_turbo.a /usr/local/lib
mkdir --parents /usr/local/include/libyuv/libyuv
cp -rf include/libyuv.h /usr/local/include/libyuv
cp -rf include/libyuv/*.h /usr/local/include/libyuv/libyuv

注:相关的命令个人在虚拟机上没有编译通过,由于是可选的,后来没有再编译

2.8 安装opencore-amr
该组件可选,用于支持AMR的音频编解码,相关命令如下:
git clone git://opencore-amr.git.sourceforge.net/gitroot/opencore-amr/opencore-amr
cd opencore-amr
autoreconf --install && ./configure && make && make install

注:技术指南中缺少了“cd opencore-amr”,需要补上

2.9 安装libopus
该组件可选,但强烈推荐安装用于支持WebRTC的MTI编解码,可支持OPUS音频编解码,相关命令如下:
wget http://downloads.xiph.org/releases/opus/opus-1.0.2.tar.gz
tar -xvzf opus-1.0.2.tar.gz
cd opus-1.0.2
./configure --with-pic --enable-float-approx && make && make install


2.10 安装libgsm
该组件可选,用于支持GSM的音频编解码,相关命令如下:
(1)直接安装开发包
sudo yum install gsm-devel

(2)或者直接从源代码中构建
wget http://www.quut.com/gsm/gsm-1.0.13.tar.gz
tar -xvzf gsm-1.0.13.tar.gz
cd gsm-1.0-pl13 && make && make install
#cp -rf ./inc/* /usr/local/include
#cp -rf ./lib/* /usr/local/lib


2.11 安装g729
该组件可选,用于支持G729的音频编解码,相关命令如下:
// 下面的svn地址已过期
//svn co http://g729.googlecode.com/svn/trunk/ g729b
git clone https://github.com/2000000/g729b.git
cd g729b
./autogen.sh && ./configure --enable-static --disable-shared && make && make install


2.12 安装iLBC
该组件可选,用于支持iLBC的音频编解码,个人建议安装,相关命令如下:
svn co http://doubango.googlecode.com/svn/branches/2.0/doubango/thirdparties/scripts/ilbc
cd ilbc
wget http://www.ietf.org/rfc/rfc3951.txt
awk -f extract.awk rfc3951.txt
./autogen.sh && ./configure && make && make install


2.13 安装x264
该组件可选,用于支持H.264的视频编解码(需要FFmpeg),个人建议安装,相关命令如下:
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar -xvjf last_x264.tar.bz2
# the output directory may be difference depending on the version and date
cd x264-snapshot-20131105-2245
./configure --enable-shared --enable-pic && make && make install

注:命令“cd x264-snapshot-20131105-2245”随版本的不同而不同,本人安装使用的版本为x264-snapshot-20131105-2245

2.14 安装FFmpeg
该组件可选,用于支持H.263、H.264(需要x264)和MP4V-ES的视频编解码,个人建议安装,相关命令如下:
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
# grap a release branch
git checkout n1.2
# configure source code
./configure \
--extra-cflags="-fPIC" \
--extra-ldflags="-lpthread" \
\
--enable-pic --enable-memalign-hack --enable-pthreads \
--enable-shared --disable-static \
--disable-network --enable-pthreads \
--disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe \
\
--enable-gpl \
\
--disable-debug
make && make install


2.15 编译并安装Doubango
(1)下载源代码
svn checkout http://doubango.googlecode.com/svn/branches/2.0/doubango doubango

(2)三种构建方案
A. 最小化构建
cd doubango && ./autogen.sh && ./configure --with-ssl --with-srtp --with-speexdsp
make && make install

B. 推荐构建
cd doubango && ./autogen.sh && ./configure --with-ssl --with-srtp --with-speexdsp --with-ffmpeg
make && make install

C. 完整构建
cd doubango
chmod 755 ./autogen.sh
./autogen.sh && ./configure --with-ssl --with-srtp --with-vpx --with-yuv --with-amr --with-speex --with-speexdsp --with-gsm --with-ilbc --with-g729 --with-ffmpeg
make && make install

注:
1. 命令“chmod 755 ./autogen.sh”为实际编译中发现没有执行权限,本人增加的
2. 可根据实际安装的情况,修改完整构建中相关组件的支持
3. configure命令成功会出现CONGRATULATIONS及相关组件信息,如下所示:
**************************************************************************
*                               CONGRATULATIONS
**************************************************************************
Host setup:          x86_64-unknown-linux-gnu
Install prefix:      /usr/local
Compiler:            gcc

FFmpeg:              yes
VP8 video codec:     yes
OPUS audio codec:    yes
ILBC audio codec:    yes
G.729 audio codec:   no
GSM audio codec:     check
AMR audio codec:     yes
SPEEX audio codec:   yes
G.722 audio codec:   yes
G.711 audio codec:   yes

YUV:                 check
SPEEX DSP:           yes

SSL:                 yes
DTLS-SRTP:           yes
DTLS:                yes

SRTP:                yes

Monotonic timers:    yes
RESOLV:              no

DEBUG:               no

Report any issues at https://groups.google.com/group/doubango

-------------------------------------------------------------------------
Next steps
  1) run 'make' to build the source
  2) run 'make install' to install
-------------------------------------------------------------------------


3、编译并安装webrtc2sip
webrtc2sip依赖于Doubango IMS框架和libxml2
3.1 安装libxml2
yum install libxml2-devel


3.2 下载源代码
svn co http://webrtc2sip.googlecode.com/svn/trunk/ webrtc2sip


3.3 构建webrtc2sip
export PREFIX=/opt/webrtc2sip
cd webrtc2sip
chmod 755 ./autogen.sh
./autogen.sh && ./configure --prefix=$PREFIX
make clean && make && make install
cp -f ./config.xml $PREFIX/sbin/config.xml

注:
1. 命令“chmod 755 ./autogen.sh”为实际编译中发现没有执行权限而增加的;
2. configure命令成功会出现CONGRATULATIONS及相关组件信息,如下所示:
**************************************************************************
                                CONGRATULATIONS
**************************************************************************
Host setup:                  
Install prefix:              /opt/webrtc2sip
Compiler:                    gcc

DOUBANGO
     MIN_VER:                2.0.1002
     TINYSAK:                yes
     TINYNET:                yes
     TINYHTTP:               yes
     TINYSIP:                yes
     TINYDAV:                yes
     TINYSDP:                yes
     TINYSIGCOMP:            yes
     TINYMEDIA:              yes
     TINYMEDIA:              yes
     TINYSMS:                yes
     TINYMSRP:               yes
     TINYRTP:                yes
     TINYIPSEC:              yes

LIBXML2_INCLUDE:             /usr/include/libxml2
LIBXML2_LIB:                 /usr/lib

LIBPTHREAD_INCLUDE:          /usr/include
LIBPTHREAD_LIB:              /usr/lib

Report issues at https://groups.google.com/group/doubango

-------------------------------------------------------------------------
Next steps
  1) run 'make' to build the source
  2) run 'make install' to install
-------------------------------------------------------------------------


4、运行webrtc2sip
4.1 运行命令
$PREFIX/sbin/webrtc2sip

注:PREFIX为编译webrtc2sip时指定的路径,如/opt/webrtc2sip

4.2 命令行参数
相关命令行参数及描述如下表所示:
参数描述示例
--config=PATH使用指定路径的配置文件启动./webrtc2sip --config=/temp/config.xml
--help显示帮助信息./webrtc2sip --help
--version显示版本信息./webrtc2sip --version


4.3 运行效果


5、小结
至此,webrtc2sip已经编译并安装成功,但如何测试webrtc2sip的功能以及相关效果,请查阅后续的博文(编写中)。
  • 大小: 104.5 KB
分享到:
评论
5 楼 zfx1982 2018-09-26  
楼主能把doubango和webrtc2sip的源码发我一份么?邮箱:zhangfengxin3@163.com
谢谢。
4 楼 zfx1982 2018-09-26  
请问在编译doubango的时候configure总是说少srtp是什么原因?
3 楼 design21 2015-12-10  
博主,期待后续的webrtc的文章啊
2 楼 cgs1999 2014-01-13  
fymapleaf 写道
请问这个问题,知道怎么回事么?
checking for tinyrtp/tinyrtp_config.h... yes
checking for trtp_manager_create in -ltinyRTP... yes
checking tinyipsec/tinyipsec_config.h usability... yes
checking tinyipsec/tinyipsec_config.h presence... yes
checking for tinyipsec/tinyipsec_config.h... yes
checking for tipsec_context_create in -ltinyIPSec... no
configure: error: Failed to find libtinyIPSec
[taurus@localhost webrtc2sip]$


找不到libtinyIPSec库,应该是tinyIPSec模块没编译通过,请检查一下doubango的构建过程是否正确,即出现CONGRATULATIONS字样及相关信息。

若doubango的构建没有问题的话,请重新编译webrtc2sip,一般依赖的库编译好的话不会出错 
1 楼 fymapleaf 2014-01-13  
请问这个问题,知道怎么回事么?
checking for tinyrtp/tinyrtp_config.h... yes
checking for trtp_manager_create in -ltinyRTP... yes
checking tinyipsec/tinyipsec_config.h usability... yes
checking tinyipsec/tinyipsec_config.h presence... yes
checking for tinyipsec/tinyipsec_config.h... yes
checking for tipsec_context_create in -ltinyIPSec... no
configure: error: Failed to find libtinyIPSec
[taurus@localhost webrtc2sip]$

相关推荐

    centos7.9 freeswitch webrtc安装配置.docx

    CentOS 7.9上安装配置FreeSWITCH以支持WebRTC通话涉及多个步骤,包括环境准备、FreeSWITCH的安装、配置以及SSL/TLS证书的处理。以下是详细的知识点解析: 1. **环境配置** - **禁用Selinux**:在部署FreeSWITCH前...

    centos9 stream 下编译的webrtc库,debug版本

    在本压缩包中,我们拥有在CentOS 9 Stream操作系统下编译的WebRTC库的debug版本,版本号为110。 WebRTC的开发主要由Google赞助,并被广泛应用于各种实时通信应用,如在线会议、远程教育、视频聊天等。其核心组件...

    CenOS7版ZLMediaKit带WebRtc

    在CenOS7环境下,集成WebRtc功能,使得ZLMediaKit具备了点对点通信的能力,能够实现实时的音视频互动。 一、ZLMediaKit简介 ZLMediaKit是一个轻量级的多媒体服务器框架,由C++编写,其主要功能包括推流、拉流、转码...

    centos7编译安装gdal所需文件

    gdal在linux上安装需要的文件比较多,附件包含gdal2.2.3及依赖的文件: proj-4.9.3.tar.gz geos-3.6.2.tar.gz jpegsrc.v9b.tar.gz hdf-4.2.13.tar.gz hdf5-1.10.1.tar.gz ...netcdf-4.4.1.tar.gz ...

    CentOS 7编译CC.docx

    CentOS 7 编译 CC 问题解决方案 本文主要讲述了在 CentOS 7 中编译 Redis 时出现的 "cc:未找到命令" 错误的解决方案。该错误的出现是由于虚拟机系统中缺少 GCC 造成的。为了解决这个问题,我们需要安装 GCC。 GCC...

    boost centos7编译好的完成版本可以直接引入使用

    本压缩包提供的"boost_1_68_0"版本,是Boost库的一个稳定版本,已经预先在CentOS7环境下编译完成,用户可以直接引入使用,从而节省了编译时间。 首先,了解Boost库的基本构成是非常必要的。Boost库包含了许多独立的...

    CentOS7系统管理与运维实战

    CentOS7系统管理与运维实战 CentOS7系统管理与运维实战

    CentOS7系统QT交叉编译工具

    交叉编译是在一种架构(如x86的CentOS7)上编译出另一种架构(如ARM)可执行程序的过程。在本案例中,我们的目标是让在CentOS7编译的QT程序能在ARM开发板上运行。 1. **安装基础工具**: 在开始QT交叉编译之前,...

    CentOS_Coturn_WebRTC安装说明_水印版.pdf

    我看了网上在Centos上部署coturn的教程,结论是必须要结合多个不同人编写的教程,才能部署成功,所以自己整理了一套,服务于初用者,在完全没有CentOS+Coturn基础的情况下,去部署coturn。我用的是阿里云服务器,...

    CentOS7环境下编译的openssl 3.0动态库和静态库

    本资源提供了在CentOS7环境下编译的OpenSSL 3.0版本的动态库和静态库,这将对需要在该操作系统上进行安全编程或系统集成的开发者非常有帮助。 首先,让我们深入理解OpenSSL 3.0。OpenSSL 3.0是一个重大的版本更新,...

    centos7编译安装httpd

    centos7编译安装httpd

    centos6.5编译好thrift

    标题中的“centos6.5编译好thrift”指的是在CentOS 6.5操作系统环境下,已经成功编译了Thrift 0.12.0版本。Thrift是一款开源跨语言的服务框架,由Facebook开发并贡献给Apache基金会,它的主要功能是帮助开发者构建...

    CentOS7环境下编译的libwebsockets动态库和静态库

    本篇将详细解析如何在CentOS 7环境下编译libwebsockets动态库和静态库,并探讨其在实际应用中的价值。 首先,让我们了解一下libwebsockets库。libwebsockets是一个C语言编写的WebSocket库,它支持HTTP和WebSocket...

    CentOS7环境下编译的boost 1.69静态库和动态库

    本篇将详细讲解如何在CentOS7环境下编译Boost 1.69版本的静态库和动态库,并探讨其在实际应用中的重要性。 首先,让我们了解Boost库。Boost库是由C++社区开发的一系列开源库,旨在提升C++的效率、灵活性和可移植性...

    centos7环境下编译opencv4.5.4生成的so和jar

    本篇将详细介绍如何在CentOS 7系统下编译OpenCV 4.5.4,生成动态链接库(.so)和Java接口(.jar)文件。 首先,确保你的CentOS 7系统已经安装了基本的开发工具,包括GCC编译器、CMake构建系统和必要的依赖库。你...

    centos6.5下编译安装lamp

    ### CentOS 6.5 下编译安装 LAMP 环境详细步骤 LAMP 是一套常用的网站服务器软件组合,由 Linux、Apache、MySQL 和 PHP 四部分组成。本文将详细介绍如何在 CentOS 6.5 系统上从源码编译安装 LAMP。 #### 一、MySQL...

    CentOS7环境下编译的protobuf 3.1版本的静态库和动态库,里面包含protoc程序和include目录

    CentOS7环境下编译的protobuf 3.1版本的静态库和动态库,里面包含protoc程序和include目录,经过测试程序 protoc --version 之后终端显示的是当前protobuf的版本号,说明编译的库能够正常使用

    CentOS 6.8编译安装LNMP环境

    ### CentOS 6.8 编译安装LNMP环境详尽指南 #### 一、概述 在当前互联网技术快速发展的背景下,构建稳定可靠的Web服务成为众多企业和个人开发者的重要需求之一。其中,**LNMP**(Linux+Nginx+MySQL+PHP)环境作为...

    centos7环境下编译opencv4.5.2生成的so和jar

    在Linux的CentOS 7环境下,编译OpenCV 4.5.2是一个涉及多步骤的过程,主要目的是生成适用于Java的动态链接库(.so)和Java Archive(.jar)文件,以便在Java应用程序中使用OpenCV的功能。下面将详细介绍这个过程以及...

    centos下opencv的编译后的安装包(编译时带opencv-contrib扩展包)c++

    在Linux系统,特别是CentOS环境下,OpenCV是一个广泛使用的计算机视觉库,用于图像处理和机器学习任务。这个压缩包文件包含的是预编译的OpenCV库,特别的是,它已经包含了opencv-contrib扩展包,提供了更多高级功能...

Global site tag (gtag.js) - Google Analytics