本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種ip電話終端通信方法。
背景技術(shù):
在互聯(lián)網(wǎng)應(yīng)用日益普及,接入帶寬日益提高的大背景下,各種各樣基于互聯(lián)網(wǎng)的實時通訊方式層出不窮。在這些方式當(dāng)中,與呼叫中心結(jié)合最緊密的一種方式是ip電話。
ip電話使用sip協(xié)議傳輸信令,使用rtp協(xié)議進(jìn)行媒體流傳輸。
現(xiàn)有技術(shù)中ip電話終端的發(fā)送方和接收方在完成sip信令交互后,雙方開始進(jìn)行媒體流傳輸,以固定的碼率發(fā)送媒體流,如果丟包率較大時,采用手動的方式進(jìn)行碼率的更改。這種方式得到的媒體流質(zhì)量不高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種ip電話終端通信方法,能夠得到高質(zhì)量的媒體流。
為實現(xiàn)上述發(fā)明目的,本發(fā)明公開了一種ip電話終端通信方法,該方法包括:
第一ip電話終端向第二ip電話終端發(fā)送攜帶有自身碼率探測端口號以及自身所支持碼率的呼叫請求消息;
第二ip電話終端在接收到呼叫請求消息后,攜帶自身碼率探測端口號以及自身所支持碼率,向第一ip電話終端發(fā)送呼叫請求臨時應(yīng)答消息;
第一ip電話終端和第二ip電話終端按照對端所支持的碼率,分別向?qū)? 端碼率探測端口發(fā)送碼流,探測對端實際可支持碼率,并將對端實際可支持碼率設(shè)置為本地碼率;以使第一ip電話終端和第二ip電話終端分別以各自設(shè)置的本地碼率發(fā)送編碼幀。
綜上所述,本發(fā)明實施例在媒體流傳輸之前,ip電話終端自動進(jìn)行碼率探測,在確保丟包率較小,編碼速率較高的基礎(chǔ)上,探測到一個合適的編碼速率,使得雙方通訊時的媒體流質(zhì)量大大提高。而且,與現(xiàn)有技術(shù)相比,可以更加快速、準(zhǔn)確地探測到一個合適的編碼速率。
附圖說明
圖1為本發(fā)明實施例ip電話終端通信方法的流程示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明所述方案作進(jìn)一步地詳細(xì)說明。
本發(fā)明的核心思想是:建立媒體流之前的探測編碼速率的機(jī)制,較之先前方法更加快速、準(zhǔn)確。雙方通訊時媒體流質(zhì)量大大提高。
本發(fā)明實施例ip電話終端通信方法,包括以下步驟,其流程示意圖如圖1所示:
步驟11、第一ip電話終端向第二ip電話終端發(fā)送攜帶有自身碼率探測端口號以及自身所支持碼率的呼叫請求消息;
其中,呼叫請求消息可以是invite消息,將自身碼率探測端口號以及自身所支持碼率攜帶在invite消息中發(fā)送。
步驟12、第二ip電話終端在接收到呼叫請求消息后,攜帶自身碼率探測端口號以及自身所支持碼率,向第一ip電話終端發(fā)送呼叫請求臨時應(yīng)答消息;
步驟13、第一ip電話終端和第二ip電話終端按照對端所支持的碼率,分別向?qū)Χ舜a率探測端口發(fā)送碼流,探測對端實際可支持碼率,并將對端實 際可支持碼率設(shè)置為本地碼率;以使第一ip電話終端和第二ip電話終端分別以各自設(shè)置的本地碼率發(fā)送編碼幀。
其中,第一ip電話終端按照對端所支持的碼率,向?qū)Χ舜a率探測端口發(fā)送碼流,探測對端實際可支持碼率,并將對端實際可支持碼率設(shè)置為本地碼率的方法包括:
s1、第一ip電話終端根據(jù)公式:第一ip電話終端的丟包率=(第一ip電話終端預(yù)定時間內(nèi)實際發(fā)送的數(shù)據(jù)包-第二ip電話終端預(yù)定時間內(nèi)實際接收的數(shù)據(jù)包)/第一ip電話終端預(yù)定時間內(nèi)實際發(fā)送的數(shù)據(jù)包,實時計算得到第一ip電話終端的丟包率;
其中,所述第一ip電話終端預(yù)定時間內(nèi)實際發(fā)送的數(shù)據(jù)包是第一ip電話終端根據(jù)第一ip電話終端向?qū)Χ税l(fā)送的碼流計算得到;
所述第二ip電話終端預(yù)定時間內(nèi)實際接收的數(shù)據(jù)包是第二ip電話終端根據(jù)第二ip電話終端接收對端發(fā)送的碼流計算得到,并通過rtcp報告實時反饋給第一ip電話終端。
s2、第一ip電話終端根據(jù)自身預(yù)設(shè)的丟包率閾值,判斷丟包率是否超過預(yù)設(shè)閾值,如果超過,則降低第一ip電話終端的發(fā)送碼率,重新計算丟包率,直至第一ip電話終端的丟包率不高于預(yù)設(shè)閾值,將調(diào)整后的第一ip電話終端的發(fā)送碼率設(shè)置為本地碼率,同時作為探測到的對端實際可支持碼率。
同理,第二ip電話終端按照對端所支持的碼率,向?qū)Χ舜a率探測端口發(fā)送碼流,探測對端實際可支持碼率,并將對端實際可支持碼率設(shè)置為本地碼率的方法包括:
ss1、第二ip電話終端根據(jù)公式:第二ip電話終端的丟包率=(第二ip電話終端預(yù)定時間內(nèi)實際發(fā)送的數(shù)據(jù)包-第一ip電話終端預(yù)定時間內(nèi)實際接收的數(shù)據(jù)包)/第二ip電話終端預(yù)定時間內(nèi)實際發(fā)送的數(shù)據(jù)包,實時計算得到第二ip電話終端的丟包率;
其中,第二ip電話終端預(yù)定時間內(nèi)實際發(fā)送的數(shù)據(jù)包是第二ip電話終端根據(jù)第二ip電話終端向?qū)Χ税l(fā)送的碼流計算得到;
所述第一ip電話終端預(yù)定時間內(nèi)實際接收的數(shù)據(jù)包是第一ip電話終端根據(jù)第一ip電話終端接收對端發(fā)送的碼流計算得到,并通過rtcp報告實時反饋給第二ip電話終端。
ss2、第二ip電話終端根據(jù)自身預(yù)設(shè)的丟包率閾值,判斷丟包率是否超過預(yù)設(shè)閾值,如果超過,則降低第二ip電話終端的發(fā)送碼率,重新計算丟包率,直至第二ip電話終端的丟包率不高于預(yù)設(shè)閾值,將調(diào)整后的第二ip電話終端的發(fā)送碼率設(shè)置為本地碼率,同時作為探測到的對端實際可支持碼率。
進(jìn)一步地,第二ip電話終端在確定雙方設(shè)置了本地碼率后,向第一ip電話終端發(fā)送呼叫請求應(yīng)答消息,雙方開始進(jìn)行媒體流傳輸,即雙方開始發(fā)送編碼幀。
需要說明的是,只是為清楚說明兩個ip電話終端之間進(jìn)行的交互,分別定義了第一ip電話終端和第二ip電話終端,后續(xù)第一ip電話終端和第二ip電話終端在媒體流傳輸過程中都可以作為發(fā)送方,也可以作為接收方。發(fā)送方和接收方是基于流量走向定義的。
優(yōu)選地,本發(fā)明在雙方開始進(jìn)行媒體流傳輸時,進(jìn)行初始化過程,即雙方開始接收媒體流并解碼,而不啟動顯示,只有在接收方接收到一個正確的關(guān)鍵幀并解碼后才開始顯示,在這之前接收到其他類型的編碼幀時,都將取出相應(yīng)解碼幀后丟棄。具體包括以下步驟:
步驟21、接收方接收編碼幀;
步驟22、接收方對編碼幀進(jìn)行解碼后判斷該編碼幀是否為正確的關(guān)鍵幀,如果是,則執(zhí)行步驟23;如果否,即該編碼幀為其他類型的編碼幀,例如雙向參考幀,或者單向參考幀等,則執(zhí)行步驟24;
步驟23、接收方將該正確的關(guān)鍵幀進(jìn)行顯示;
步驟24、接收方將該編碼幀丟棄。
本實施例中,在解碼顯示之前一定要接收到一個正確的關(guān)鍵幀,達(dá)到了延遲顯示的效果,而不是像現(xiàn)有技術(shù)那樣,只要接收到一個編碼幀就進(jìn)行解 碼顯示,本發(fā)明的延遲顯示消除了顯示之初開始可能的馬賽克畫面。
優(yōu)選地,在初始化結(jié)束后,如果接收方確認(rèn)關(guān)鍵幀丟失,則請求對方重新發(fā)送關(guān)鍵幀。具體包括以下步驟:
步驟30、接收方接收編碼幀,對編碼幀進(jìn)行解碼后確認(rèn)關(guān)鍵幀是否丟失,如果是,則執(zhí)行步驟31、請求發(fā)送方重新發(fā)送關(guān)鍵幀;
其中,可以查看解碼器的解碼結(jié)果,來確定關(guān)鍵幀是否丟失。
步驟32、發(fā)送方接收到重發(fā)請求后,判斷兩次重發(fā)間隔是否超過指定閾值,如果兩次重發(fā)間隔大于指定閾值,則執(zhí)行步驟33、啟動重發(fā),然后執(zhí)行步驟35;如果兩次重發(fā)間隔小于指定閾值,則執(zhí)行步驟34、啟動關(guān)鍵幀重發(fā)計時器,在關(guān)鍵幀重發(fā)定時器到時后觸發(fā)一次關(guān)鍵幀重發(fā),然后執(zhí)行步驟35;
步驟35、發(fā)送方在重發(fā)完成后,更新最后一次重發(fā)時間。
現(xiàn)有技術(shù)中,接收方發(fā)現(xiàn)關(guān)鍵幀丟失后,就請求發(fā)送方重新發(fā)送關(guān)鍵幀,發(fā)送方在接收到該請求后,立即重新產(chǎn)生一個關(guān)鍵幀,發(fā)送給對方。因此,本發(fā)明關(guān)鍵幀重發(fā)延遲機(jī)制,降低了頻繁重發(fā)帶來的網(wǎng)絡(luò)擁塞問題。
優(yōu)選地,本發(fā)明在媒體流傳輸過程中,第一ip電話終端或者第二p電話終端都可以進(jìn)行動態(tài)編碼速率調(diào)整,進(jìn)一步提高媒體流質(zhì)量。
根據(jù)rtcp協(xié)議,通話雙方都會定期向?qū)Ψ桨l(fā)送rtcp報告,例如,第一ip電話終端向第二ip電話終端發(fā)送的rtcp報告中包含了第一ip電話終端預(yù)定時間內(nèi)實際接收的數(shù)據(jù)包數(shù)量,是根據(jù)第一ip電話終端接收對端發(fā)送的編碼幀計算得到。第二ip電話終端向第一ip電話終端發(fā)送的rtcp報告中包含了第二ip電話終端預(yù)定時間內(nèi)實際接收的數(shù)據(jù)包數(shù)量,是根據(jù)第二ip電話終端接收對端發(fā)送的編碼幀計算得到。
因此,本發(fā)明動態(tài)編碼速率調(diào)整的方法,包括以下步驟:
步驟41、在發(fā)送編碼幀過程中,第一ip電話終端/第二p電話終端實時計算丟包率;
其中,第一ip電話終端計算丟包率的公式與前述步驟s1中第一ip電話終端的丟包率公式相同。第二ip電話終端計算丟包率的公式與前述步驟ss1中第二ip電話終端的丟包率公式相同。
步驟42、第一ip電話終端/第二p電話終端根據(jù)自身預(yù)設(shè)的丟包率閾值,判斷所述丟包率是否超過預(yù)設(shè)閾值,如果超過,則啟動編碼速率調(diào)整過程。
其中,編碼速率調(diào)整過程,與前述相同,同樣是降低編碼速率,直至丟包率不高于預(yù)設(shè)閾值。具體可以通過調(diào)整編碼的量化參數(shù)的方式,調(diào)整編碼速率。
本發(fā)明實施例ip電話終端通信方法,會帶來如下好處:
一、本發(fā)明實施例在媒體流傳輸之前,ip電話終端自動進(jìn)行碼率探測,在確保丟包率較小,編碼速率較高的基礎(chǔ)上,探測到一個合適的編碼速率,使得雙方通訊時的媒體流質(zhì)量大大提高。而且,與現(xiàn)有技術(shù)相比,可以更加快速、準(zhǔn)確地探測到一個合適的編碼速率。
二、在接收方接收到正確的關(guān)鍵幀后才開始解碼顯示,延遲顯示消除了顯示之初開始可能的馬賽克畫面。
三、關(guān)鍵幀重發(fā)延遲機(jī)制,降低了頻繁重發(fā)帶來的網(wǎng)絡(luò)擁塞問題。
四、結(jié)合服務(wù)質(zhì)量(qos)反饋進(jìn)行動態(tài)碼率調(diào)整機(jī)制,進(jìn)一步提高了媒體流質(zhì)量。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。