自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 FreeSWITCH拨号计划几种常见使用方式及拨号计划高可用HA浅谈

FreeSWITCH收到呼叫后,mod_xml_curl通过http/https向路由中心获取当前呼叫的路由信息,如果路由中心http服务不可用或者返回错误(包括拨号计划xml的内容信息有误),,FreeSWICH会使用拨号计划diaplan中配置好的拨号计划进行路由

2024-03-30 09:44:37 776

原创 打开网页时会发生什么(面试官可能问这个http的网络问题)

打开网页会发生哪些什么(HTTP请求),包括DNS、TCP三次握手等等

2023-03-12 16:58:58 144

原创 Linux上能打开文件描述符的个数,有哪些限制

怎么通过fs.nropen、soft nofile等参数修改linux能打开到文件数

2023-03-05 12:16:37 904

原创 使用rapidjson总结,包括使用过程中遇到的一些坑

rapidjson使用过程中遇到的一些坑及rapidjson的使用总结,后面会持续更新中

2023-02-04 08:01:44 2112

原创 freeswitch callcenter使用小结

mod_callcenter模块并不是默认编译安装的,需要将modules.xml中的mod_callcenter选项打开,如下图:然后执行如下命令编译安装:make mod_callcenter-install然后在freeswitch控制台上执行如下命令:freeswitch@VM-4-11-centos> load mod_callcenter然后配置静态坐席:mod_callcenter默认的配置文件是conf/autoload_configs/callcen.

2022-05-13 15:56:53 1021

原创 为什么注册到freeswitch的SIP终端总是走public拨号计划,而不是走default呢

一般默认情况下,注册到freeswitch的SIP终端算内线,呼叫应该走diaplan的default,而不是走diaplan的public,这个主要看conf/sip_profiles/internal.xml中的context参数配置的是public还是default,如果配置的是public,那么注册的呼叫就走public拨号计划,反之就走default拨号计划。...

2022-05-13 15:03:03 556

原创 freeswitch部署在公网,SIP终端注册到fs时遇到的坑

freeswitch公网部署,SIP终端使用UDP方式注册遇到的坑,以及怎么解决

2022-04-07 15:12:12 7615

原创 源码编译freeswitch-1.10.7遇到问题总结

freeswitch 1.10.7版本源码编译安装,遇到相关问题总结

2022-03-26 16:30:14 7057 2

原创 golang内存泄漏排查

golang做为一种自带gc(garbage collection)回收机制的语言,往往可能会给人一种错觉,用golang写的程序一般不会存在内存泄漏(因为golang自带的GC会将不用的内存回收掉),实则不然。在实际开发的过程中,出现最多的一种情况是goroutine泄漏造成的内存泄漏,这里重点说怎么排查roroutine泄漏。由于公司对云服务部署的软件有严格的安全要求,直接使用net/http/pprof模块,可能会有安全方面的漏洞,这里先说下怎么在公网使用pprof规避安全漏洞:// Copyr

2022-03-16 14:28:14 3850

原创 业界(直播/视频会议等场景)常用的首屏秒开技术初探

音视频直播或者视频会议场景中,遇到的后入的客户端首屏画面需要过一会才能出来,可能是先黑屏一会,然后再看到真实的画面。这篇文章仅仅探讨下首屏秒开用到的技术,有兴趣的同学可以一块探讨探讨。

2022-01-08 08:53:37 385

原创 公网部署freeswitch1.8.6后,终端注册成功后,在fs_cli控制台执行originate user/1000 &echo,呼通1000的SIP终端后,终端讲话没有收到fs的回声解决方法

1、登录http://files.freeswitch.org/freeswitch-releases/下载freeswitch-1.10.6.-release.tar.gz压缩包,然后上传到centos7服务器上解压2、

2021-10-10 12:30:36 930

原创 rtmp协议对接微信小程序

由于网上写rtmp协议建立过程的文章比较多,这里就不再赘述,直接从发送发送音频包和视频包写起。 如果rtmp在推流链路或者拉流链路上要发送音频包和视频包数据,在发送音视频包前需要先发送onMetaData元数据包,告诉接收方发送视频的宽高信息,以及声明音频和视频的CodecID,如下图:根据flv_v10_1.pdf的描述,aac音频的SoundFormat为10,即上图中的audiocodecid的值,flv文档部分截图如下:H264视频的CodecID为10,即rtm...

