欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于rtp的數(shù)據(jù)傳輸方法

文檔序號:7927861閱讀:230來源:國知局
專利名稱:一種基于rtp的數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域
本發(fā)明屬于計算機網(wǎng)絡多媒體通信技術(shù)領(lǐng)域,尤其涉及一種基于RTP的數(shù) 據(jù)傳輸方法。
背景技術(shù)
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,流媒體技術(shù)的應用越來越廣泛,流媒體傳輸具有 實時性和連續(xù)性的特點。采用不同的碼率傳輸,可以使用戶在幾十kbit/s低 帶寬到幾十Mbit/s高帶寬的不同網(wǎng)絡環(huán)境中,都能在線欣賞到較高質(zhì)量的音、 視頻節(jié)目。針對流媒體數(shù)據(jù)的特點,由于音、視頻數(shù)據(jù)少量的差錯和丟失對最 終播放質(zhì)量的影響較小,為了避免采用可靠傳輸帶來的時延,提高數(shù)據(jù)的實時 性,因此采用實時傳輸協(xié)議RTP。
實時傳輸協(xié)議RTP是專門用于因特網(wǎng)上實時多媒體數(shù)據(jù)傳輸?shù)囊环N協(xié)議, 一般是在UDP數(shù)據(jù)包之前建立一個RTP包頭,其中包含了一些保證數(shù)據(jù)實時連 續(xù)性的信息(如序列號、時間戳等),RTP被定義為在一對一或一對多的傳輸模 式下工作,提供時間信息和流同步。RTP協(xié)議本身不提供流量控制和擁塞控制 功能,它靠一個實時傳輸控制協(xié)議(RTCP)來實現(xiàn)。RTCP周期性地統(tǒng)計數(shù)據(jù)包傳 輸時的丟失情況等信息,服務器根據(jù)這些反饋信息來制定流量控制的策略,改 變傳輸碼率甚至負載類型,大大提高了實時數(shù)據(jù)的傳輸性能。
流媒體系統(tǒng)是無法忽略網(wǎng)絡環(huán)境的變化所帶來的影響的,這些變化包括 數(shù)據(jù)包"亂序到達",先發(fā)送數(shù)據(jù)包有可能比后發(fā)送的數(shù)據(jù)包更遲到達,而這 對于一個連續(xù)序列的實時音、視頻數(shù)據(jù)是非常致命的。

發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種基于RTP的數(shù)據(jù)傳輸方法,利用排序算法來 實現(xiàn)數(shù)據(jù)排序處理和輸出,避免數(shù)據(jù)包的亂序問題。
本發(fā)明的技術(shù)方案是, 一種基于RTP的數(shù)據(jù)傳輸方法,其特征是所述傳輸 方法包括下列順序執(zhí)行的步驟
步驟l:設(shè)置滑動窗口的大小為n個數(shù)據(jù)包;
步驟2:將收到的數(shù)據(jù)包插入到滑動窗口并進行排序;
步驟3:當排序的數(shù)據(jù)包的最大序列號與最小序列號之差大于等于n時, 執(zhí)行步驟4;否則,跳到步驟2;
步驟4:從序列號最小的數(shù)據(jù)包的開始,輸出排好的數(shù)據(jù)包;
步驟5:如果輸出的數(shù)據(jù)包的序列號不連續(xù),則將此前的數(shù)據(jù)包的序列號 作為下次排序的最小序列號;
步驟6:如果輸出的數(shù)據(jù)包序列號連續(xù),但不是n個序列號連續(xù)的數(shù)據(jù)包, 則輸出序列號連續(xù)的數(shù)據(jù)包,直到遇到不連續(xù)的數(shù)據(jù)包為止;
步驟7:如果輸出的數(shù)據(jù)包是n個序列號連續(xù)的數(shù)據(jù)包,則輸出前n-l個 數(shù)據(jù)包,第n個數(shù)據(jù)包作為下次排序的最小序列號數(shù)據(jù)包,并跳到步驟2;
步驟8:如果序列號開始不連續(xù)的數(shù)據(jù)包與當前排序的數(shù)據(jù)包的最大序列 號之差小于n,則跳到步驟2;否則執(zhí)行步驟9;
步驟9:認為該數(shù)據(jù)包已丟失,并跳到步驟2。
所述將收到的數(shù)據(jù)包插入到滑動窗口并進行排序的方法是
如果待插入的數(shù)據(jù)包的序列號小于當前排序的數(shù)據(jù)包的最小序列號,處理
此數(shù)據(jù)包為丟包,不再參與排序;
如果待插入的數(shù)據(jù)包的序列號大于等于當前排序的數(shù)據(jù)包的最大序列號,
將待插入的數(shù)據(jù)包插入到當前排序的數(shù)據(jù)包序列的最后一位;
如果待插入的數(shù)據(jù)包的序列號大于等于當前排序的數(shù)據(jù)包的最小序列號,
并且小于當前排序的數(shù)據(jù)包的最大序列號,將待插入的數(shù)據(jù)包的序列號,依次 與當前排序的數(shù)據(jù)包的序列號進行比較,順序是按照當前排序的數(shù)據(jù)包的序列 號由大到小的順序;在比較時,當發(fā)現(xiàn)第一個當前排序的數(shù)據(jù)包的序列號大于 待插入的數(shù)據(jù)包的序列號時,將待插入的數(shù)據(jù)包插入到所發(fā)現(xiàn)的數(shù)據(jù)包的位 置,并將所發(fā)現(xiàn)的數(shù)據(jù)包后移一位。
本發(fā)明的效果在于,克服流媒體系統(tǒng)無法忽略網(wǎng)絡環(huán)境的變化所帶來的 數(shù)據(jù)傳輸過程中數(shù)據(jù)包的亂序問題,提高實時音、視頻數(shù)據(jù)的傳輸效率。


