Asterisk WebRTC 搭建指南

2023-05-16

1.WebRTC简介

    WEBRTC是一个开源项目,其宗旨是让WEB浏览器通过简单的JavaScript具备实时通信(Real-Time Communications (RTC) )的能力。

    WEBRTC目前支持JS和HTML5,项目由Google、Mozilla和Opera支持。

    其官方网址是:http://www.webrtc.org/

    Asterisk 11 WebRTC 官方Wiki链接:

      https://wiki.asterisk.org/wiki/display/AST/Asterisk+WebRTC+Support


2.系统环境及配置

Ubuntu 16.04 Asterisk-11.25.1

WebRTC要求用SRTP,而Asterisk的SRTP模块依赖于libsrtp,所以我们要先进行安装。

libsrtp的安装:

#wget http://sourceforge.net/projects/srtp/files/srtp/1.4.4/srtp-1.4.4.tgz

# tar vzxf srtp-1.4.4.tgz 

# cd srtp

# ./configure

# make

# make install

3.安装Asterisk 11

#wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

# tar vzxf asterisk-11-current.tar.gz 

#cd asterisk-11.2.1/

#./configure 

  

  #  make

     

  # make install 

  

  #make samples

  #make menuselect查看res_http_websocket,res_crypto,chan_ip模块是否安装成功。

  

       chan_sip

              

 

            res_crypto                                  res_http_websocket

 

4.Asterisk的配置

#cd /etc/asterisk/

首先将原有的sip.conf extensions.conf http.conf进行备份

然后编写新的sip.conf extensions.conf http.conf

sip.conf

[general]

port = 5060

bindaddr= 0.0.0.0

context = others

[1002]

type=friend

context=my-phones

secret=123456

host=dynamic

transport=udp,ws,wss

encryption=yes

avpf=yes

dtlsenable=yes

dtlscerfile=/etc/asterisk/keys/asterisk.pem

dtlscafile=/etc/asterisk/keys/ca.crt

dtlssetup=actpass

[1003]

type=friend

context=my-phones

secret=123456

host=dynamic

transport=udp,ws,wss

encryption=yes

avpf=yes

dtlsenable=yes

dtlscerfile=/etc/asterisk/keys/asterisk.pem

dtlscafile=/etc/asterisk/keys/ca.crt

dtlssetup=actpass

 

extensions.conf

[others]

[my-phones]

exten => 1001,1,Dial(SIP/1001,20)

exten => 1001,2,VoiceMail(1001,u)

 

exten => 1002,1,Dial(SIP/1002,20)

exten => 1002,2,VoiceMail(1002,u)

 

exten => 1003,1,Dial(SIP/1003,20)

exten => 1003,2,VoiceMail(1003,u)

 

http.conf

[general]

enabled=yes

bindaddr=0.0.0.0

 

配置完后,1002拨打1003 出错 提示ca.crt缺失

 

 

5.SRTP和TLS的配置

官方Wiki链接:

                  https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial

 

创建存在秘钥的文件夹

#mkdir /etc/asterisk/keys

打开Asterisk目录下的contrib/scripts使用”ast_tls_cert”脚本创建一个self-signed证书

#./ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys

-C 代表使用的主机(域名/IP)

-O 代表组织的名称

-d 代表秘钥输出位置

中间会要求输入四次密码(输出一个记得住的即可)

 

 

#./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm

-m client 代表生成一个客户使用证书

"-c /etc/asterisk/keys/ca.crt"代表我们使用的认证授权

"-k /etc/asterisk/keys/ca.key"代表认证授权的秘钥

-C 代表客户端使用的主机(域名/IP)

-O 代表组织的名称

-d 代表秘钥输出位置

-o 代表输出秘钥名称

 

6.Apache2的搭建

使用WebRTC需要使用到http服务器,所以我们在Linux端使用Apache2搭建http服务器。

#apt-get install apache2

#/etc/init.d/apache2 restart

 

7.JsSIP安装配置

将JsSip.tgz解压到http服务器根目录下(e.g. /var/www/html)

#cd /var/www/html

#tar zxvf JsSip.tgz

打开chrome,输入web网址:

http://192.168.7.42/jssip-demos-master/tryit/index.html(下划线输入自己主机ip)

输入如图所示对应信息后,在任意一个输入框敲击回车

 

成功注册