2021-09-04 14:44:52 1832

原创 使用golang解析rtp成H264裸码流

funcUnpackRTP2H264(rtpPayload[]byte)[]byte{iflen(rtpPayload)<=0{returnnil}varout[]bytefu_indicator:=rtpPayload[0]//获取第一个字节fu_header:=rtpPayload[1]...

2021-04-25 10:26:55 1640 3

原创 通过kamailio实现标准SIP呼叫转移

RFC3261中关于3xx呼叫重定向的相关描述如下:最近在研究标准SIP呼叫重定向,主要用来解决kamailio集群时,当某一台或者几台kamailio的并发量很大(超过设定的阈值)时,当收到新的呼叫时,将当前呼叫通过3xx转移到压力较小的kamailio所在的服务器,这里通过kamailio.cfg和app_python模块实现,python劫持到SIP呼叫INVITE消息,如果发现kamailio当前的呼叫量已经达到阈值,然后在python脚本里重写INVITE的requestU

2021-02-24 10:21:32 1135

原创 H265 NALU类型简单介绍及RTP打包H265码流

H265 NALU类型简单介绍:F:必须为0,表示有效;为1的话表示无效。Type:6-bits NALType 确定NAL的类型,其中VCL NAL和non-VCL NAL各有32类。0-31是vcl nal单元;32-63,是非vcl nal单元。VCL是指携带编码数据的数据流,而non-VCL则是控制数据流。LayerID:表示NAL所在的Access unit所属的层,该字段是为了HEVC的继续扩展设置。也就是目前都是0,以后的扩展可能会用到。TID:3 bits通常情况下,F

2021-01-09 22:10:15 2406

原创 SDP中关于H264编码部分字段的解释,及RTP方式打包H264码流

下面我们先看下一次呼叫中SDP的部分信息:m行属性信息,其中video代表视频,10012代表传输视频的rtp端口为10012,RTP/AVP中AVP代表音视频配置,后面的数字96 110 111 112 113表示不同视频编码类型(RTP传输视频时,RTP头中的payloadType), 视频发送方按照对方声明对应的编码类型的PT值来发送RTP;b行属性表示带宽,m行下面的小b表示本通道发送码流的最大带宽,单位为kb,b的值有三种,CT:表示音频和视频的总带宽,一般在所有m行的之前声明;AS和

2021-01-09 17:44:23 2279 2

原创 使用stl标准模板库删除vector中指定元素的注意事项

标准模板库vector的其它介绍不再描述,这里主要说下删除指定元素的操作,我们以遍历删除指定元素为例,下来看下面的代码:#include <iostream>#include <vector>using namespace std;int main(){ vector<int> m_vec; m_vec.push_back(1); m_vec.push_back(2); m_vec.push_...

2021-01-08 09:47:39 226

原创 RTCP丢包重传策略之NACK

NACK全称Negative acknowledgements,相关具体描述可以查看rfc4585(NACK)文档。如果音视频收发双发都支持RTCP-NACK,当接收端认为发送端过来的RTP数据有丢包,这时接收端会向RTCP(NACK)的报文,请求发送端发送网络传输过程中丢掉的RTP数据包,同一个RTCP-NACK反馈包,可以请求发送端重传多个RTP包,下面主要讲下NACK格式的RTCP报文的主要组成部分:typedef struct rtcp_header{#if __BYTE_ORDER ==

2021-01-07 20:38:23 1141 1

原创 c++虚函数或纯虚函数默认构造参数相关问题

为了说明这个问题,我们先从一个简单的例子:在linux下用gcc编译后,打印的结果为0。可能有些同学会有疑问,运行结果怎么不是1呢?这里要说一下,虚函数是动态绑定的,即在运行时来确定;而默认构造参数,是在编译时就确定了,如果默认构造参数也需要在运行时确定,编译器就需要实现复杂的机制来实现,运行效率必然大打折扣,因此默认构造参数就在编译时就确定了。...

2020-12-26 15:27:50 213

原创 DNS域名解析应用之我见

域名解析就是域名到IP地址的转换过程,域名的解析工作由DNS服务器完成。DNS协议属于TCP/IP协议五层中的第五层,即应用层;在一些分布式架构设计中,服务端对外往往提供一个统一的域名,这个域名后台对应多个IP,即多台服务器,这样可以将外面的访问分配到不同的服务器上,实现负载均衡等。下面是一个A记录的抓包报文:...

2020-12-26 10:25:35 131

原创 webrtc服务器janus的一点看法

接触webrtc也有一年多时间了,刚开始由于对webrtc也不熟悉,为了快速开发以及出产品,最终选择了开源webrtc服务器janus,然后做了一些自己的定制开发,下面先对janus做一个简单的介绍。1、janus的整体架构图如下:2、janus的p2p穿网ICE策略是基于libnice这个开源库做的;srtp加解密是基于思科开源的libsrtp做的;标准sip协议栈是基于NOKIA开源的sofia sip开源协议栈开发的;http模块是基于libmicrohttpd开发;websocket是基于li

2020-12-19 11:01:23 2202 4

原创 视频会议标准SIP对接,收发双流相关问题

做过视频会议的同学都知道,在开视频会议的时候,往往需要共享PPT等内容,而且一般展示PPT是在演示流通道中发送的(音频,主流视频,演示流视频)。如果使用标准SIP进行对接,有些厂家不支持演示流信令BFCP,这时他们在发送演示流时,会将演示流在主流通道中发送,不同的厂家实现方式不同,有些厂家会发送一幅融合画面,融合画面中大画面展示的是演示流,小画面展示的是主流视频的融合画面;有些厂家在主流发送演示流,是只在该通道中发送演示流,不再发送主流视频,即不发送主流融合画面。不支持演示流信令的报文,示例...

2020-12-18 20:14:32 1168 3

原创 服务器(比如:HTTP)出现大量TIME_WAIT的解决方法

对TCP几种状态了解的同学,应该都清楚,tcp主动断开连接的一方会出现TIME_WAIT状态,TIME_WAIT状态会保持2MSL的时间,这个主要是用来防止,主动断开的一方发送对最后一个FIN的ACK丢失,导致被动passive close的一方的LAST-ACK定时器超时重传FIN,避免TCP状态的混乱。但是在服务器大并发的情况下,这种默认的机制可能会导致服务器维护大量的TIME_WAIT状态,导致大量资源的浪费,可能会影响后续连接和请求的处理。为了解决这一现象,我们可以通过修改服务器的配置...

2020-12-13 14:46:58 1106 2

原创 IP分片(IP Fragment),记录一次操作系统被某同学裁剪编译后,导致IP分片出了问题,从而是UDP报文大于1500的通信都出了异常

1、为什么要进行IP分片? 常见的以太网的MTU(Maxitum Transmission Unit)值为1500,如果需要转发的报文长度超出其接口的MTU值,则在转发该报文时,需要先将报文进行分片,分为适合该链路传输类型的报文,由接收方完成报文的重组。另外需要注意,不同链路的MTU值可能不同。2、报文的分片和重组 该部分内容主要从一个网友那里参考过来http://www.vants.org/?post=106,感谢作者易隐者(如有侵权,请联系我,然后我删除)。 ...

2020-12-12 19:23:57 1001

原创 安卓编译和运行时动态库查找链接的问题

前几天调试安卓下某个应用程序的加密功能,需要依赖openssl库,由于编译制定了连接libssl.so.xxx,但是没有指定完整路径,结果发现这个应用程序没有起来,通过调试发现,程序起来的时候提示找不到SSL_xxx函数,但是通过arm-linux-androideabi-nm libssl.so.1.x.x| grep SSL_xxx000390bc T SSL_xxx,发现动态库里面有这个SSL_xxx函数,然而怀疑是不是安卓设备里面的libssl.so.1.x.x动态库,跟应用程序实...

2020-12-12 10:18:18 557

原创 安卓调试遇到的几个常见问题,比如:Read-only file system,error: device offline等

1、Unable to chmod*: Read-only file system问题的解决方法安卓系统,一般只有sdcard目录有可写权限,其他目录都没有写权限,出现这个Read-only file system问题,一般是将某一个文件拷贝到没有可写权限的目录下出现的。adb shell,进入安卓的运行环境,然后执行如下命令:mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system2、device offline问题在使用过.

2020-12-12 09:32:35 698

原创 linux下获取默认路由对应的网卡及网卡的IP地址

在实际的开发及程序运行的linux环境中,服务器的网卡往往有多个,在程序与外进行通信时,往往会选择使用默认路由对应的网卡地址,这里简单介绍下,使用linux的shell脚本怎样获取这些信息,shell脚本如下:#!/bin/bashDEFAULT_GATEWAY_NETWORK_CARD_NAME=`route | grep default | awk '{print $8}'`DEFAULT_ROUTE_IP=`ifconfig $DEFAULT_GATEWAY_NETWORK_CARD_NA..

2020-12-05 09:13:40 1650

原创 c++派生类虚函数是否可以加const

c++多态规定,基类和派生类中同名虚函数的函数名、返回值类型、函数参数个数及参数类型等必须完全相同。如果基类的虚函数后面没有加const,派生类同名的函数后面加了const,那么派生类的函数没有起到虚函数的作用(前提是除了const外,函数的其他参数一样);同理,如果基类的虚函数后面加了const,而派生类同名函数后面没有加const,派生类的同名函数也没有起到虚函数的作用;如果基类的虚函数后面加了const,派生类同名函数也加了const,那么派生类同名函数起到了虚函数的作用。 ...

2020-12-04 20:25:00 1398

原创 libuv出现UV_ECANCELED的解决方法

最近项目中使用libuv,在某种异常情况下,发现出现大量的close_wait状态,通过日志发现调用uv_tcp_connect时,报ECANCELED:operation canceled错误,这时没有处理这种异常,导致服务端超时主动将tcp连接断开,应用程序没有处理这种异常,去关闭socket,导致程序出现大量的close_wait。 另外可以参照github上关于uvECANCELED的讨论,连接地址如下: `uv_write` `uv_close` stat...

2020-12-04 16:56:01 1155

原创 FreeSwitch查看当前注册用户信息

2020-11-22 16:30:10 2602

原创 更改FreeSwitch的默认监听端口,公网环境搭建

1、更改FreeSwitch安装目录下,conf目录下的vars.xml文件,如下:2、如果Freewitch在公网上部署,需要配置IP地址映射或者搭建stun服务器,fs的配置如下:

2020-11-22 16:17:09 1577

原创 centos7下源码编译安装FreeSwitch

1、在centos7系统上,使用 wgethttp://files.freeswitch.org/freeswitch-1.2.7.tar.bz2下载freeswitch-1.2.7得发布版本(这里下载错版本了,没有下载最新的freeswitch版本,其他版本可以借鉴此安装方法)2、下载完成后,使用tarjxvf FileName.tar.bz2命令解压安装包,即:tarjxvffreeswitch-1.2.7.tar.bz23、安装Freewitch软件的依赖安装包yum instal...

2020-11-22 15:58:43 429

原创 Freeswitch三种处理媒体的方式(default,proxy-media,bypass-media)

这里先来说个插曲,最近在做SRTP相关的功能,加解密主要基于cisco开源的libsrtp,但是在和某厂家的终端进行对接时,发现双方互相不能解密对方的码流,通过查看双方的SDP描述,最后双方协商使用的是AES_CM_128_HMAC_SHA1_80,然后打开libsrtp的debug模式,发现在解密对方码流时,发现解密时,发现对方给的auth tag跟libsrtp计算的auth tag不一致,导致解密失败。家里有该厂家的两个不同型号的终端,试了下他们之间使用srtp可以互相解密,想看看他们自...

2020-11-21 17:13:38 2873

原创 码率自适应---RTCP goog-remb

做音视频的同学应该都知道,基于RTP/RTCP传输流媒体,难点在于怎么把Qos做好。比较常用的基于RTCP反馈机制的Qos策略有NACK、PLI和FIR,再网络比较拥塞的情况下,使用NACK、PLI或FIR机制,可能不会改善网络拥塞情况,反而可能会增加网络拥塞的程度,这时根据网络带宽的具体情况,适当调整发送码流可能会达到更好的效果,这里我们主要说下RTCP的REMB,根据REMB文档的规范https://tools.ietf.org/pdf/draft-alvestrand-rmcat-remb-03.pd

2020-11-20 20:50:41 1795

原创 标准SIP发送双流BFCP协议报文分析(包括SDP中BFCP描述,BFCP客户端和服务端分别发送演示,以及演示流抢占等)

做过视频会议的同学,如果使用的是标准SIP协议进行对接,不可避免会遇到发送和接收双流的问题,双流广义上指主流和演示流,这里讲的发送双流指的是演示流,一般用在开会时,展示PPT等内容。 这里先来讲讲SIP携带的SDP中BFCP的协商问题,部分报文如下:主叫INVITE报文:被叫INVITE 200 OK部分报文:主叫ACK中携带的SDP部分报文如下:BFCP客户端和服务端连接后,需要发送Hello握手报文,接收端收到报文后,回复HelloAck报文,...

2020-11-19 21:09:00 5400

原创 音视频传输(RTP/RTCP)丢包重传(NACK),以及I帧申请(PLI,FIR)

学过TCP通信原理的同学都知道,TCP没法送一个TCP报文,TCP协议栈都要等对端的ACK确认,才能确定是否进行报文重传或者发送下一包数据;然而RTCP的NACK重传机制与TCP的确认机制整好相反,当RTP接收端发现某一包数据或者N包数据确实没有收到,即在经过中间网络设备时丢掉了,接收端才会向发送端发送RTCP的NACK报文,向发送端要求重传相应的RTP包,NACK报文如下:特别注意,使用NACK重传机制的收发双发,RTP都有一个发送缓冲区和接收缓冲区,缓冲区有缓冲区大小,发送太迟的NACK申请报文

2020-11-19 19:48:22 6916 1

原创 RTP中H264封装NALU(SPS,PPS等)

NAL的英文全称为Network Abstract Layer,即网络抽象层,在H264/AVC视频编解码标准中,整个系统框架分为两个层面,视频编解码层面(VCL)和网络抽象层面(NAL)。VCL负责有效表示视频数据内容,NAL负责格式化数据并加上相应的头信息,以保证数据适合各种信道和存储介质上的传输。NAL单元NALU是NAL的基本语法结构,它包含一个字节的头信息和一系列来自VCL的原始字节载序列载荷(RBSP)的字节流。H264使用RTP传输时,以SPS和PPS开头,如下图:H264帧由N.

2020-11-15 21:57:56 2136 6

原创 windows下通过adb向安卓设备上传文件或者从安卓设备取文件到电脑上

操作步骤如下图:

2020-11-12 20:26:46 618

原创 nginx做为websocket反向代理和负载均衡器

这里先简单说下websocket与http的区别,websocket是长连接,而且客户端和服务端都可以主动给对方发送数据;而http是短连接的(当然可以是长连接http 1.1),但是只能是客户端主动发起请求,服务端做出响应。在实际的生产环境中,一般要求多个websocket服务器必须具备高可用和高性能,这样webcoket就需要一个负载均衡层,本着有现有的轮子就使用现有轮子的原则,这里选择使用nginx做为websocket的反向代理和负载均衡器。虽然websocket和http协议不同,但是webs

2020-11-07 15:49:23 656

原创 SIPP压力测试软件测试SIP软件简单使用总结

最近在做云平台SIP网关软件信令的压力测试,由于实际没有那么多真实的SIP终端用来测试,需要自己来写相关的SIP模拟软件,或者使用开源的SIP软件来测试,自己写SIP模拟软件成本太高,通过网上搜索相关资料,SIPP压力测试可以满足相关需求,最终决定使用该软件做为SIP压力测试软件。 SIPP软件源码下载和编译,这里使用的是SIPP-3.3版本,在linux下解压sipp-3.3.tar.gz,进入解压后的目录,进行编译,编译成功后会生成sipp的可执行二进制文件。 ...

2020-11-07 09:12:12 1454 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除