一種即時通訊實現方法
【技術領域】
[0001]本發明涉及即時通訊,特別涉及一種語音通訊實現方法。
【背景技術】
[0002]基于移動設備的監控通訊系統,在企業日常工作中由相關工作人員隨身攜帶或是手持設備位于現場,通過3G或WiFi信號進行即時通訊,將現場的實時語音和音頻信息及時回傳到監控人員,由于設備簡單,易于攜帶等優點,因此得到廣泛應用,例如勘察、傳媒、物流運輸等行業。對于企業及時了解現場情況作出有效解決方案具有極大的意義。加入語音和音頻傳輸之后將會極大地提高終端人員的應用范圍與效率。然而現有的通訊系統普遍多為端到端的直接通信,各個終端所在現場的網絡狀況不確定的情況下,流媒體傳輸缺乏穩定性,容易發生數據包丟失和延遲,導致通話質量顯著下降,并且對復雜的環境噪聲沒有針對性的控制手段,難以達到較好的主觀體驗。
【發明內容】
[0003]為解決上述現有技術所存在的問題,本發明提出了一種即時通訊實現方法,包括:
[0004]現場終端對語音數據進行采集和處理,將處理后的數據存儲到所述云平臺;監控終端通過所述云平臺接收從現場終端上傳的語音,解碼并播放。
[0005]優選地,所述將處理后的數據存儲到所述云平臺,進一步包括:
[0006]現場終端將需要傳送的語音數據分割成固定大小的數據段,利用序列號和時間戳對每個數據段進行標識,將數據段封裝到數據包中;現場終端統計傳輸過程中丟包率,并檢測當前可用帶寬;在檢測鏈路的帶寬過程中,記錄連續數據包之間的間隔時間,通過均值濾波函數過濾后,使用平均值估計帶寬容量;
[0007]現場終端基于當前丟包率和所檢測的帶寬來調整發送速度;采用數據傳輸服務器定期應答的方式對發送速度進行反饋,云平臺的數據傳輸服務器每隔預定時間向現場終端發送一個反饋信號,現場終端根據收到的反饋信號調節數據發送速度;數據傳輸服務器將丟失的數據段的標識信息反饋給現場終端,請求重新發送;現場終端在下一個傳輸周期重新發送這些丟失的數據包,直到所有的數據包都被成功接收;
[0008]在第一個傳輸周期,數據傳輸服務器通過序列號判斷數據包有無丟失,如果一次丟包事件內連續丟失了多個數據包,則記錄丟失的第一個和最后一個數據包的序列號,并加上連續丟包的標志位;在傳輸周期結束時,現場終端向數據傳輸服務器發送傳送完成的信號,數據傳輸服務器收到信號后,將丟包鏈表反饋給現場終端,現場終端重新發送丟失的數據包,直到數據傳輸服務器成功接收到所有的數據包。
[0009]優選地,所述云平臺通過通信服務器進行信令的解析與轉發,處理來自監控終端的對語音操作的會話連接信令;而云平臺數據傳輸服務器提供語音的上行通道,把現場終端的語音轉發給監控終端用戶,同時提供語音的下行通道,從監控終端到現場終端的語音信號轉發;
[0010]監控終端對上行語音數據進行接收、解壓和播放;對數據包進行排序,將排序好的數據存入一級緩存中;然后從一級緩存中取出語音數據包,對其進行解壓,將解壓好的數據放入二級緩存中;最后從二級緩存中取出語音數據,設置語音數據播放格式,并嵌入時間戳,將數據推送到一級緩存中,實現語音數據的播放;監控終端對上行語音數據進行采集、編碼和發送;音頻采集首先初始化音頻采集設備、音頻采集格式參數,然后通過設備對象創建采集緩沖區對象并初始化通知機制,最后在需要音頻采集時觸發音頻采集主程序,設備將數據寫入緩沖區,應用程序主動從緩沖區將數據讀出。
[0011]本發明相比現有技術,具有以下優點:
[0012]本發明提出了一種即時通訊實現方法,在語音傳輸中提高了網絡穩定性,提升了通話質量,取得了較高的信噪比增量和降噪效果。
【附圖說明】
[0013]圖1是根據本發明實施例的一種即時通訊實現方法的流程圖。
【具體實施方式】
[0014]下文與圖示本發明原理的附圖一起提供對本發明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發明,但是本發明不限于任何實施例。本發明的范圍僅由權利要求書限定,并且本發明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節以便提供對本發明的透徹理解。出于示例的目的而提供這些細節,并且無這些具體細節中的一些或者所有細節也可以根據權利要求書實現本發明。
[0015]本發明的一方面提供了一種即時通訊實現方法。圖1是根據本發明實施例的一種即時通訊實現方法流程圖。
[0016]本發明在基于移動終端進行雙向語音傳輸的即時通訊,即從現場終端經云平臺轉發到監控終端,從監控終端經云平臺轉發到現場終端的語音傳輸。其中現場終端用于語音數據的采集、編碼壓縮、去噪與實時播放,對信息進行存儲并將語音數據上傳到云平臺;云平臺包括通信服務器和數據傳輸服務器,通信服務器用于轉發連接消息,數據傳輸服務器用于轉發語音數據;監控終端則是用來接收從現場終端上傳的語音,因此需要接收解碼并播放接收到的語音信息,并且可以實現控制、數據存儲以及用戶設備管理。
[0017]現場終端將需要傳送的語音數據分割成固定大小的數據段,利用序列號和時間戳對每個數據段進行標識,將數據段封裝到數據包中。現場終端統計傳輸過程中丟包率,并檢測當前可用帶寬;在檢測鏈路的帶寬過程中,記錄連續數據包之間的間隔時間,通過均值濾波函數過濾后,使用平均值估計帶寬容量。現場終端基于當前丟包率和所檢測的帶寬來調整發送速度;為了減輕現場終端的工作,降低數據傳輸服務器的資源開銷,本發明采用數據傳輸服務器定期應答的方式對發送速度進行反饋,數據傳輸服務器每隔預定時間向現場終端發送一個反饋信號,現場終端根據收到的反饋信號調節數據發送速度。反饋信號中包含如下內容:該反饋間隔內收到的數據包總數量;該反饋間隔內丟失的數據包總數量;檢測得到的網絡帶寬;該反饋間隔內發生的丟包事件數量。在每個傳輸周期完成時,服務器將丟失的數據段的標識信息反饋給現場終端,請求重新發送。現場終端在下一個傳輸周期重新發送這些丟失的數據包,整個過程反復進行,直到所有的數據包都被成功接收。
[0018]在第一個傳輸周期,數據傳輸服務器通過序列號判斷數據包有無丟失,如果一次丟包事件內連續丟失了多個數據包,則記錄丟失的第一個和最后一個數據包的序列號,并加上連續丟包的標志位,以降低反饋的數據量。在傳輸周期結束時,現場終端向數據傳輸服務器發送傳送完成的信號,數據傳輸服務器收到信號后,將丟包鏈表反饋給現場終端。現場終端重新發送丟失的數據包,整個過程循環進行,直到數據傳輸服務器成功接收到所有的數據包。
[0019]本發明中語音數據按8000Hz采樣,16位單聲道PCM數據,采集到的數據根據G723算法進行壓縮。在發送之前還需要將語音數據進行去噪和RTSP打包,在多播或單播的網絡服務上提供端對端的網絡傳輸功能,適合傳輸實時數據。而接收的音頻數據,經過G723算法解壓,將音頻播放設備的參數設置成8000Hz采樣,16位單聲道PCM數據即可正常播放。
[0020]云平臺的通信服務器實現信令的解析與轉發,處理來自監控終端的對語音操作的會話連接信令,如打開語音雙向或僅開單向語音等。數據傳輸服務器提供語音的上行通道,把現場終端的語音轉發給監控終端用戶,同時提供語音的下行通道,從監控終端到現場終端一對一的語音信號的轉發。
[0021]當現場終端的數據上傳時,數據傳輸服務器將該數據直接轉發給請求的用戶;對于語音下行,因為在現場終端,目前直接接收RTSP數據,然后進行解碼。所以,采用跟上行一樣的方式,采用G723數據,進行RTSP打包發送,數據傳輸服務器直接用于轉發,到某一臺設備,在終端接收,解碼播放。
[0022]監控終端的音頻處理包括音頻上行處理和音頻下行處理。上行語音數據的處理包括接收、解壓和播放。監控終端運行過程中,多路語音同時播放,每路音頻數據也同時接收,但是考慮到多路聲音同時播放會造成聽覺上的干擾,所以用戶可根據需要隨時切換收聽任意一路音頻,其他路的音頻則采用靜音處理。
[