1002给1003拨打电话

 

 1003接收到1002的来电

 

注意事项:chrome要使用47版本之前的,因为47版本后使用麦克风需要证书,这方面还未进行研究。

 

WebRTC官方解释:

Starting with Chrome 47, getUserMedia() requests are only allowed from secure origins: HTTPS or localhost. You can setup a self signed ssl certificate for the local webserver and then you can access with https://192.168.0.103:<https port>

目前电话无法进行接听,接听时Asterisk就报错:

Called SIP/1002

    -- Got SIP response 480 "Temporarily Unavailable" back from 192.168.7.12:3579

    -- SIP/1002-00000001 is circuit-busy

  == Everyone is busy/congested at this time (1:0/1/0)

-- Auto fallthrough, channel 'SIP/1003-00000000' status is 'CONGESTION'

    -- Called SIP/1002

    -- SIP/1002-00000005 is ringing

    -- SIP/1002-00000005 is ringing

    -- SIP/1002-00000005 is ringing

  == Everyone is busy/congested at this time (1:0/0/1)

    -- Auto fallthrough, channel 'SIP/1003-00000004' status is 'CHANUNAVAIL'


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asterisk WebRTC 搭建指南 的相关文章

  • 是否可以使用 MediaRecorder() 获取音频数据的原始值

    我使用 MediaRecorder 和 getUserMedia 来记录浏览器中的音频数据 它可以工作 但是记录的数据是以 Blob 格式记录的 我想获取原始音频数据 振幅 而不是 Blob 有可能做到吗 我的代码如下所示 navigato
  • 具有预编码 H.264 视频流的 Android WebRTC 客户端

    我有一个发送 H 264 编码视频字节的视频流源 我想使用 Android 的 WebRTC 类构建一个应用程序 将此视频流发送到 WebRTC 对等点 这些内置类似乎只支持原始视频源 而不支持已由编解码器处理的视频 我只需要创建仅包含一种
  • 如何使用webrtc录制视频

    我需要在使用 Nodejs 构建的网站上使用笔记本电脑摄像头录制视频 为此 我使用 webRTC 到目前为止 我可以使用笔记本电脑摄像头拍照 但我需要录制视频 有人可以帮忙解释一下代码将如何进行吗 我当前的代码如下
  • Chrome WebRTC DataChannels:即使使用 STUN,ICE-TCP 服务器反射候选也丢失

    我正在建造 又一个 通过 DataChannels 手动发送 WebRTC 聊天信号 http jsfiddle net UYxL3 81 CoffeeScript 对不起 JS 们 它在本地连接中工作正常 但不能在 NAT 后面的互联网上
  • Bug 报告者:getDisplayMedia 的替代品?

    我正在尝试在我的网站上实现错误报告器 我的目标是用户能够在解决问题时以声音描述问题并记录浏览器选项卡 错误报告将只是一个视频文件 可以通过电子邮件发送给我 看来提议的navigator mediaDevices getDisplayMedi
  • 在网络浏览器中实现一个好的 redis 客户端需要什么?

    之前已经有人问过这个问题我可以从浏览器中运行的 JavaScript 直接连接到 Redis 服务器吗 https stackoverflow com questions 5759120 can i connect directly to
  • Asterisk 将声音文件播放到 ConfBridge 中?

    我正在尝试召开会议并在会议后台播放声音文件 我怎样才能使这成为可能 这显然行不通 因为声音文件将在进入会议之前播放 exten gt s 1 playback some soundfile same gt n confbridge 1 提前
  • 使用媒体流扩展 (MSE) 显示 getUserMedia Stream 实时视频

    我正在尝试使用 getUserMedia 显示从网络摄像头获取的 MediaStream 并使用任何可能播放的机制将其中继到远程对等点 作为实验 我没有直接使用 webRTC 因为我想控制原始数据 我遇到的问题是我的视频元素不显示任何内容
  • iOS 11(Beta)中的webKit支持WebRTC吗?

    我有一个 URL 可以在 iOS11 测试版 上的 Safari 上正常工作 音频 视频也可以正常工作 但是 当我使用 WKWebView 加载此 URL 时 它会给我一个错误 不兼容的浏览器 当我在 WebKit 中检查浏览器版本时 它会
  • 在 Heroku 上部署 PeerJS 服务器

    我的 PeerJS 服务器有问题 我从这里使用了 部署到 Heroku 按钮 https github com peers peerjs server https github com peers peerjs server 我不知道如何连
  • 移动浏览器将以及何时支持 getUserMedia?

    我使用 前沿 HTML5 WebRTC API 编写了一个 Web 应用程序 请参阅下面的代码 这适用于 Chrome v20 启用了 MediaStream 标志 和最新的 FF Nightly 版本 17 0a1 创建了 media n
  • Node教程一对多无加载远程服务器Stream Spinner动不停

    我对在项目中使用所需的 Kurrento 很陌生 但是当我克隆 git hub 上为 Kurento 提供的教程并遵循 one2Many 调用的说明时 首先 adapter js 的软件包损坏了 因为我成功解决了它们 但之后出现了一个问题
  • 如何运行媒体流

    我创建了一个网络摄像头流 navigator getUserMedia video true function stream videoTag src window URL createObjectURL stream videoTag p
  • 使用 Docker 的 mediasoup v3

    我正在尝试运行一个2docker 中的 WebRTC 示例 使用 mediasoup 当我在一组实例上进行视频通话时 我想运行两台服务器 我的错误 你有没有看到这个错误 createProducerTransport null 错误 由于地
  • 在 Objective C 中使用 static init 有什么好处?

    最近我发现来自 Github 的 webrtc ios 示例 https github com gandg webrtc ios 当我浏览该项目时 我注意到 VideoView 类使用静态方法 但我不确定这是否必要 VideoView 是
  • WebRTC 和 Asp.Net Core

    我想将音频流从我的 Angular Web 应用程序录制到我的 Asp net Core Api 我认为 使用 SignalR 及其 websockets 是实现这一目标的好方法 通过这个打字稿代码 我可以获得一个 MediaStream
  • 结束两个对等方之间的 WebRTC 视频通话

    我已经使用以下命令在两个同伴之间建立了视频聊天WebRTC 我想让一个对等方结束聊天 并让另一个对等方知道聊天已结束 聊天结束后 需要为双方执行一些代码 这PeerConnection对象有一个removeStream 应该触发的方法onr
  • React Native - 在 Android 中显示传入视频通话屏幕(VOIP 应用程序)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试实施视频通话React Native 应用程序中的功能 我用过React 原生 twilio 视频 webrtc https
  • Twilio webRTC 通话在 10 分钟后中断

    使用 Twilio js 使用 webRTC 录制通话 工作正常 但在 10 分钟时 完全正确 电话挂断 TwiML 上的最大记录时间设置为 7200 秒 浏览器的控制台显示 Twilio PeerConnection signalingS
  • 无需画布/显示器即可拍摄隐形 WebRTC/视频照片

    我读了拍摄静态照片 https developer mozilla org en US docs Web API WebRTC API Taking still photos来自 MDN 的描述如何从网络摄像头捕获照片 使用视频元素和med

