本發(fā)明屬于數(shù)據(jù)傳輸技術(shù)領(lǐng)域,尤其是在有交互應(yīng)用的場景中進行的對音頻傳輸有較高需求的系統(tǒng)。
背景技術(shù):
在當(dāng)今互聯(lián)網(wǎng)+社會,人們通過互聯(lián)網(wǎng)來觀看視頻,直播等等已經(jīng)變得非常頻繁和平常了。互聯(lián)網(wǎng)上的音頻傳輸對實時性和流暢度要求很高,尤其是在交互式應(yīng)用場景(如視頻通話、視頻會議等),音頻的卡頓會讓人很敏感的察覺到。傳統(tǒng)的實現(xiàn)方式為采集到pcm單元數(shù)據(jù)后,進行壓縮編碼及傳輸,播放端再進行解碼播放。當(dāng)有一幀數(shù)據(jù)阻塞或者丟失后,會有明顯的卡頓,表現(xiàn)出較差的用戶體驗。
鑒于此,迫切的需要有一種音頻分組采樣傳輸再重組的方法來解決現(xiàn)有技術(shù)存在的問題和風(fēng)險。本發(fā)明就是用來解決此類問題的,本專利提出的這種分組方式可以在只收到一幀分組后的音頻數(shù)據(jù)后,還原出大部分原始語音效果,從而減少阻塞或丟失的幾率。而在收到完整分組數(shù)據(jù)后,也可以完整的還原音質(zhì),最大程度的保障了客戶體驗。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的就是提供一種音頻分組采樣傳輸再重組的方法,來解決現(xiàn)有技術(shù)中存在的諸多問題。
為了實現(xiàn)本發(fā)明的目的,本發(fā)明提供了一種音頻分組采樣傳輸再重組的方法,所述方法包括如下步驟:
步 驟1:將采集端采集到的數(shù)據(jù)緩存到CaptureBuffer中。
步 驟 2: 將單位采樣CaptureBuffer進行拆分,奇數(shù)位采樣數(shù)據(jù)存到CaptureBuffer1中,偶數(shù)位采樣數(shù)據(jù)存到CaptureBuffer2中。這兩個拆分Buffer均包含相同個數(shù)的采樣點。
步 驟 3: 準(zhǔn)備兩個編碼器,對這兩個CaptureBuffer1和CaptureBuffer2音頻數(shù)據(jù)進行分開壓縮編碼成EncoderBuffer1和EncoderBuffer2,再進行分開傳輸。
步 驟 4: 接收端準(zhǔn)備兩個解碼器,將接收到的EncoderBuffer1或EncoderBuffer2分別解碼成DecoderBuffer1或DecoderBuffer2。
1. 若EncoderBuffer1和EncoderBuffer2均收到,則將這兩個解碼buffer重組成PlayBuffer,奇數(shù)位用DecoderBuffer1填充,偶數(shù)位用DecoderBuffer2填充。
2.若EncoderBuffer1或EncoderBuffer2只收到一個,則將這一個解碼后的buffer數(shù)據(jù)做擴充,并保存到PlayBuffer中。假如收到的是EncoderBuffer1,則將DecoderBuffer1相鄰兩個采樣點數(shù)據(jù)做平均,再將這個數(shù)據(jù)作為新的采樣點插入到相鄰的兩個采樣點中間,最后一個采樣點直接作拷貝;假如收到的是EncoderBuffer2,最前面的一個采樣點直接作拷貝,再將DecoderBuffer2相鄰兩個采樣點數(shù)據(jù)做平均,把這個數(shù)據(jù)作為新的采樣點插入到相鄰的兩個采樣點中間。重組后的PlayBuffer包含原始的相同數(shù)量的采樣點。
步 驟 5: 將生成的PlayBuffer送到播放器中播放。
本發(fā)明,與現(xiàn)有技術(shù)相比,通過使用多條鏈路傳輸音頻數(shù)據(jù),在不通的應(yīng)用場景中可以提供更快的傳輸速率或者更穩(wěn)定的傳輸質(zhì)量。比起現(xiàn)有技術(shù),能更好的避免因數(shù)據(jù)阻塞等造成的音頻卡頓問題,從而能更好的提高用戶體驗。
附圖說明
圖1是本發(fā)明的方法流程圖。
圖2是本發(fā)明的實例1示意圖。
具體實例方式
為了使本發(fā)明的目的,技術(shù)方案及有益效果更加清楚明白,以下結(jié)合實例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解為此處所描述的具體實例僅僅用以解釋本發(fā)明,并不用于限制本發(fā)明的保護范圍。
如圖1 所示,本發(fā)明提供了一種音頻分組采樣傳輸再重組的方法,所述方法包括如下步驟:
步驟S101,將采集端采集到的數(shù)據(jù)緩存到CaptureBuffer中。假設(shè)每次采集包含256個采樣點。
步驟S102,將單位采樣CaptureBuffer進行拆分,奇數(shù)位采樣數(shù)據(jù)存到CaptureBuffer1中,偶數(shù)位采樣數(shù)據(jù)存到CaptureBuffer2中。這兩個拆分Buffer均包含128個采樣點。
步驟S103,準(zhǔn)備兩個編碼器(采樣率為8K、采樣位數(shù)16、單聲道),對這兩個CaptureBuffer1和CaptureBuffer2音頻數(shù)據(jù)進行分開壓縮編碼成EncoderBuffer1和EncoderBuffer2,再進行分開傳輸。
步驟S104,接收端準(zhǔn)備兩個解碼器(采樣率為8K、采樣位數(shù)16、單聲道),將接收到的EncoderBuffer1或EncoderBuffer2分別解碼成DecoderBuffer1或DecoderBuffer2,各包含128個采樣點。
1. 若EncoderBuffer1和EncoderBuffer2均收到,則將這兩個解碼buffer重組成PlayBuffer,奇數(shù)位用DecoderBuffer1填充,偶數(shù)位用DecoderBuffer2填充。
2.若EncoderBuffer1或EncoderBuffer2只收到一個,則將這一個解碼后的buffer數(shù)據(jù)做擴充,并保存到PlayBuffer中。假如收到的是EncoderBuffer1,則將DecoderBuffer1相鄰兩個采樣點數(shù)據(jù)做平均,再將這個數(shù)據(jù)作為新的采樣點插入到相鄰的兩個采樣點中間,最后一個采樣點直接作拷貝;假如收到的是EncoderBuffer2,最前面的一個采樣點直接作拷貝,再將DecoderBuffer2相鄰兩個采樣點數(shù)據(jù)做平均,把這個數(shù)據(jù)作為新的采樣點插入到相鄰的兩個采樣點中間。重組后的PlayBuffer包含原始的256個采樣點。
步驟S105,將生成的PlayBuffer送到播放器中播放(16K采樣率、采樣位數(shù)16、單聲道)。
以上所述僅是本發(fā)明的優(yōu)選方式,應(yīng)當(dāng)指出,不局限于將采樣點分兩組傳輸,只要是采用分組傳輸?shù)牟呗远际潜景l(fā)明的保護范圍。還應(yīng)當(dāng)指出對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
如圖2所示,具體實例。
以下介紹本發(fā)明的一種音頻分組采樣傳輸再重組的方法。
實例1
如圖2所示,假設(shè)應(yīng)用場景為一個對實時傳輸要求很高的網(wǎng)絡(luò)會議,按著步驟S101的要求,將采集端采集到的數(shù)據(jù)緩存到CaptureBuffer中。假設(shè)每次采集包含256個采樣點。
根據(jù)步驟S102,將單位采樣CaptureBuffer進行拆分,奇數(shù)位采樣數(shù)據(jù)存到CaptureBuffer1中,偶數(shù)位采樣數(shù)據(jù)存到CaptureBuffer2中。這兩個拆分Buffer均包含128個采樣點。
按著步驟S103,準(zhǔn)備兩個編碼器(采樣率為8K、采樣位數(shù)16、單聲道),對這兩個CaptureBuffer1和CaptureBuffer2音頻數(shù)據(jù)進行分開壓縮編碼成EncoderBuffer1和EncoderBuffer2,其中一路采用TCP的方式傳輸,另外一路采用UDP的方式傳輸。
按著步驟S104,接收端準(zhǔn)備兩個解碼器(采樣率為8K、采樣位數(shù)16、單聲道),分別從TCP 和UDP的線路接收數(shù)據(jù)。將接收到的EncoderBuffer1或EncoderBuffer2分別解碼成DecoderBuffer1或DecoderBuffer2,各包含128個采樣點。本例中假設(shè)通過TCP線路傳輸?shù)臄?shù)據(jù)全部收到了EncoderBuffer1中,UDP傳輸?shù)臄?shù)據(jù)丟失未到達EncoderBuffer2。本例以奇數(shù)位1、3、13、15作為例子,假設(shè)他們對應(yīng)的采樣數(shù)值為46、38、21、69。將EncoderBuffer1中的數(shù)據(jù)解碼后放入DecodeBuffer1中,取相鄰兩個點的平均值座位新的采樣點插入到這兩個相鄰采樣點的中間,最后一個采樣點直接拷貝。此例中如圖2所示,將奇數(shù)位1和奇數(shù)位3的采樣數(shù)值做平均,得出了(46+38)/2=42作為偶數(shù)位2的填充數(shù)值,同樣的,奇數(shù)位13和奇數(shù)15的采樣值做平均,得出(21+69)/2=45做完偶數(shù)位14的填充數(shù)。通過此方法,將TCP這一路傳過來的128個奇數(shù)位采樣點,補充為本來的256個采樣點并放入PlayBuffer中。
按著步驟S105,將生成的PlayBuffer送到播放器中播放(16K采樣率、采樣位數(shù)16、單聲道)。