FreeSWITCH檢測DTMF資料的方法

2021-09-07 12:22:31 字數 1087 閱讀 6799

1. 介紹:

rfc2833為帶內檢測方式,通過rtp傳輸,由特殊的rtppayloadtype即teleponeevent來標示rfc2833資料報。同乙個dtmf按鍵通常會對應多個rtp包,這些rtp資料報的時間戳均相同,此可以作為識別同乙個按鍵的判斷依據,最後一包rtp資料報的end標誌置1表示dtmf資料結束。

另外,很多sip ua預設的teleponeevent都為101,但可以人為修改,這時要求在進行rfc2833 dtmf檢測之前需事先獲取sdp協商的teleponeevent引數。

2. 配置:

這是freeswitch預設的dtmf檢測配置。

1. 介紹:

sipinfo為帶外檢測方式,通過sip信令通道傳輸dtmf資料。這種方式甚至比rfc2833更有效。但是由於sip信令和rtp收發採用的是不同的埠,所以可能會造成收到dtmf和實際的聲音不同步。

2. 配置:

修改profile,例如sip_profiles/internal.xml。

"

dtmf-type

" value="

info

"/>

1. 介紹:

inband為帶內檢測方式,而且與普通的rtp語音包混在一起傳送。在進行inband dtmf檢測時唯一的辦法就是提取rtp資料報進行頻譜分析,經過頻譜分析得到高頻和低頻的頻率,然後查表得到對應的按鍵,進行頻譜分析的演算法一般為goertzel,這種演算法的實現也很簡單,網上有很多可以下到,但建議採用定點演算法,浮點演算法效率很低。

2. 配置:

2.1 修改profile,例如sip_profiles/internal.xml。

"

dtmf-type

" value="

inband

"/>

2.2 在需要使用的dialplan中增加

"

start_dtmf

"/>

dtmf

全稱:dual tone multi frequency(雙音多頻)

定義:由高頻音和低頻音的兩個正弦波合成表示數字按鍵(0~9 * # a b c d)

DTM測試的環境建立簡介

每次做dtm都要設定一遍,過幾天又忘記了,立個存照吧 1 在伺服器上安裝wlk 2 在伺服器上安裝controller 3 在工作電腦上安裝studio,如果沒有工作電腦,studio也可與controller安裝在同乙個電腦上 我就是都安裝在伺服器上的 4 在target電腦上安裝client,這...

freeswitch連線postgres資料庫

1.安裝postgres資料庫,並啟動。省略安裝過程。2。在freeswitch所在伺服器安裝postgresql devel.3.配置修改和編譯。在modules.conf中開啟pg cdr vim modules.conf event handlers mod cdr pg csv在fs原始碼目...

FreeSWITCH模組載入

一 模組介面 freeswitch的大部分功能是通重載入外部的模組來實現的。模組通過乙個資料結構向外部暴露了自己的介面。該資料結構定義如下 typedef struct switch loadable module function table switch loadable module func...