一種音視頻流傳輸方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用領(lǐng)域,設(shè)及一種音視頻流傳輸方法。
【背景技術(shù)】
[0002] RTP是針對(duì)Internet上多媒體數(shù)據(jù)流的一個(gè)傳輸協(xié)議。被定義為在一對(duì)一或一對(duì) 多的傳輸情況下工作,其目的是提供時(shí)間信息和實(shí)現(xiàn)流同步。RTP協(xié)議在音視頻流實(shí)時(shí)傳輸 中被廣泛應(yīng)用。雖然RTP協(xié)議是一個(gè)成熟的傳輸協(xié)議,但是其代碼很龐大并且數(shù)據(jù)處理很復(fù) 雜,需要占用大量的系統(tǒng)資源,所W在許多資源有限的系統(tǒng)中,要實(shí)現(xiàn)RTP協(xié)議的功能是很 困難的。
【發(fā)明內(nèi)容】
[0003] 為了解決在系統(tǒng)資源不足的音視頻流傳輸系統(tǒng)中,不使用龐大復(fù)雜的完整RTP協(xié) 議的技術(shù)問(wèn),本發(fā)明提供一種音視頻流傳輸方法,實(shí)現(xiàn)基于RTP協(xié)議的音視頻流實(shí)時(shí)傳輸。
[0004] 本發(fā)明的技術(shù)解決方案:
[0005] -種音視頻流傳輸方法,音視頻流基于RTP協(xié)議進(jìn)行傳輸,具體包括W下步驟:
[0006] 1)建立RTP協(xié)議首部的數(shù)據(jù)結(jié)構(gòu);
[0007] 建立RTP協(xié)議定義的字段;RTP協(xié)議定義的字段包括版本號(hào)(V)、填充位(P)、擴(kuò)展位 (X)、CSRC計(jì)數(shù)器(CC)、標(biāo)記位(M)、載荷類型(PT)、序列號(hào)(SN)、時(shí)間戳、同步源標(biāo)識(shí)符 (SSRC)和貢獻(xiàn)源列表(CSRC List);
[000引 2)準(zhǔn)備發(fā)送:
[0009] 2.1)對(duì)音視頻數(shù)據(jù)進(jìn)行分類得到視頻數(shù)據(jù)和音頻數(shù)據(jù);
[0010] 2.2)根據(jù)用戶需求將視頻數(shù)據(jù)或音頻數(shù)據(jù)分成大小合適的包后;
[0011] 2.3)步驟1)建立的字段賦值后封裝在待發(fā)送數(shù)據(jù)包的前端;
[0012] 3)用UDP/IP協(xié)議找對(duì)封裝好的音視頻數(shù)據(jù)進(jìn)行發(fā)送;
[0013] 4)接收端接收到數(shù)據(jù)后,根據(jù)RTP協(xié)議對(duì)數(shù)據(jù)帶有的封裝字段進(jìn)行解析。
[0014] 上述步驟4)具體為:
[0015] 4.1)建立RTP協(xié)議首部的數(shù)據(jù)結(jié)構(gòu);
[0016] 4.2)每次接收到數(shù)據(jù)后,用RTP首部的數(shù)據(jù)結(jié)構(gòu)獲取數(shù)據(jù)包的RTP首部數(shù)據(jù)并進(jìn)行 解析;
[0017] 4.3)根據(jù)解析的數(shù)據(jù)如下操作:
[0018] 根據(jù)載荷類型,進(jìn)行視頻數(shù)據(jù)包、音頻數(shù)據(jù)包和非音視頻數(shù)據(jù)包分類;
[0019] 根據(jù)序列號(hào)和標(biāo)記位,進(jìn)行視頻帖和音頻帖的重組;
[0020] 根據(jù)時(shí)間戳,進(jìn)行音視頻的同步和實(shí)時(shí)。
[0021] 步驟2.3)具體為:
[0022] 載荷類型(PT):用來(lái)判斷視頻數(shù)據(jù)包和音頻數(shù)據(jù)包;
[0023] 序列號(hào)(SN):用來(lái)調(diào)整數(shù)據(jù)包順序和判斷數(shù)據(jù)包是否丟失;
[0024] 時(shí)間戳(Timestamp):保證實(shí)時(shí)性W及音頻和視頻的同步;
[0025] 標(biāo)記位(M):標(biāo)記一帖的開(kāi)始或結(jié)束,用來(lái)進(jìn)行一帖完整數(shù)據(jù)的重組。
[00%]本發(fā)明所具有的有益效果:
[0027] 1、本發(fā)明音視頻流傳輸方法在系統(tǒng)資源不足的音視頻流傳輸系統(tǒng)中,不使用龐大 復(fù)雜的完整RTP協(xié)議,實(shí)現(xiàn)基于RTP協(xié)議的音視頻流實(shí)時(shí)傳輸。
[0028] 2、本發(fā)明音視頻流傳輸方法提供了 RTP協(xié)議的簡(jiǎn)易實(shí)現(xiàn)方法和音視頻流基于該簡(jiǎn) 易R(shí)TP協(xié)議進(jìn)行傳輸?shù)膶?shí)現(xiàn)方法,運(yùn)樣既能夠?qū)崿F(xiàn)RTP協(xié)議的網(wǎng)絡(luò)傳輸功能又能大量節(jié)省系 統(tǒng)資源,與利用原始RTP協(xié)議進(jìn)行傳輸?shù)姆椒ㄕ加孟到y(tǒng)資源相對(duì)比,結(jié)果如下表所示,其中 代碼總量下降了 94.3 %,代碼運(yùn)行占用空間下降了 66.7 %。
[0029] 表1資源占用比較表
【附圖說(shuō)明】
[0031 ]圖1為簡(jiǎn)易的音視頻流傳輸方法流程圖;
[0032] 圖2為RTP協(xié)議首部格式。
【具體實(shí)施方式】
[0033] 下面對(duì)本發(fā)明做進(jìn)一步詳細(xì)描述:
[0034] 一種音視頻流傳輸方法,包括:RTP協(xié)議的簡(jiǎn)易實(shí)現(xiàn)方法和音視頻流基于簡(jiǎn)易R(shí)TP 協(xié)議進(jìn)行傳輸?shù)膶?shí)現(xiàn)方法。
[0035] 所述RTP協(xié)議的簡(jiǎn)易實(shí)現(xiàn)方法中,RTP協(xié)議的目的是保證音視頻流在傳輸時(shí)的實(shí)時(shí) 和同步。
[0036] RTP協(xié)議封裝如圖2所示。具體含義如下:
[0037] 版本號(hào)(V):化k特,用來(lái)標(biāo)志使用的RTP版本。
[0038] 填充位(P) :1比特,如果該位置位,則該RTP包的尾部就包含附加的填充字節(jié)。
[0039] 擴(kuò)展位(X) :1比特,如果該位置位,則RTP固定頭部后面就跟有一個(gè)擴(kuò)展頭部。
[0040] CSRC計(jì)數(shù)器(CC) :4比特,含有固定頭部后面跟著的CSRC的數(shù)目。
[0041] 標(biāo)記位(M): 1比特,標(biāo)志的解釋由具體協(xié)議規(guī)定。它用來(lái)在比特流中標(biāo)記重要的事 件,如帖邊界。
[0042] 載荷類型(PT) :7比特,標(biāo)識(shí)了RTP載荷的類型。
[0043] 序列號(hào)(SN): 16比特,發(fā)送方在每發(fā)送完一個(gè)RTP包后就將該域的值增加1,接收方 可W由該域檢測(cè)包的丟失及恢復(fù)包序列。序列號(hào)的初始值是隨機(jī)的。
[0044] 時(shí)間戳:32比特,記錄了該包中數(shù)據(jù)的第一個(gè)字節(jié)的采樣時(shí)刻。在一次會(huì)話開(kāi)始 時(shí),時(shí)間戳初始化成一個(gè)初始值。即使在沒(méi)有信號(hào)發(fā)送時(shí),時(shí)間戳的數(shù)值也要隨時(shí)間而不斷 地增加。時(shí)間戳是去除抖動(dòng)和實(shí)現(xiàn)同步不可缺少的。
[0045] 同步源標(biāo)識(shí)符(SSRC): 32比特,同步源就是指RTP包流的來(lái)源。在同一個(gè)RTP會(huì)話中 不能有兩個(gè)相同的SSRC值。該標(biāo)識(shí)符是隨機(jī)選取的。
[0046] 貢獻(xiàn)源列表(CSRC List) :0~15項(xiàng),每項(xiàng)32比特,用來(lái)標(biāo)志對(duì)一個(gè)RTP混合器產(chǎn)生 的新包有貢獻(xiàn)的所有RTP包的源。由混合器將運(yùn)些有貢獻(xiàn)的SSRC標(biāo)識(shí)符插入表中。SSRC標(biāo)識(shí) 符都被列出來(lái),W便接收端能正確指出交談雙方的身份。
[0047] 在使用時(shí),將W上數(shù)據(jù)字段封裝成數(shù)據(jù)結(jié)構(gòu),再給數(shù)據(jù)結(jié)構(gòu)附上正確的值,然后封 裝在要發(fā)送數(shù)據(jù)的前端,進(jìn)行發(fā)送,接收端接收到數(shù)據(jù)后,根據(jù)RTP封裝各字段含義進(jìn)行解 析即可,運(yùn)樣就可W簡(jiǎn)易的實(shí)現(xiàn)RTP協(xié)議的基本功能,并且相較于原始RTP協(xié)議能夠節(jié)省大 量的系統(tǒng)資源。
[0048] 所述音視頻流基于簡(jiǎn)易R(shí)TP協(xié)議進(jìn)行傳輸?shù)膶?shí)現(xiàn)方法中,RTP協(xié)議的各字段是可W 靈活應(yīng)用的。進(jìn)行音視頻流的傳輸時(shí),其中主要字段具體應(yīng)用如下:
[0049] 載荷類型(PT):用來(lái)判斷視頻包和音頻包。例如:0b0000000表示音頻包, ObOOOOOO 1表示視頻。
[0050] 序列號(hào)(SN):用來(lái)調(diào)整包順序和判斷包是否丟失。在發(fā)送端,各種類型的數(shù)據(jù)包每 發(fā)送一次,其各自的序列號(hào)加1;在接收端,根據(jù)收到包的序列號(hào)重組數(shù)據(jù)。
[0051] 時(shí)間戳(Timestamp):保證其實(shí)時(shí)性和音視頻的同步。每個(gè)數(shù)據(jù)包在發(fā)送時(shí)都加上 當(dāng)前系統(tǒng)時(shí)間,接收到數(shù)據(jù)包后根據(jù)該字段進(jìn)行音視頻同步和判斷是否實(shí)時(shí)。
[0052] 標(biāo)記位(M):標(biāo)記一帖的開(kāi)始或結(jié)束,用來(lái)進(jìn)行一帖完整數(shù)據(jù)的重組。一般用化1表 示一帖音頻數(shù)據(jù)或一帖視頻數(shù)據(jù)的起始包,用化0表示普通音視頻數(shù)據(jù)包。
[0053] 根據(jù)W上各字段的具體應(yīng)用,再結(jié)合RTP協(xié)議的簡(jiǎn)易實(shí)現(xiàn)方法,就可W實(shí)現(xiàn)音視頻 數(shù)據(jù)基于RTP協(xié)議進(jìn)行傳輸。具體步驟如下:
[0054] 發(fā)送端:
[0055] 步驟1、建立RTP首部的數(shù)據(jù)結(jié)構(gòu)后;
[0056] 步驟2、對(duì)音視頻數(shù)據(jù)進(jìn)行分類和分包,把一視頻或音頻數(shù)據(jù)分成大小合適的包 后,進(jìn)行發(fā)送;
[0057] 步驟3、每次發(fā)送數(shù)據(jù)時(shí),在RTP首部的數(shù)據(jù)結(jié)構(gòu)中填上正確值,然后對(duì)數(shù)據(jù)包進(jìn)行 封裝;
[005引步驟4、用UDP/IP協(xié)議找對(duì)封裝好的數(shù)據(jù)進(jìn)行發(fā)送。
[00別接收端:
[0060] 步驟1、建立RTP首部的數(shù)據(jù)結(jié)構(gòu);
[0061] 步驟2、每次接收到數(shù)據(jù)后,用RTP首部的數(shù)據(jù)結(jié)構(gòu)獲取數(shù)據(jù)包的RTP首部數(shù)據(jù)并進(jìn) 行解析;
[0062] 步驟3、根據(jù)解析的數(shù)據(jù)實(shí)現(xiàn)如下功能:根據(jù)載荷類型,判別視頻包和音頻包或其 他包;根據(jù)序列號(hào)和標(biāo)記位,實(shí)現(xiàn)視頻帖和音頻帖的重組;根據(jù)時(shí)間戳,實(shí)現(xiàn)音視頻的同步 和實(shí)時(shí)。
【主權(quán)項(xiàng)】
1. 一種音視頻流傳輸方法,其特征在于:音視頻流基于RTP協(xié)議進(jìn)行傳輸,具體包括以 下步驟: 1) 建立RTP協(xié)議首部的數(shù)據(jù)結(jié)構(gòu); 建立RTP協(xié)議定義的字段;RTP協(xié)議定義的字段包括版本號(hào)(V)、填充位(P)、擴(kuò)展位(X)、 CSRC計(jì)數(shù)器(CC)、標(biāo)記位(M)、載荷類型(PT)、序列號(hào)(SN)、時(shí)間戳、同步源標(biāo)識(shí)符(SSRC)和 貢獻(xiàn)源列表(CSRC List); 2) 準(zhǔn)備發(fā)送: 2.1) 對(duì)音視頻數(shù)據(jù)進(jìn)行分類得到視頻數(shù)據(jù)和音頻數(shù)據(jù); 2.2) 根據(jù)用戶需求將視頻數(shù)據(jù)或音頻數(shù)據(jù)分成大小合適的包后; 2.3) 步驟1)建立的字段賦值后封裝在待發(fā)送數(shù)據(jù)包的前端; 3) 用UDP/IP協(xié)議棧對(duì)封裝好的音視頻數(shù)據(jù)進(jìn)行發(fā)送; 4) 接收端接收到數(shù)據(jù)后,根據(jù)RTP協(xié)議對(duì)數(shù)據(jù)帶有的封裝字段進(jìn)行解析。2. 根據(jù)權(quán)利要求1所述的音視頻流傳輸方法,其特征在于,所述步驟4)具體為: 4.1) 建立RTP協(xié)議首部的數(shù)據(jù)結(jié)構(gòu); 4.2) 每次接收到數(shù)據(jù)后,用RTP首部的數(shù)據(jù)結(jié)構(gòu)獲取數(shù)據(jù)包的RTP首部數(shù)據(jù)并進(jìn)行解 析; 4.3) 根據(jù)解析的數(shù)據(jù)如下操作: 根據(jù)載荷類型,進(jìn)行視頻數(shù)據(jù)包、音頻數(shù)據(jù)包和非音視頻數(shù)據(jù)包分類; 根據(jù)序列號(hào)和標(biāo)記位,進(jìn)行視頻幀和音頻幀的重組; 根據(jù)時(shí)間戳,進(jìn)行音視頻的同步和實(shí)時(shí)。3. 根據(jù)權(quán)利1所述的音視頻流傳輸方法,其特征在于,步驟2.3)具體為: 載荷類型(PT):用來(lái)判斷視頻數(shù)據(jù)包和音頻數(shù)據(jù)包; 序列號(hào)(SN):用來(lái)調(diào)整數(shù)據(jù)包順序和判斷數(shù)據(jù)包是否丟失; 時(shí)間戳(Timestamp):保證實(shí)時(shí)性以及音頻和視頻的同步; 標(biāo)記位(M):標(biāo)記一幀的開(kāi)始或結(jié)束,用來(lái)進(jìn)行一幀完整數(shù)據(jù)的重組。
【專利摘要】本發(fā)明涉及一種音視頻流傳輸方法,該方法目的是在系統(tǒng)資源不足的音視頻流傳輸系統(tǒng)中,不使用龐大復(fù)雜的完整RTP協(xié)議,實(shí)現(xiàn)基于RTP協(xié)議的音視頻流實(shí)時(shí)傳輸。該方法包括:RTP協(xié)議的簡(jiǎn)易實(shí)現(xiàn)方法和音視頻流基于該簡(jiǎn)易R(shí)TP協(xié)議進(jìn)行傳輸?shù)膶?shí)現(xiàn)方法。該方法既能夠?qū)崿F(xiàn)RTP協(xié)議的網(wǎng)絡(luò)傳輸功能又能大量節(jié)省系統(tǒng)資源。
【IPC分類】H04L29/06
【公開(kāi)號(hào)】CN105577649
【申請(qǐng)?zhí)枴緾N201510929750
【發(fā)明人】陳佳, 田澤, 黎小玉, 曹朋朋, 王綺卉, 陳威宇
【申請(qǐng)人】中國(guó)航空工業(yè)集團(tuán)公司西安航空計(jì)算技術(shù)研究所
【公開(kāi)日】2016年5月11日
【申請(qǐng)日】2015年12月11日