随笔分类 -  技术-VOIP

VOIP SIP FREESWITCH
摘要:概述 freeswitch 在对VOIP语音通话中,可以通过playback命令播放IVR语音文件。 默认情况下,freeswitch支持wav文件,也可以直接播放VOIP中常见编解码的G711文件、G729文件等,但是对mp3是不支持的。 通过查询freeswitch的官方文档,发现mod_sho 阅读全文
posted @ 2022-05-25 17:32 求真得真 阅读(588) 评论(0) 推荐(0)
摘要:概述 在开发过程中,我们使用freeswitch源代码编译安装的方式比较多,这种方式适合对fs比较了解,有一定基础的研发人员。 但是,对于希望快速上手使用fs普通功能的人员来说,源代码编译的方式就过于繁琐复杂,且容易出错。 另外,由于CENTOS系统的保守性,系统yum源中很多依赖库版本较低或缺失, 阅读全文
posted @ 2022-05-19 17:57 求真得真 阅读(383) 评论(0) 推荐(0)
摘要:概述 最近在对接百度TTS的python接口,对接的过程中发现一些问题,记录下解决方案。 百度TTS接口返回的音频数据格式有4种,分别是mp3,pcm-16k,pcm-8k,wav(pcm-16k)。 我们需要的结果是wav(pcm-8k)。 需求对齐后,分析解决方案,主要有以下几个选择。 1, m 阅读全文
posted @ 2022-05-13 10:43 求真得真 阅读(390) 评论(0) 推荐(0)
摘要:概述 在开发的过程中,我们有很多时候需要用到ssh登录。 现在各种服务器登录又多,密码也多,密码容易忘记。 慢慢的,越来越多的登录使用了ssh密钥的方式。 在这里,把开发过程中常用的可以使用ssh密钥登录的配置方式记录下来。 环境 win11 生成密钥 打开cmd命令行,输入ssh生成命令,“ssh 阅读全文
posted @ 2022-04-27 14:54 求真得真 阅读(494) 评论(0) 推荐(0)
摘要:概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。 HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应用程序,并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。 之前的文章中,我们介 阅读全文
posted @ 2022-04-15 09:15 求真得真 阅读(1224) 评论(0) 推荐(1)
摘要:概述 近几年,WEBRTC的完善与成熟,使得网页上使用webrtc的应用越来越多。 Freeswitch是一个开源的软交换平台,可以直接支持webrtc的对接方式。 最近在测试fs和webrtc的对接中碰到一个问题。记录如下。 问题描述。 客户A,使用webrtc页面注册到fs,并发起呼叫到客户B。 阅读全文
posted @ 2022-03-31 17:20 求真得真 阅读(1383) 评论(2) 推荐(1)
摘要:概述 freeswitch是一款开源的VOIP软交换平台,功能强大。 在使用fs进行呼叫业务的过程中,我们最常见到的日志就是呼叫通道的启动信息,日志如下 2022-03-03 14:14:30.028832 [NOTICE] switch_channel.c:1133 New Channel sof 阅读全文
posted @ 2022-03-24 09:12 求真得真 阅读(422) 评论(0) 推荐(0)
摘要:概述 freeswitch是开源、免费的VOIP软交换平台,自带了很多功能各异的模块。 mod_tts_commandline模块,本身没有TTS能力,而是通过调用TTS引擎的命令生成语音文件,tts命令可以配置,最终实现自动TTS语音播放的功能。 今天,我们介绍一下该模块的一般应用方法。 环境 c 阅读全文
posted @ 2022-03-18 22:37 求真得真 阅读(471) 评论(0) 推荐(0)
摘要:概述 在企业级呼叫模型中,号码资源总是有限的,企业员工在使用有限的号码资源外呼时,就会有号码冲突的问题,如何解决多人共用少量号码的选号问题? 最近有一个新的业务需求,需要解决公共号码池的选号问题,号码池中的号码也有诸多约束,本文从这个需求中的号码池功能点出发,谈一谈使用redis实现分布式公共号码池 阅读全文
posted @ 2022-03-09 13:58 求真得真 阅读(344) 评论(0) 推荐(0)
摘要:概述 freeswitch核心框架中有一个定时任务系统,在开发过程中用来做一些延时操作和异步操作很方便。 我们在VOIP的呼叫流程中,经常会有一些对实时性要求没那么高的操作,或者会有阻塞流程的操作,我们都可以开启一个定时任务子流程,来达到延时和异步的目标。 下面,我们来对这个任务引擎的代码实现做一个 阅读全文
posted @ 2022-03-02 18:02 求真得真 阅读(191) 评论(0) 推荐(0)
摘要:概述 近期在和同事调试G729的编解码库时碰到一个语音质量的问题,问题产生的原因和RTP包中的时间戳设置有关,特此记录下来。 问题现象,1001和1002账号注册在fs,媒体设置为G729并通过fs中转,1001终端使用eyebean,1002终端使用自己开发的sip终端,从1001-1002的语音 阅读全文
posted @ 2022-02-24 17:58 求真得真 阅读(665) 评论(0) 推荐(0)
摘要:概述 freeswitch是由事件驱动的,fs内部有各种事件来标识状态的变化包括呼叫的变化、配置的变化、号码的变化等等。 而一个框架内的事件引擎需要实现哪些基本的功能呢? 让我们来看一下fs的事件引擎是如何实现的。 环境 centos:CentOS release 7.0 (Final)或以上版本 阅读全文
posted @ 2022-02-16 17:55 求真得真 阅读(380) 评论(0) 推荐(0)
摘要:概述 freeswitch的外围模块是插件式的,可以动态的加载和卸载,使用起来非常的灵活和方便。 如果我们自己来设计一个开源的代码框架,相信这种插件式的模块结构是非常适合多人合作的模式。 本文对fs的模块加载接口进行一些分析和讨论,作为借鉴。 环境 centos:CentOS release 7.0 阅读全文
posted @ 2022-02-09 17:58 求真得真 阅读(259) 评论(0) 推荐(0)
摘要:概述 在之前的文章中,我们介绍了如何使用fs的event事件机制来获取呼叫的各种信息。 这些event事件一般都是底层模块定义好的,其中的各种信息已经很完备了,日常的开发需求都可以满足。 但是,总有一些场景是无法完全满足的,例如,在fs的注册事件中,就没有X-自定义头域的信息。 在定制化的sip交互 阅读全文
posted @ 2022-01-26 14:03 求真得真 阅读(568) 评论(0) 推荐(0)
摘要:概述 一直做后端服务器开发,最近看了一篇文章介绍小程序的云开发模式,觉得挺有意思,就尝试了一下,由本文做个记录。 因为不是专业的小程序开发人员,也没有做过网页开发,所以论述中出现错误难以避免,请多谅解。 微信小程序,在我的理解中,就是一个由微信内置的浏览器解析并展示的js页面,支持一些微信特有的功能 阅读全文
posted @ 2022-01-19 16:35 求真得真 阅读(678) 评论(0) 推荐(0)
摘要:概述 在企业级VOIP通信中,语音质量是重要的关注点,而语音质量的好坏和媒体编解码有重要的关系。 freeswitch作为一款免费开源的软交换平台,支持多种不同的编解码格式,具体详情本文不多描述。 而不同的终端也会支持多种不同的编解码格式,在呼叫创建过程中就需要编解码的协商。 编解码的协商过程是很容 阅读全文
posted @ 2022-01-13 11:41 求真得真 阅读(868) 评论(0) 推荐(0)
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来的跨平台可移植库,不同点在于库中实现的功能接口有区别。 在应用的开发过程中,多线程并发是提高效率的常 阅读全文
posted @ 2021-12-30 11:43 求真得真 阅读(352) 评论(0) 推荐(0)
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来的跨平台可移植库,不同点在于库中实现的功能接口有区别。 在应用的开发过程中,模块内部的消息传递是经常 阅读全文
posted @ 2021-12-22 09:28 求真得真 阅读(240) 评论(0) 推荐(0)
摘要:概述 VOIP服务器中,对于一通呼叫的管理一定会涉及到呼叫状态的变化,包括初始化、呼叫发起、振铃、接通、结束等各种状态。 呼叫业务流程为了管理呼叫状态的变化,就要用到有限状态机这一概念。 最简单的状态机实现,就是if-else或者switch分支方法。 当状态机的状态变化比较简单明了时,条件分支的写 阅读全文
posted @ 2021-12-15 14:31 求真得真 阅读(500) 评论(0) 推荐(0)
摘要:概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性。 线程读写锁在多线程服务中有重要的作用。对于读数据比写数据频繁的服务,用读写锁代替互斥锁可以提高效率。 由于APR库是跨平台的,而不同平台上的系统接口有区别,所以在APR库中就有一个适配层目录libs\apr\ 阅读全文
posted @ 2021-12-09 19:55 求真得真 阅读(145) 评论(0) 推荐(0)