freeswitch对媒体的处理的三种方式
摘要:一.默认方式:媒体通过freeswitch,RTP被freeswtich转发,freeswitch控制编码的协商并在协商不一致时提供语音编码转换能力,支持录音,二次拨号等。二.代理模式: 媒体通过freeswitch转发,但是不处理媒体 RTP通过freewtich转发(只改动sdp c= ip) freeswtich不控制 sdp参数,只是转发。 通话的终端必须有一致的语音或者视频编码,因为freeswitch此时不支持转码(适合视频编码) 不支持录音, 二次拨号等功能三.不转发也不处理媒体此模式下freeswitch更像是一个信令proxy,媒体不会通过freeswitch,sdp消息体也
阅读全文
posted @
2014-01-26 15:08
单车博客园
阅读(9212)
推荐(0)
Windows如何在cmd命令行中查看、修改、删除与添加、设置环境变量
摘要:首先明确一点:所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方法目前没试验过),另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量(查看详细)。其次,明确一下环境变量的作用。它是操作系统用来指定运行环境的一些参数。比如临时文件夹位置和系统文件夹位置等。当你运行某些程序时,除了在当前文件夹中寻找外,还会到这些环境变量中去查找,比如“Path”就是一个变量,里面存储了一些常用的命令所存放的目录路径。第三:什么情况下进行设置?当启动cmd命令行窗口调用某一命
阅读全文
posted @
2014-01-23 15:38
单车博客园
阅读(615)
推荐(0)
freeswitch电话代接
摘要:Misc. Dialplan Tools interceptDescriptionAllows one channel to bridge itself to the a or b leg of another call. The remaining leg of the original call gets hungup (or does this only happen with hangup_after_bridge?)Usageintercept [-bleg] ExamplesTo intercept the b leg of the call:Via sendmsg on the
阅读全文
posted @
2014-01-23 15:09
单车博客园
阅读(1368)
推荐(0)
freeswitch三方通话配置
摘要:此种方法能实现,其中默认转移后按0,可进入三方通话。用transfer只能实现代接转移。Misc. Dialplan Tools att xferFrom FreeSWITCH WikiJump to: navigation, searchContents[hide] * 1 Attended Transfer o 1.1 Example1 o 1.2 Example2 * 2 See AlsoAttended TransferMake an attended transfer.Usage:att_xfer Example1Make a dialplan feature which read
阅读全文
posted @
2014-01-23 13:41
单车博客园
阅读(5698)
推荐(0)
认识拨号计划 - Dialplan
摘要:拨号计划是 FreeSWITCH 中至关重要的一部分。它的主要作用就是对电话进行路由(从这一点上来说,相当于一个路由表)。说的简明一点,就是当一个用户拨号时,对用户所拨的号码进行分析,进而决定下一步该做什么。当然,实际上,它所能做的比你想象的要强大的多。我们在第二章中已经提到过修改过拨号计划,单从配置文件看,还算比较简单直观。实际上,它的概念也不是很复杂。如果你理解正则表达式,那你应该能看懂系统系统自带的大部分的配置。但是,在实际应用中,有许多问题还是常常令初学者感到疑惑。主要的问题是,要理解 Dialplan,还需要了解 FS 是怎样工作的(第五章),API 与 APP 的区别等。通过本章,
阅读全文
posted @
2014-01-23 10:14
单车博客园
阅读(3002)
推荐(0)
PCRE函数简介和使用示例
摘要:PCRE是一个NFA正则引擎,不然不能提供完全与Perl一致的正则语法功能。但它同时也实现了DFA,只是满足数学意义上的正则。PCRE提供了19个接口函数,为了简单介绍,使用PCRE内带的测试程序(pcretest.c)示例用法。1. pcre_compile原型:#include pcre *pcre_compile(const char *pattern, int options, const char **errptr, int *erroffset, const unsigned char *tableptr);功能:将一个正则表达式编译成一个内部表示,在匹配多个字符串时,可以加速匹配
阅读全文
posted @
2014-01-21 14:42
单车博客园
阅读(1541)
推荐(0)
pcre7.0在vc6.0编译
摘要:(0)从http://gnuwin32.sourceforge.net/packages/pcre.htm (pcre windows)下下载最新的windows平台源代码pcre-7.0-src.zip,不要选择开发包以及bin文件,由于编译器(bcc以及交叉编译器)的差异,会导致这些不同后缀名得库用不了,浪费时间。(1) Copy or rename the file config.h.in asconfig.h, and change the macros thatdefine HAVE_STRERROR and HAVE_MEMMOVE to definethem as 1 rathe
阅读全文
posted @
2014-01-21 14:14
单车博客园
阅读(515)
推荐(0)
【Perl】perl正则表达式中的元字符、转义字符、量词及匹配方式
摘要:Linux平台上被广泛使用的正则表达式库PCRE - Perl-compatible regular expressions,从其名字即可知道,PCRE提供的是一套与Perl中相兼容的正则表达式。元字符(Meta-character)'\' : 在任何元字符前面加上反斜线,就会使它失去元字符的特殊作用。例如/3\.1415/这个模式里没有通配符'^' : 匹配行首;在字符集中它是脱字符,表示求补集'$' : 匹配行尾(或结尾处新行之前字符)'.' : 除新行(newline)外的任一字符('/s'选项将使'
阅读全文
posted @
2014-01-21 11:09
单车博客园
阅读(4645)
推荐(0)
LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址
摘要:在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址。(一)主要的步骤:在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取struct in_pktinfo(struct in_pktinfo是struct msghdr中msg_control的成员).in_pktinfo结构体(如下所示),我们可以从in_pktinfo中获取路由目的地址(destination address of the packet)、头标识目的地址(source address of the packet)。这种方法只能用于UDP(数据报)传输
阅读全文
posted @
2014-01-20 15:22
单车博客园
阅读(1072)
推荐(0)
通过socket过去本地ip,port和远端ip,port
摘要:struct sockaddr addr;struct sockaddr_in* addr_v4;int addr_len = sizeof(addr);//获取local ip and portZeroMemory(&addr, sizeof(addr));if (0 == getsockname(s, &addr, &addr_len)){if (addr.sa_family == AF_INET){ addr_v4 = (sockaddr_in*)&addr; cMonitorInf.nSourceIP = addr_v4->sin_addr.S_u
阅读全文
posted @
2014-01-20 13:37
单车博客园
阅读(2067)
推荐(0)
ntohs, ntohl, htons,htonl的比较和详解
摘要:在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数:htonl()--"Host to Network Long int"32Bytes ntohl()--"Network to Host Long int"32Bytes htons()--"Host to Network Short int" 16Bytes ntohs()--"Network to Host Short in
阅读全文
posted @
2014-01-20 12:08
单车博客园
阅读(653)
推荐(0)
转 linux socket的select函数例子
摘要:使用select函数可以以非阻塞的方式和多个socket通信。程序只是演示select函数的使用,功能非常简单,即使某个连接关闭以后也不会修改当前连接数,连接数达到最大值后会终止程序。1. 程序使用了一个数组fd_A,通信开始后把需要通信的多个socket描述符都放入此数组。2. 首先生成一个叫sock_fd的socket描述符,用于监听端口。3. 将sock_fd和数组fd_A中不为0的描述符放入select将检查的集合fdsr。4. 处理fdsr中可以接收数据的连接。如果是sock_fd,表明有新连接加入,将新加入连接的socket描述符放置到fd_A。#include #include
阅读全文
posted @
2014-01-17 10:33
单车博客园
阅读(254)
推荐(0)
转 结构体中字节对齐问题(转载)
摘要:struct MyStruct{double dda1;char dda;int type};对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13但是当在VC中测试上面结构的大小时,你会发现sizeof(MyStruct)为16。你知道为什么在VC中会得出这样一个结果吗?其实,这是VC对变量存储的一个特殊处理。为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起
阅读全文
posted @
2014-01-15 17:25
单车博客园
阅读(270)
推荐(0)
C语言中volatile关键字的作用
摘要:一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。对常规内存进行优化的时候,这些优化是透明的,而且效率很好。由编译器优化或者硬件重新排序引起的问题的解决办法是在从硬件(或
阅读全文
posted @
2014-01-15 10:32
单车博客园
阅读(207)
推荐(0)
转 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
摘要:本文内容框架:§1 Boyer-Moore算法§2 Horspool算法§3 Sunday算法§4 KMP算算法§5 KR算法§6 AC自动机§7 小结§1 Boyer-Moore(BM)算法Boyer-Moore算法原理Boyer-Moore算法是一种基于后缀匹配的模式串匹配算法,后缀匹配就是模式串从右到左开始比较,但模式串的移动还是从左到右的。字符串匹配的关键就是模式串的如何移动才是最高效的,Boyer-Moore为了做到这点定义了两个规则:坏字符规则和好后缀规则,下面图解给出定义:下面分别针对利用坏字符规则和
阅读全文
posted @
2014-01-13 13:57
单车博客园
阅读(3090)
推荐(0)
转 常见hash算法的原理
摘要:散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。比如我们存储70个元素,但我们可能为这70个元素申请了100个元素的空间。70/100=0.7,这个数字称为负载因子。我们之所以这样做,也是为了“快速存取”的目的。我们基于一种结果尽可能随机平均分布的固定
阅读全文
posted @
2014-01-09 15:27
单车博客园
阅读(365)
推荐(0)
转 从头到尾彻底解析Hash表算法
摘要:出处:http://blog.csdn.net/v_JULY_v。 说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。 ------------------------------------第一部分:Top K 算法详解 问题描述 百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户...
阅读全文
posted @
2014-01-09 15:26
单车博客园
阅读(295)
推荐(0)
asterisk 通道变量
摘要:${ACCOUNTCODE}: 用户计费帐号 sip.conf 里的 account=XXXX${ANSWEREDTIME}: 通话时长(秒)${BLINDTRANSFER}: 通道是否为转接类型${CALLERID(all)}: 主叫用户名(主叫ID) 格式 name(123454)${CALLERID(name)}: 主叫用户名 sip.conf 里的 username=XXXX${CALLERID(num)}: 主叫号码sip.conf 里的 callerid=XXXX${CALLINGPRES}: PRI Call ID Presentation variable for incomi
阅读全文
posted @
2014-01-07 14:53
单车博客园
阅读(313)
推荐(1)
asterisk 相关数据库配置 使用
摘要:Linux/Unix下ODBC的安装: 先下载最新的unixODBC源码包(http://www.unixodbc.org/unixODBC-2.2.1.tar.gz)放到/usr/local下,然后运行下述命令: tar zxvf unixODBC-2.2.1.tar.gz cd unixODBC-2.2.1 ./configure --prefix=/usr/local/unixODBC-2.2.1 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc make make i...
阅读全文
posted @
2014-01-07 14:37
单车博客园
阅读(1506)
推荐(0)
asterisk 问题
摘要:Q:SIP可以呼通,但听不到声音A:一般是NAT问题造成。如果Asterisk处在NAT的后面,则Asterisk的配置如下: -------------------------------------------------------------- sip.conf: ;externip = 200.201.202.203 externhost=dmlink.dvrdns.org localnet=192.168.0.0/255.255.0.0 rtp.conf rtpstart=10000 rtpend=20000 NAT网关端口映射:SIP端口 5060 和 RTP端口10000-20
阅读全文
posted @
2014-01-07 14:26
单车博客园
阅读(2438)
推荐(1)
转 asterisk app命令中文翻译
摘要:常规指令 Authenticate:鉴别用户VMAuthenticate:根据“voicemail.conf”鉴别用户Curl:接受外接URLs的修复。支持POSTingDUNDiLookup:用DUNDi查寻号码SendDTMF:发送独裁的DTMF数据SendImage:发送图像档案SendText:发送给客户正文消息SendURL:发送给客户USL以显示System:执行系统命令Transfer:将访客转移到另一个扩展名TrySystem:0回复执行系统命令Wait:稍等 WaitExten稍等:WaitForRing:等待呼叫申请WaitMusicOnHold:等待,在线音乐Billin
阅读全文
posted @
2014-01-07 14:25
单车博客园
阅读(384)
推荐(1)
转 asterisk拨号规则
摘要:asterisk拨号规则一、前言 本文档以asterisk-1.4.32为基础写作而成,可能和其他版本有些区别。二、Asterisk dialplan 基本结构 Asterisk dialplan 的语法可以分为四个关键点,也就是语法结构的四个组成部分,四个部分分别context ,extensionnum ,priority 和 action。由这四个组成部分dialplan的结构为: [context] exten => extensionnum,priority,action 1、context context是指dialplan的流程块,整个dialplan就是由每个contex
阅读全文
posted @
2014-01-07 14:12
单车博客园
阅读(736)
推荐(1)
转 Linux里设置环境变量的方法(export PATH)
摘要:1.动态库路径的设置Linux下调用动态库和windows不一样.linux 可执行程序是靠配置文件去读取路径的,因此有些时候需要设置路径 具体操作如下export LD_LIBRARY_PATH=/home/.....(动态库的目录)不过这种设置方法只是在当前的session中有效你可以修改配置文件实现任何session都有效2.环境变量的设置一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方
阅读全文
posted @
2014-01-07 13:53
单车博客园
阅读(398)
推荐(0)
apache移植
摘要:我下载的是httpd-2.2.9.tar.gz 1. 解压httpd-2.2.9.tar.gz到/mnt/apps目录下。tar -zxvf httpd-2.2.9.tar.gz2. 建立与httpd-2.2.9平级的目录。如apache-arm3. 进入/mnt/apps/httpd-2.2.9/srclib/apr/include目录。修改apr_want.h文件。将 struct iovec { char *iov_base; size_t iov_len; };修改为 #if 0 struct iovec { char *iov_base; size_t iov_len; };...
阅读全文
posted @
2014-01-07 13:52
单车博客园
阅读(713)
推荐(0)
PHP移植
摘要:1. 首先交叉编译zlib。 CC=arm-linux-gcc ./configure --sahred --prefix=/usr/local/arm/3.4.1/arm-linux make&&make install(一开始我把zlib装在独立的目录下,编译php时在用上--with-zlib选项还是报错,后来直接安装到我交叉编译器目录/usr/local/arm/3.4.1/arm-linux下就不报错了。) 2. 接着交叉编译libxml2。 CC=arm-linux-gcc ./configure --host=arm-linux --prefix=/usr/loc
阅读全文
posted @
2014-01-07 13:51
单车博客园
阅读(580)
推荐(0)
SSH移植
摘要:1. 下载需要的源码,直接google最新的版本吧 mkdir -p ~/arm/fs ;mkdir -p ~/arm/source 下载zlib: zlib-1.2.3.tar.gz 下载ssl : openssl-0.9.8d.tar.gz 下载ssh : openssh-4.6p1.tar.gz2. 编译:cd ~/arm/source(1) 编译zlib : tar zxvf zlib-1.2.3.tar.gz -C . cd zlib-1.2.3/ ./configure --prefix=/home/itlanger/arm/fs/zlib-1.2.3修改Makefile : CC
阅读全文
posted @
2014-01-07 13:47
单车博客园
阅读(691)
推荐(0)
ARM PPC 交叉编译环境搭建
摘要:ARM:1,下载cross-3.4.1.tar.bz22,在/usr/local目录下建立arm目录3,将cross-3.4.1.tar.bz2拷贝到arm目录下4,tar jxvf cross-3.4.1.tar.bz2解压目录5,增加环境路径,编辑/etc/bashrc,在最后增加路径export PATH=/usr/local/arm/3.4.1/bin:$PATH6,查看环境路径echo $PATHPPC:1,下载ppc-2008-04-01_amcc.tar.gz2,在/usr/local目录下建立ppc目录3,把ppc-2008-04-01_amcc.tar.gz解压到任何路径下,
阅读全文
posted @
2014-01-07 13:41
单车博客园
阅读(806)
推荐(0)
排序
摘要:1. 快速排序介绍:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。步骤:从数列中挑出一个元素,称为 “基准”(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,
阅读全文
posted @
2014-01-06 13:07
单车博客园
阅读(238)
推荐(0)
windows 平台使用wireshark命令行抓包
摘要:Windows网络流量大,或则需要长时间抓包时,wireshark图形界面使用起来比较麻烦wireshark内置dumpcap命令Capture interface: -i name or idx of interface (def: firs -f packet filter in libpcap filter syn -s packet snapshot length (def: 65535) -p don't capture in promiscuous mode -B size of kernel buffer (def:...
阅读全文
posted @
2014-01-03 12:22
单车博客园
阅读(3300)
推荐(0)
Linux 常用但较容易忘记的命令
摘要:看死循环 strace -p pid查看系统版本 cat /etc/issue设置内核启动版本 /etc/lilo.conf, /boot/grub/grub.conf设置启动模式 /etc/inittab init 0-6查看硬盘大小 df /dev/ide/...
阅读全文
posted @
2014-01-03 11:34
单车博客园
阅读(481)
推荐(0)