随机推荐

  • 物联网(Iot)台灯设计完整教程(长图文)

    现如今随着物联网的概念深入人心 xff0c 物联网的设备也越来越普及 xff0c 本篇文章介绍的就是一个物联网台灯的设计 该设计主要包含物联网芯片开发 微信客户端开发 后台服务器端开发以及三个组件之间互联等 xff0c 其总体设计逻辑框图如
  • SVN打标签方法及在此过程中的问题处理

    所谓的 打标签 xff0c 我个人的理解是 xff1a 项目取得了阶段性成果 xff0c 需要保存在标签 xff08 tags文件夹 xff09 中 xff0c 以备不时之需 我采用的打标签的方法是 xff1a 1 在SVN客户端打标签 前
  • STM32 CAN 过滤器、滤波屏蔽器配置总结

    http blog csdn net jixiangrurui article details 39370027 一 过滤组 过滤器编号介绍 在 STM32 互联型产品中 xff0c CAN1 和 CAN2 分享 28 个过滤器组 其它 S
  • Linux内核源码之自旋锁的实现

    1 Linux内核同步 Linux内核中有许多共享资源 xff0c 这些共享资源是内核中进程都有机会访问到的 内核对其中一些共享资源的访问是独占的 xff0c 因此需要提供机制对共享资源进行保护 xff0c 确保任意时刻只有一个进程在访问共
  • cmake编译c++程序

    当在Linux系统下编写程序时候 xff0c 如果没有类似于visual studio vs code等IDE 集成开发环境 时 xff0c 如何编译 运行程序呢 xff1f 一种方法是编写makefile文件 xff0c 用makefil
  • #if 0 /#if 1用法介绍(屏蔽代码块)

    当屏蔽掉大块代码时 xff0c 使用 34 if 0 34 比使用 34 34 要好 xff0c 因为用 34 34 做大段的注释要防止被注释掉的代码中有嵌套的 34 34 这会导致注释掉的代码区域不是你想要的范围 xff0c 当被注释掉的
  • 调试工具之UDP/TCP网络调试助手NetAssist

    参考文章列表 xff1a https blog csdn net zhzht19861011 article details 4545260 https blog csdn net qq 29350001 article details 7
  • idea第一次新建SpringBoot项目报错 Error:(3, 32) java: 程序包org.springframework.boot不存在

    跟着网上的教程第一次创建SpringBoot xff0c 创建好之后他们都可以直接写Controller类 xff0c 然后运行就能从localhost访问hello word了 但是我再第一次创建之后 xff0c 出现下面的情况 Erro
  • 本地socket的select用法

    学习socket的select用法 xff0c 下面代码大部分是从网上借鉴的 xff0c 只不过把网络部分的socket改为了本地socket xff0c 并加了一些自己测试用的语句 xff0c 如果有冒犯之处请联系我 xff0c 我立马删
  • C/C++程序编译过程详解

    C C 43 43 程序编译过程详解 C语言的编译链接过程要把我们编写的一个c程序 xff08 源代码 xff09 转换成可以在硬件上运行的程序 xff08 可执行代码 xff09 xff0c 需要进行编译和链接 编译就是把文本形式源代码翻
  • realsense435i运行vins-mono,标定部分

    相机标定 1 安装kalibr xff1b 参考 xff1a https blog csdn net wangbaodong070411209 article details 112248834 https blog csdn net we
  • TX2入门教程软件篇-安装python3.6+

    sudo add apt repository ppa jonathonf python 3 6 sudo apt get update sudo apt get install python3 6 增加python3两个版本的优先级 su
  • Ubuntu 16.04使用Wireshark 抓包分析USB Audio Class 设备流程

    0 前言 为了分析usb麦克风的交互流程 xff0c 需要进行usb抓包 1 安装相关插件 安装usbmon sudo addgroup usbmon sudo gpasswd a USER usbmon echo 39 SUBSYSTEM
  • QT5.5实现串口通信

    QT5 1以上版本自带QtSerialPort集成库 xff0c 只要在头文件中集成 include lt QtSerialPort QSerialPort gt include lt QtSerialPort QSerialPortInf
  • “JTAG Warning: T-bit of XPSR is 0 but should be 1. Changed to 1.” 解决方案

    最近在调试一块GD32F107RCT6 xff0c 无法进行下载 错误提示 xff1a JTAG Warning T bit of XPSR is 0 but should be 1 Changed to 1 1 判断BOOT0 BOOT1
  • Windows无法访问Ubuntu Samba 解决方案

    好久没用Windows访问Ubuntu的共享文件 xff0c 忘记了密码 xff0c 重装Samba后提示Windows无法访问 可以打开文件但是无法访问 查看log var log samba log 192 168 1 39 smbd
  • keil C数组声明问题

    C语言中 xff0c 我们声明一个一维数组 xff0c 可以用以下几种方法 int buf 3 int buf 61 0 int buf 3 61 1 2 3 但是今天在keil中 使用int buf 61 0 这种方式进行声明 xff0c
  • 初学QML之qmlRegisterType

    qmlRegisterType 是一个可以将C 43 43 实现的类在QML中调用的 xff0c 连接C 43 43 和QML的一个工具 首先来看QtAssistant的介绍 int qmlRegisterType const char u
  • 在IDEA中引入jQuery无效

    在idea开发前端页面中 xff0c 引入jQuery后 xff0c 使用 会出现下划线 xff0c 提示未定义 虽然不影响使用 xff0c 运行后可以得到正常结果 xff0c 但还是看的很不爽 解决办法 xff1a Preferences
  • Asterisk WebRTC 搭建指南

    1 WebRTC简介 WEBRTC是一个开源项目 xff0c 其宗旨是让WEB浏览器通过简单的JavaScript具备实时通信 Real Time Communications RTC 的能力 WEBRTC目前支持JS和HTML5 xff0