圖1是視頻幀發(fā)送過程示意圖。
圖2是基于RTP的數(shù)據(jù)傳輸方法的流程圖。 圖3是視頻幀接收過程示意圖。
具體實施例方式
下面結(jié)合附圖,對優(yōu)選實施例作詳細說明。應該強調(diào)的是,下述說明僅 僅是示例性的,而不是為了限制本發(fā)明的范圍及其應用。
流媒體系統(tǒng)是由各種不同的互相通信交互的軟件系統(tǒng)構(gòu)成的, 一個最基本 的流媒體系統(tǒng)必須包括編碼器、服務器和播放器三個模塊,如圖1所示。模塊 之間通過特定的協(xié)議互相通信,并按照特定格式互相交換數(shù)據(jù)。其中編碼器用 來將原始的音、視頻轉(zhuǎn)換成合適的流格式文件,服務器向客戶端發(fā)送編碼后的 媒體流,客戶端播放器則負責解碼和播放接收到的媒體數(shù)據(jù)。
服務器負責將編碼數(shù)據(jù)封裝成RTP數(shù)據(jù)包發(fā)送到網(wǎng)絡中。每次獲取一幀數(shù) 據(jù)后,將其分成幾個RTP數(shù)據(jù)包,并將時間戳和序列號添加到RTP包頭,屬于 同一幀的數(shù)據(jù)包具有相同的時間戳。 一旦到達數(shù)據(jù)包所對應播放的時間后,服 務器便將這一幀的音視頻數(shù)據(jù)包發(fā)送出去,然后再讀取下一幀數(shù)據(jù)。
依靠序列號來調(diào)整到達數(shù)據(jù)包的順序,使之和發(fā)送數(shù)據(jù)一致才可以正確獲
取我們需要的數(shù)據(jù)。包含音、視頻數(shù)據(jù)的RTP數(shù)據(jù)包經(jīng)互聯(lián)網(wǎng)絡傳輸?shù)娇蛻舳?br> 后,先進入一個緩沖隊列等待,這個緩沖隊列中的所有數(shù)據(jù)包按照包頭的序列 號排序,如果有遲到的包,則需按序列號重新插入到正確的位置上,這樣就避 免亂序的問題。
圖2是RTP中實現(xiàn)媒體同步的方法的流程圖?;谏厦娴乃悸?,結(jié)合圖2,
本發(fā)明的具體步驟是
步驟201:設(shè)置滑動窗口的大小為n個數(shù)據(jù)包。
步驟202:將收到的數(shù)據(jù)包插入到滑動窗口并進行數(shù)據(jù)包排序。其中,數(shù) 據(jù)包排序按照下述方式進行
如果待插入的數(shù)據(jù)包的序列號小于當前排序的數(shù)據(jù)包的最小序列號,處理
此數(shù)據(jù)包為丟包,不再參與排序;
如果待插入的數(shù)據(jù)包的序列號大于等于當前排序的數(shù)據(jù)包的最大序列號,
將待插入的數(shù)據(jù)包插入到當前排序的數(shù)據(jù)包序列的最后一位;
如果待插入的數(shù)據(jù)包的序列號大于等于當前排序的數(shù)據(jù)包的最小序列號, 并且小于當前排序的數(shù)據(jù)包的最大序列號,將待插入的數(shù)據(jù)包的序列號,依次 與當前排序的數(shù)據(jù)包的序列號進行比較,順序是按照當前排序的數(shù)據(jù)包的序列 號由大到小的順序;在比較時,當發(fā)現(xiàn)第一個當前排序的數(shù)據(jù)包的序列號大于 待插入的數(shù)據(jù)包的序列號時,將待插入的數(shù)據(jù)包插入到所發(fā)現(xiàn)的數(shù)據(jù)包的位 置,并將所發(fā)現(xiàn)的數(shù)據(jù)包后移一位。
步驟203:當排序的數(shù)據(jù)包的最大序列號與最小序列號之差大于等于n時, 執(zhí)行步驟204;否則,跳到步驟202。
步驟204:從序列號最小的數(shù)據(jù)包的開始,輸出排好的數(shù)據(jù)包。 步驟205:如果輸出的數(shù)據(jù)包的序列號不連續(xù),則將此前的數(shù)據(jù)包的序列 號作為下次排序的最小序列號。
步驟206:如果輸出的數(shù)據(jù)包序列號連續(xù),但不是n個序列號連續(xù)的數(shù)據(jù)
包,則輸出序列號連續(xù)的數(shù)據(jù)包,直到遇到不連續(xù)的數(shù)據(jù)包為止。
步驟207:如果輸出的數(shù)據(jù)包是n個序列號連續(xù)的數(shù)據(jù)包,則輸出前n-l 個數(shù)據(jù)包,第n個數(shù)據(jù)包作為下次排序的最小序列號數(shù)據(jù)包,并跳到步驟202。
步驟208:如果序列號開始不連續(xù)的數(shù)據(jù)包與當前排序的數(shù)據(jù)包的最大序 列號之差小于n,則跳到步驟202;否則執(zhí)行步驟209。
步驟209:認為該數(shù)據(jù)包已丟失,并跳到步驟202。
圖3是視頻幀接收過程示意圖。客戶端每次從隊列頭部讀取一幀的數(shù)據(jù), 從包頭的時間戳中解出該幀的播放時間,然后進行音、視頻同步處理。同步 后的數(shù)據(jù)將送入解碼器進行解碼,解碼后的數(shù)據(jù)被送入一個循環(huán)讀取的緩存 中等待。 一旦該幀的播放時間到達,解碼數(shù)據(jù)就被從緩存中取出,送入播放 模塊驅(qū)動底層硬件設(shè)備進行顯示或播放。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不 局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可 輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明 的保護范圍應該以權(quán)利要求的保護范圍為準。
權(quán)利要求
1、一種基于RTP的數(shù)據(jù)傳輸方法,其特征是所述傳輸方法包括下列順序執(zhí)行的步驟步驟1設(shè)置滑動窗口的大小為n個數(shù)據(jù)包;步驟2將收到的數(shù)據(jù)包插入到滑動窗口并進行排序;步驟3當排序的數(shù)據(jù)包的最大序列號與最小序列號之差大于等于n時,執(zhí)行步驟4;否則,跳到步驟2;步驟4從序列號最小的數(shù)據(jù)包的開始,輸出排好的數(shù)據(jù)包;步驟5如果輸出的數(shù)據(jù)包的序列號不連續(xù),則將此前的數(shù)據(jù)包的序列號作為下次排序的最小序列號;步驟6如果輸出的數(shù)據(jù)包序列號連續(xù),但不是n個序列號連續(xù)的數(shù)據(jù)包,則輸出序列號連續(xù)的數(shù)據(jù)包,直到遇到不連續(xù)的數(shù)據(jù)包為止;步驟7如果輸出的數(shù)據(jù)包是n個序列號連續(xù)的數(shù)據(jù)包,則輸出前n-1個數(shù)據(jù)包,第n個數(shù)據(jù)包作為下次排序的最小序列號數(shù)據(jù)包,并跳到步驟2;步驟8如果序列號開始不連續(xù)的數(shù)據(jù)包與當前排序的數(shù)據(jù)包的最大序列號之差小于n,則跳到步驟2;否則執(zhí)行步驟9;步驟9認為該數(shù)據(jù)包已丟失,并跳到步驟2。
2、 根據(jù)權(quán)利要求1所述的一種基于RTP的數(shù)據(jù)傳輸方法,其特征是所述將收到的數(shù)據(jù)包插入到滑動窗口并進行排序的方法是如果待插入的數(shù)據(jù)包的序列號小于當前排序的數(shù)據(jù)包的最小序列號,處理此數(shù)據(jù)包為丟包,不再參與排序;如果待插入的數(shù)據(jù)包的序列號大于等于當前排序的數(shù)據(jù)包的最大序列號,將待插入的數(shù)據(jù)包插入到當前排序的數(shù)據(jù)包序列的最后一位; 如果待插入的數(shù)據(jù)包的序列號大于等于當前排序的數(shù)據(jù)包的最小序列號,并 且小于當前排序的數(shù)據(jù)包的最大序列號,將待插入的數(shù)據(jù)包的序列號,依次與當 前排序的數(shù)據(jù)包的序列號進行比較,順序是按照當前排序的數(shù)據(jù)包的序列號由大 到小的順序;在比較時,當發(fā)現(xiàn)第一個當前排序的數(shù)據(jù)包的序列號大于待插入的 數(shù)據(jù)包的序列號時,將待插入的數(shù)據(jù)包插入到所發(fā)現(xiàn)的數(shù)據(jù)包的位置,并將所發(fā) 現(xiàn)的數(shù)據(jù)包后移一位。
全文摘要
本發(fā)明公開了計算機網(wǎng)絡多媒體通信技術(shù)領(lǐng)域中的一種基于RTP的數(shù)據(jù)傳輸方法。技術(shù)方案是,設(shè)滑動窗口的大小為n個數(shù)據(jù)包,將收到的數(shù)據(jù)包插入滑動窗口并排序;當參與排序的數(shù)據(jù)包的最大序列號與最小序列號之差大于或等于n時,開始輸出排好的數(shù)據(jù)包,輸出從最小序列號的數(shù)據(jù)包開始;如序列號連續(xù)則可以輸出;如不連續(xù),則此前的數(shù)據(jù)包作為下次排序的最小序列號;如序列號開始不連續(xù)的數(shù)據(jù)包與當前排序的數(shù)據(jù)包的最大序列號之差大于n,則認為該數(shù)據(jù)包已丟失;如n個數(shù)據(jù)包序列號連續(xù),則輸出前n-1個數(shù)據(jù)包,第n個數(shù)據(jù)包作為下次排序的最小序列號數(shù)據(jù)包。本發(fā)明避免了數(shù)據(jù)包傳輸過程的亂序問題。
文檔編號H04L1/00GK101394252SQ20081022649
公開日2009年3月25日 申請日期2008年11月12日 優(yōu)先權(quán)日2008年11月12日
發(fā)明者圳 姜 申請人:北京佳訊飛鴻電氣股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
农安县| 庆云县| 巴马| 岳阳市| 唐河县| 巴中市| 翼城县| 永顺县| 民权县| 河西区| 陇川县| 通城县| 深水埗区| 灯塔市| 涟源市| 隆德县| 忻城县| 永丰县| 谢通门县| 定远县| 罗源县| 永德县| 长武县| 巴中市| 庆安县| 崇礼县| 中宁县| 江西省| 屏山县| 丹东市| 中西区| 萍乡市| 海原县| 即墨市| 贡山| 循化| 渝中区| 江油市| 盘锦市| 渑池县| 内丘县|