專利名稱::實現視頻數據傳送的方法、裝置及系統的制作方法
技術領域:
:本發明涉及通信
技術領域:
,尤其涉及一種視頻數據傳送的實現方案。技術背景隨著移動通信系統和IP網絡的快速發展,視頻通信正將逐步成為通信的主要業務之一。ITU-T(國際電信聯盟)繼制定了H.261、H.263、H.263+及H.264等視頻壓縮標準。其中,所述的H.264視頻壓縮編碼標準已經逐漸成為多媒體通信中的主流標準。所述的H.264標準能夠更加有效地提高視頻編碼效率,以及其對網絡的適配性。由于在IP網絡上,相應的如視頻、音頻等多媒體實時應用基本均為采用RTP協議傳送,因此,基于H.264等編碼標準的數據在IP網絡上傳送的過程中,通常也采用RTP(實時傳送協議)協議實現。當然,在IP網絡中,根據實際的數據傳送需求,也可以采用其他協議對經壓縮編碼后的視頻數據進行封裝傳送。所述RTP協議在結構上可以適用于針對不同的媒體數據類型的傳送,只是對于各種不同的高層協議,例如,H.261、H.263、MPEG-1/-2/-4、MP3等視頻編碼標準協議,需要采用不同的RTP凈荷打包協議(Payloadpacketization/encapsulationprotocols),即采用不同的RTP去于裝打包方法;例如,對于H.264編碼標準,可以采用IETF(InternetEngineeringTaskForce,英特網工程特別工作組)標準作為視頻數據在IP網絡上傳送過程中依據的標準。以H.264編碼標準為例,相應的基于RTP協議的視頻數據傳送處理過程具體包括首先,將視頻比特流按照一定的規則分割形成NALU(NetworkAbstractionLayer,網絡抽象層單元)流,例如,可以將一幀圖像作為一個NALU,也可以將一個Slice(條帶)作為一個NALU;然后,根據和應用相關的封裝打包策略,將NALU流封裝打包形成RTP數據包流;在RTP數據包中,頭信息之后就是NALU數據區,如果一個RTP數據包封裝有多個NALU,則各NALU需要首尾相接排列,每個NALU占據一段連續的比特,每個NALU的第一個字節是NALU頭信息字節;在RTP數據包的最后,根據需要還可以設置相應的可選的填充數據比特。對于其他編碼標準,如H.261、H.263標準等,在傳送過程中是不涉及所述的NALU的概念,但相應的視頻數據傳送過程與上述基于H.264標準的視頻數據傳送過程類似,即在數據傳送過程中首先需要將壓縮編碼后的數據進行分塊,之后再將分塊后的數據采用IP網絡中應用的協議(如RTP協議)依次進行封裝傳送。由于在IP網絡和無線網絡中均存在丟包的問題,而丟包現象的出現對視頻數據傳送產生的不利影響顯而易見,因此,克服丟包產生的不利影響是保證視頻數據傳送質量重要因素。然而,在上述視頻數據傳送處理過程中,并未采用抗丟包處理策略。這樣,當發生丟包時,在接收端很可能導致無法解碼,從而無法獲得相應的重構視頻數據。因此,在IP網絡中,現有技術中提供的視頻數據傳送處理方案根本無法保證視頻數據的傳送質量。
發明內容本發明的目的是提供一種實現視頻數據傳送的方法、裝置及系統,以有效克服網絡中的丟包現象對視頻數據傳送造成的不利影響,從而可以使得網絡中視頻數據的傳送質量得到提升。本發明的目的是通過以下技術方案實現的本發明提供了一種實現視頻數據傳送的方法,包括對當前批次的待傳送的視頻數據進行壓縮編碼,獲得壓縮編碼后的多個數據塊;對所述多個數據塊進行糾錯編碼處理,獲得相應的校驗塊;對所述數據塊和校驗塊進行交織處理,并將交織處理后的數據塊和校驗塊封裝成數據包后發送。所述的糾錯編碼包括對所述批次中的各個數據塊進行分組,并將所得的各組數據塊分別進行糾錯編碼處理,分別獲得一組對應的校驗塊,每組數據塊和對應的一組校驗塊形成一個擴展塊組。本發明所述方法中,各個所述的擴展塊組中含有相同數目的數據塊,以及相同數目的校驗塊,且所述擴展塊組中的每個數據塊的長度相等,每個校驗塊的長度相等,數據塊和校驗塊的長度相等。所述的方法還包括將每個擴展塊組中的數據塊和校驗塊按照數據塊在前,校驗塊在后的順序用非負整數順序編號,且所述的交織處理包括將所述的各個擴展塊組中的序號相同的數據塊,或者校驗塊組成一個交織塊組,且每個交織塊組中的數據塊和校驗塊將封裝于同一數據包或者一組傳送順序相連的數據包中。所述的封裝包括將交織處理獲得的一組時間或空間上不相鄰的數據塊封裝于同一數據包或者一組傳送順序相連的數據包中;和/或,將由時間或空間上不相鄰的數據塊經所述糾錯編碼處理產生的校驗塊封裝于同一數據包或者一組傳送順序相連的數據包中;其中,所述數據包的頭信息中包括交織索引號字段,并可選地包括糾錯編碼類型字段、數據塊大小字段、是否采用交織算法標志字段和保留字^a中的至少一項。所述的封裝包括將交織處理后的數據塊和校驗塊采用RTP進行封裝。所述的方法還包4吞在接收端,接收一個批次視頻數據對應的一組數據包,從所述一組數據包中提取獲得多組數據塊和校驗塊,每組中包含若千個數據塊和校驗塊;對所述多組數據塊聯合進行去交織處理,得到去交織后的一個批次視頻數據對應的數據塊和校驗塊,所述去交織后的數據塊和校驗塊包含多個組,每個組含有多個數據塊和校驗塊;然后,對所述每一組數據塊和校驗塊進行糾錯解碼處理,獲得對應的多組處理后的數據塊;對所述多組處理后的數據進行壓縮解碼處理,獲得重構的視頻數據。所述的糾錯解碼處理包括對各個擴展塊組中的各個數據塊和校驗塊進行檢測確定是否有數據塊丟失,如果有數據塊丟失,則利用該組內的其它數據塊和校驗塊通過糾錯解碼進行丟失數據塊的恢復處理,獲得丟失的數據塊。所述的方法還包括判斷待傳送的壓縮編碼數據的類型,若根據預先設定的信息確定所述壓縮編碼數據的類型為重要數據,則對的所述的數據塊和經糾錯編碼獲得的校驗塊進行封裝傳送;否則,對所述的數據塊和經糾錯編碼獲得的校驗塊進行交織處理,并對交織處理后的數據塊和校驗塊進行封裝傳送。所述的判斷待傳送的壓縮編碼數據的類型的方法具體包括根據壓縮編碼數據頭信息中的標識承栽數據類型字段進行編碼數據的類型的判斷。本發明還提供了一種實現視頻數據傳送的裝置,包括壓縮編碼單元,用于對待傳送的原始視頻數據進行壓縮編碼處理,獲得編碼處理后的多個凄^居塊;糾錯編碼單元,用于對所述多個數據塊進行糾錯編碼處理,獲得相應的校驗塊;交織單元,用于對所述數據塊和校驗塊進行交織處理;打包發送處理單元,用于對交織處理后的數據塊和校驗塊進行封裝打包處理,并發送。所述的交織單元具體是將屬于同一批次的數據塊和/或校驗塊進行交織處理,使得在時間或空間上相鄰的數據塊,經過交織,在發送順序上不相鄰;送順序上不相鄰,從而生成交織后數據塊和/或校驗塊。所述的打包發送處理單元用于將交織處理后的一組時間或空間上不相鄰的數據塊,和/或,一組由時間或空間上不相鄰的數據塊經所述糾錯編碼處理產生的校驗塊,封裝于同一數據包或者相繼發送的一組數據包中,并發送。所述的打包發送處理單元中具體采用RTP協議進行數據包的封裝。所述的裝置還包括判斷處理單元,用于判斷待傳送的壓縮編碼數據的類型,若根據預先設定的信息確定所述壓縮編碼數據的類型為重要數據,則對所述的數據塊和經糾錯編碼獲得的校驗塊進行封裝傳送;否則,觸發所述交織單元對所述的數據塊和經糾錯編碼獲得的校驗塊進行交織處理,并通過發送處理單元對交織處理后的數據塊和校驗塊進行封裝傳送。本發明還提供了一種實現視頻數據傳送的系統,包括實現視頻數據傳送的裝置和視頻數據接收裝置,且所述的視頻數據接收裝置設置于接收端,用于接收所述實現視頻數據傳送的裝置發送來的一個批次視頻數據對應的一組數據包,從所述一組數據包中提取多組經過交織的數據塊和校驗塊,每組中包含若干個數據塊和校驗塊;之后,對所述多組數據塊和校驗塊聯合進行去交織處理,得到多個擴展塊組,然后對于每個擴展塊組進行檢測判斷,并根據檢測判斷結果,確定進行或者不進行糾錯解碼處理,獲得多個處理后的數據塊;最后,對所述多個處理后的數據進行壓縮解碼處理,獲得重構的視頻數據。由上述本發明提供的技術方案可以看出,本發明主要采用了交織傳送的實現方案對編碼后的視頻數據進行傳送,使得即使出現丟包現象,但由于交織后的同一數據包或者一組相繼的數據包中的各數據塊之間的相關性較低,相應的導致在接收端無法解碼數據的可能性大大降低。因此,本發明的實現使得在IP網絡、無線網絡等存在丟包現象的網絡環境中仍可以有效提升視頻數據的傳送質量。以采用RTP協議對H.264標準的視頻數據進行傳送為例,本發明還對廣泛應用的RTP協議進行了相應改進,使得其針對H.264視頻的傳送過程中,可以對視頻數據進行交織處理,從而可以大大提高在存在丟包的網絡環境下的視頻數據傳送質量。總之,本發明的實現使得在多媒體視頻通信過程中可以獲得較高的視頻傳送質量,以及較佳的用戶體驗。進而使得多媒體通信業務可以吸引更多的用戶,為運營商和設備廠商帶來顯著的經濟效益。圖1為視頻數據發送端的交織處理過程示意圖;圖2為視頻數據接收端的解交織處理過程示意圖;圖3為本發明所述方法的具體實現過程示意圖;圖4為本發明中改進的RTP協議頭信息結構示意圖;圖5為本發明的應用實例示意圖;圖6為本發明所述的系統的具體實現結構示意圖。具體實施方式本發明在具體實現過程中,主要是為了解決IP網絡和無線網絡等存在丟包問題的網絡環境中的^L頻數據傳送質量問題,即克服網絡中的因丟包現象對視頻數據傳送產生的不利影響。錯編碼,ForwardErrorCorrection)技術。其中,所述的交織技術是通過改變編碼后視頻數據的發送順序,以使得在原時間上相鄰的視頻數據在時間上不再相鄰,即發送順序上相鄰的視頻數據在時間和空間上不再相鄰,從而降低發送順序上相鄰數據之間的相關性。這樣,若發生丟包,則由于發送順序上相鄰的數據相關性較低,因此,相應的造成的影響也就比較小。具體的交織處理的實現原理如圖1所示,在交織前,如果數據之間在空間上相鄰,如圖1中的C幀和D幀,或者,在時間上相鄰,如圖1中的A幀和B幀,則各幀之間相關性較高,經過編碼器壓縮編碼后,輸出的壓縮視頻流中對應的壓縮^:據在發送順序上相鄰。對于壓縮后的視頻數據,若不進行交織處理而直接打包傳送,則若出現丟包現象,將會丟失時間或空間上相鄰的數據,如圖2所示,當丟包時,則可能出現連接丟失一片圖像塊的情況,這時,顯然會對解碼過程產生極為不利的影響。因此,本發明中,采用對壓縮后的數據進行交織處理的實現方案,使得在空間或者時間上相鄰的視頻數據的壓縮數據在發送順序上不再相鄰,這樣,當出現丟包現象時,仍如圖2所示,相應的丟失的圖像塊將不再會連成一片,從而使得通過相應的糾錯機制便可以獲得正確的解碼數據。從上述描述可以看出,為保證獲得正確的解碼數據,還需要對在網絡中的傳送的視頻數據包采用相應的FEC(前向糾錯編碼)技術,當然,也可以采用其他功能類似的糾錯編碼技術。所述的FEC具體是用于對需要保護的數據進行編碼,形成數據冗余,從而增加抗御錯誤的能力。在數據包網絡上主要的錯誤是丟包錯誤,即刪除錯誤(ErasureError)。針對刪除錯誤的糾錯編碼稱為纟悄碼(ErasureCodes)。所述的糾刪碼,具體是將數據碼流順序逐段分割成大小相同的一個個單元,也叫做數據節點(DataNodes),假設共有n個數據節點;然后,按照一定的數學運算規則對于這些數據節點進行計算產生出校驗節點(ParityNodes或者CheckNodes),為了增強保護能力,還可以對于這些校驗節點繼續按照相同或者不同的數學運算規則運算產生出第二層校驗節點,依次類推,還可以產生相應的第三層、第四層、直至第N層校驗節點。一般來說,如果涉及多層校驗節點,每層上的節點數目相對于上一層是按照一定規律(如等比規律等)遞減,從而形成一個逐層遞縮的多層節點結構。所述的糾刪碼的處理時間復雜度是和數據節點數n存在線性關系。本發明中,主要的處理過程如圖3所示,包括以下步驟步驟31:對經過編碼壓縮后的當前批次的視頻數據進行分塊處理,獲得分塊后的待傳送的一組數據塊;具體可以對基于H.261、H.263或H.264編碼后視頻數據進行分塊處理,相應的分塊操作可以為基于條帶或基于一幀圖像等進行數據塊的劃分;步驟32:對所述的待傳送的一組數據塊中包含的各數據塊進行糾錯編碼及交織處理,一方面使得在接收端可以執行相應的糾錯功能,另一方面,還使得原空間或時間上相鄰數據塊在交織處理后不再相鄰;所述的糾錯編碼具體可以為對當前批次中的各個數據塊進行分組,并將所得的各組數據塊分別進行糾錯編碼處理,分別獲得一組對應的校驗塊,每組數據塊和對應的一組校驗塊形成一個擴展塊組,因此,相應的擴展塊組和糾錯編碼前的數據塊組之間——對應;另外,為便于交織處理,還將所述的擴展塊組中的數據塊和校驗塊按照數據塊在前,校驗塊在后的順序用非負整數順序編號(如按照遞增順序編號),這樣,每個數據塊和校驗塊都會對應一個非負整數序號,且每個擴展塊組采用相同的一組序號值及順序編號方式進行編號,之后,便可以根據序號對各塊進行交織處理并發送。所述的交織處理過程具體為將所述的各個擴展塊組中的序號相同的數據塊,或者校驗塊組成一個交織塊組,因此所形成的交織塊組總數等于一個擴展塊組中數據塊加上校驗塊的總數。例如,在對基于H.264標準的NALU通過FEC保護生成數據節點和校驗節點后,為了防止因突發錯誤而導致的FEC不可解,在對相應的數據節點及校驗節點進行封裝之前,還需要對各FEC節點進行交織處理;通過該步驟的處理便.可以有效降低丟包對視頻數據造成的影響;步驟33:將經過糾錯編碼及交織處理后的數據塊(具體包括數據塊和校驗塊)進行封裝打包處理,并發送;具體可以基于RTP協議進行打包處理,或者,也可以基于其他網絡中應用的傳送協議進行打包處理;步驟34:接收端接收到承載有交織處理后的數據塊(包括校驗塊)的數據包后,進行存儲處理,直至接收到分塊后的同一級組數據塊中的所有的數據塊(包括校驗塊);步驟35:利用接收到的所有數據塊(包括校驗塊)進行解交織(去交織)及解碼處理,獲得發送端發送的原始視頻數據,具體可以為在接收端,接收一個批次視頻數據對應的一組數據包,每個數據包中包含多個數據塊和/或校驗塊,從所述一組數據包中提取獲得多組數據塊和校驗塊,每組中包含若干個數據塊和校驗塊;對所述多組數據塊和校驗塊聯合進行去交織處理,得到去交織后的一個批次視頻數據對應的數據塊和校驗塊,所述去交織后的數據塊和校驗塊包含多個組,每個組含有多個數據塊和校驗塊;之后,對所述每一組數據塊和校驗塊進行糾錯解碼處理,如FEC解碼處理等,獲得對應的多組處理后的數據塊;最后,對所述多組處理后的數據進行壓縮解碼處理,從而獲得重構的視頻數據,完成視頻數據的接收。在上述處理過程中,由于步驟31及步驟32執行的處理需要一定的處理延時,因此,對于網絡中傳送的重要數據或時延敏感級別較高的數據也可以選擇不執行上述所述步驟31和步驟32的處理。也就是說,在網絡中可以根據需要僅對部分編碼壓縮后的視頻數據進行交織處理后再傳送,為此,可以在傳送的數據中指示是否采用了交織處理,以便于接收端可以對接收到的數據進行正確的處理(即確定是否執行去交織處理)。為便于對本發明的理解,下面將結合具體的應用實例對本發明進行詳細說明。具體以在IP網絡中基于H.264標準進行視頻數據編碼,并采用RTP協議進行數據傳送為例,本發明主要是提供了一種支持基于H.264編碼的視頻數據等)交織的改進RTP協議,該改進的RTP協議可以對于H.264壓縮視頻數據進行交織傳送的實現方案,使得在承載H.264視頻數據過程中,能夠獲得更好的傳送性能和傳送質量;同時,相應的實現方案在具體應用過程中也不會影響RTP協議的正常工作。為便于描述,可以將相應的經過改進的RTP協議稱為DIRTP(DataInterleavedRTP,數據交織RTP)協議。具體一點講,本發明提供的DIRTP協議包括兩方面的功能(1)支持多種FEC保護措施,以保證當出現錯誤(如數據塊丟失等)時,仍可以保證在一定程度下能夠正確地解碼;(2)采用交織算法對采用FEC策略的數據塊進行交織處理,以有效防止因突發錯誤而導致的FEC不可解問題的出現。在對RTP協議進行改進過程中關鍵涉及數據包頭信息的改進,以適應改進后需要實現的功能。下面將對本發明中所述的DIRTP協議的頭信息結構進行描述,如圖4所示,所述DIRTP協議的頭信息結構包括(1)R字段,可以為3比特,為保留字段,且該字段為可選字段,在接收端應忽略該字l殳。(2)C字段,占用單個比特,用于表明DIRTP載荷是否使用了交織算法,若均采用交織算法,則可以省略該字段;例如,若DIRTP載荷使用了交織算法,則該字段記為"1"否則,該字段記為"0",或者,反之亦可。(3)FECType字段,即FEC編碼類型代號域,用于表示不同的FEC類型,例如,該字段可以占用4比特,以用于表示16種不同的FEC類型。(4)FECSubtype字段,即FEC編碼子類型代號信息域,用于表示在FECType字段中定義的各大類型下進一步細分的各子類型,該字段可以占用的比特數需要根據需要區分的子類型數目確定,例如,可以為9比特等。上述頭信息結構中的(3)和(4)兩項字段用于描述FEC信息,若DIRTP協議為該兩項字段分配了共13比特,則理論上可以區分213=8192種不同的FEC類型;該兩項字段具體分配占用的比特數只要可以滿足區分FEC類型的應用即可;另外,該兩項字段也可以合為一個字段,即僅采用一個字段同時區分相應的FEC類型及子類型。(5)Interleaveindex字段,即交織索引號字段,用于表明該DIRTP載荷在一個交織批次(同一交織批次是指同一批次的視頻數據對應的多組數據塊和校驗塊,所述的多組數據塊和校驗塊需要統一進行交織處理)中基數為0的索引號,所述索引號用于FEC解碼,為滿足承載索引號需求,該字段可以分配占用10比特。(6)Blocksize字段,即塊尺寸字段,該字段指示一個數據塊的大小(在一個FEC單元中每個數據塊的大小都是相等的),根據目前的數據塊的大小該字段具體可以分配占用8比特。基于上述DlRTP協議提供的頭信息結構包含的內容,下而對本發明中具體的數據傳送處理過程進行說明。為便于描述,具體以基于H.264使用交織方法保護DIRTP分組為例,對相應的數據傳送處理過程進行說明。本發明中,將H.264數據分成的多個數據塊,如表1和表2所示,將i個能糾t個錯的分組排列成i行n列的方陣,每個分組(即數據塊)記為B(i,n)。表1<table>tableseeoriginaldocumentpage17</column></row><table>Bi,n表2<table>tableseeoriginaldocumentpage17</column></row><table>若不對各分組進行交織處理,則參照表1中陰影部分所示,當遇到連續j個分組的突發錯誤(如丟失),而且,j遠遠大于t時,對于其中的連續兩個碼組(即數據塊)而言,由于錯誤數已遠遠大于糾錯能力t,因而,將導致無法正確對出錯碼組進行糾錯。若對各分組進行交織處理,則總的分組數不變,傳送次序由原來的B(1,1),B(1,2),B(1,3).,.B(1,n),B(2,1),B(2,2),B(2,3)...B(2,n),......B(i,1),B(i,2),B(i,3)...B(i,n)轉變為B(1,1),B(2,1),B(3,l)...B(i,1),B(1,2),B(2,2),B(3,2)…B(i,2).........B(1,n),B(2,n),B(3,n),…B(i,n)的次序。這樣,當出現丟包現象時,相應的錯誤圖樣正好落在分組碼的糾錯能力范圍內,因而,可以通過糾錯功能正確糾正錯誤,實現正確解碼。因此,若采用交織處理方案對待發送的編碼后的數據進行處理,可以使得在相同冗余度下,糾刪碼保護視頻碼流的能力大大提高。而且,由于不增加新的分組,因此,交織處理過程不會降低編碼效率。通常把碼組數i稱為交織度,且交織度i越大,抗分組丟失的能力越強。但是,交織度i越大要求接收端的緩存區越大,而且相應的延時也會加大,因而,在實際應用本發明的過程中,可以根據實際的設計成本及系統延時要求選取合適的交織度i。下面仍以基于H.264使用交織方法保護DIRTP分組為例,對本發明提供的實現視頻數據傳送的處理過程進行描述。為便于對以下實施例的理解,下面首先對基于H.264標準的視頻數據傳送過程中涉及的H.264NALU進行介紹。所述的NALU的頭信息結構如表3所示表3<table>tableseeoriginaldocumentpage18</column></row><table>表3中,F(forbidden_zero—bit)字段:占用1bit;用于若有語法沖突,則該字段設置為1;或者,當網絡識別此單元中存在比特錯誤時,也可將其設置為1,以便接收方丟掉該單元;NRI(nal—refjdc)字段占用2bits,其具體含義包括00,表示NALU的內容不用于重建幀間預測的參考圖像;非OO,則表示當前NALU是屬于參考幀的slice,或SPS,PPS這類數據;該字段的值越大,表示當前NAL越重要;Type(Nal—unit—type)字段占用5bits,用于承載數據類型信息,共可以為32種類型0-31;具體類型含義參見表4:表4<table>tableseeoriginaldocumentpage19</column></row><table>通過上述說明,對H.264標準涉及的NALU概念已經有所了解,下面將對本發明提供的實現視頻數據傳送的處理過程進行說明。由于H.264NALU的重要程度不同,因而,相應的編碼壓縮后的數據塊的獲得方式不同且相應數據塊對時延的要求也不相同,為此,本發明在具體實現過程中采用了有選擇地對部分待發送的編碼壓縮后的數據塊進行交織處理。相應的具體的實現過程方式如下(--)首先,區分NALU的重要程度;由于在NALU的頭信息中的NRI字段的不同取值可以表示NALU的不同重要程度;例如,NRI取O表示NALU中存放非參考圖像的一個Slice(條帶)或多個Slice數據條帶(如P-Slice(幀間預測條帶),B-slice(雙向預測條帶)},不會影響后續解碼;而NRI取非O則表明NALU中存放一個序列或圖像參考集(如SPS(Sequenceparameterset,序列參數設置)和PPS(pictureparameterset,圖像參數設置)}或者參考圖像的一個Slice或多個Slice數據條帶(如I-Slice(幀內條帶)},會嚴重影響后續解碼;在對H.264的碼流進行基于數據包的糾刪碼保護和交織處理過程中,可以根據NRI的取值將H.264的數據分為兩類非重要數據和重要數據。(1)對于非重要的數據采用交織處理后再發送;具體為對于次重要信息,即非重要數據,如P-Slice、B-slice等,由于這類數據比I-Slice等的重要程度低,且數據量大,時延要求也較低,因此,對于這類數據通常可以采用冗余度小、保護能力相對較弱的糾刪碼保護,同時,為了防止在接收端,因丟失過多的FEC包,超過FEC糾錯能力而導致FEC不可解碼,還應在DIRTP封裝之前,先對FEC包進行交織處理,之后再封裝發送;具體的交織處理過程包括首先,在對次重要信息進行FEC保護和交織處理時,是將兩個l-Slice之間的P-Slice、B-Slice等數據看成一個整體;假定相應的連續次重要信息的總字節數為W,則將數據等分成大小為D個字節的數據塊,當W不能被D整除時,在W個字節后面填充O,得到新的數值W',以便于W'可以被D整除。這樣,相應的數據將被劃分成共[W/D]或者[W7D]個數據塊。如圖5所示,假定每K個數據塊經FEC保護后生成N個FEC塊(其中K個數據塊,M個校驗塊,N=K+M);交織深度為i(其中i〈-N),則一個交織批次中FEC塊的總數為rR^N;為不增加DIRTP頭信息,可以令圖5中i-N。這樣,在頭信息中只要傳送一個參數N,而不是兩個參數i和N來表示分批次的方法。其中,所述N個FEC塊稱為一個FEC塊組在上面描述的算法中,若剩余的FEC塊組個數小于N時,也可以適當的減小i的值,即取^N。之后,每個FEC塊交織封裝入DIRTP載荷(交織度i-N)的處理過程具體包括1、一個交織批次中的第一個DIRTP包頭信息中的interleaveindex=0;FEC塊O,FEC塊N,FEC塊2N,FEC塊3N...…FEC塊(i-1)N。2、一個交織批次中的第二個DIRTP包頭信息中的interleaveindex=1;FEC塊1,FEC塊N+1,FEC塊2N+1,FEC塊3N+1……FEC塊(i-1)N+1。3、一個交織批次中的第N個DIRTP包頭信息中的interleaveindex=N-1;FEC塊N-1,FEC塊2N-1,FEC塊3N-1,FEC塊4N-1……FEC塊iN-1。最后,在接收端,需要有一個能存放至少一個交織批次的N個DIRTP包的緩存區,當接收端接收到下一個交織批次的第一個DIRTP包時(即接收完所有N個DIRTP數據包時),對前面接收到的N個DIRTP包解交織處理,以獲得發送端發送的交織前視頻數據。在上述針對非重要數據的處理過程中,當[W/D]不能被K整除時,則針對余下的大小為D的數據塊將不能進行FEC保護和交織處理。對于該余下的數據的處理可以采用(但不限于)以下兩種方式1、將相應數據塊重新劃分為更小的數據塊,再進行FEC保護及交織處理,之后,封裝發送;2、將相應的數據塊不經過FEC保護和交織處理直接封裝傳送,例如,當余下的數據塊的數目較少時,便可以采用該處理手段。(2)對于重要數據信息則不進行交織處理;具體為對于承載了重要數據的NALU,如SPS、PPS、I-Slice等,需要采要使用冗余度大、抗丟包能力強的糾刪碼保護。這樣,與P-Slice相比,同樣大小的K個數據塊,經過糾刪碼保護后,將會生成更多的校驗塊。由于這類重要數據對時延的要求也較高,即允許有較小的時延,因此,對這類的NALU經過糾刪碼保護生成的FEC塊不使用交織算法。這是因為,若采用交織算法將引入了較大的時延,而且,由于針對重要數據將生成更多的校驗塊,即N值較大,相應的交織度將比較大,這將近一步增加時延。因此,對于卜Slice,在經過糾刪碼保護后不再使用交織算法。但為了防止解碼端FEC不可解,要求一個FEC包裝入一個DIRTP載荷。因此,本發明中,利用目前RTP頭信息中的某個或者某些字節或者比特對RTP協議進行改進以實現本發明。而相應的字節或比特具體可以采用RTP中定義預留或可擴展字節或比特。這樣,改進后的RTP協議不影響與原RTP協議的互通性。即在通信中,有些終端采用按照本發明改進的RTP協議,另外的終端采用未改進的RTP協議,這些終端之間能夠實現正常通信。另外,本發明還在RTP數據包的頭信息中,采取相應的標識區別改進方案RTP和原來的RTP兩者之間的區別,以便系統進行識別,針對不同的情況,采取不同的處理4普施。本發明還提供了一種實現視頻數據傳送的系統,該系統的具體實現結構如圖6所示,主要包括實現視頻數據傳送的裝置和視頻數據接收裝置,下面將分別對兩裝置的具體實現進行說明(一)如圖6所示,所述的實現視頻數據傳送的裝置,具體可以包括以下處理單元(1)壓縮編碼處理單元,用于對當前批次的待傳送的視頻數據進行壓縮編碼處理,獲得編碼處理后的多個數據塊;具體可以為基于H.261、H.263或H.264標準等實現相應的編碼處理;(2)糾錯編碼單元,用于對所述多個數據塊進行糾錯編碼處理,獲得相應的4L瞼塊;(3)交織單元,用于對當前批次的視頻數據對應的所述數據塊和校驗塊進行交織處理,獲得同一交織批次的交織處理結果;具體為將當前批次的視頻數據對應的數據塊和/或校驗塊進行交織處理,從而生成交織后數據塊和/或校驗塊;所述的交織處理可以使得在時間或空間上相鄰的數據塊,經過交織,在發送順序上不相鄰;在時間或空間上(4)打包發送處理單元,用于將屬于同一批次的視頻數據對應包含的經交織處理后的數據塊和/校驗塊中,一組時間或空間上不相鄰的數據塊,和/或,一組由時間或空間上不相鄰的數據塊經所述糾錯編碼處理產生的校驗塊,封裝于同一數據包或發送順序連續的數據包(即相繼的數據包)中發送,而且,具體可以采用RTP協議進行數據包的封裝。為區別處理不同類型的數據,本發明所述的裝置還可以包括判斷處理單元,該單元用于判斷待傳送的壓縮編碼數據的類型,若根據預先設定的信息確定所述編碼數據的類型為重要數據,則觸發對所述的數據塊和經糾錯編碼獲得的校驗塊直接進行封裝傳送,否則,觸發所述的交織單元對所述的數據塊和經糾錯編碼獲得的校驗塊進行交織處理,并通過發送處理單元對交織處理后的數據塊和經糾錯編碼獲得的校驗塊進行封裝傳送。(二)所述視頻數據接收裝置設置于接收端,用于接收一個批次視頻數據對應的一組數據包(即接收同一交織批次的所有數據包),并從所述一組數據包中提取多組經過交織的數據塊和校驗塊,每組中包含若干個數據塊和校驗塊;之后,保存接收到的交織處理后的數據塊和校驗塊,當一個批次視頻數據對應的一組數據包接收完成,即獲得該批次視頻數據對應的所有數據塊和校驗塊后,對收到的多組數據塊和校驗塊聯合進行去交織處理,得到多個擴展塊組,然后對于每個擴展塊組進行檢測判斷,并根據檢測判斷結果,確定對去交織處理后的數據塊和校驗塊進行或不進行糾錯解碼處理,獲得多個處理后的數據塊;最后,對所述多個處理后的數據進行壓縮解碼處理,獲得相應的重構的視頻數據,作為發送端發送的原始視頻數據。本發明所述系統中各裝置及處理單元具體采用的糾錯編碼及交織處理方案在前面已經詳細描述,故不再贅述。綜上所述,本發明主要采用了交織傳送的實現方案對編碼后的視頻數據進行傳送,使得即使出現丟包現象,但由于交織后的同一數據包中的各數據塊之間的相關性較低,相應的導致在接收端無法解碼數據的可能性大大降低。因此,本發明的實現使得在IP網絡、無線網絡等存在丟包現象的網絡環境中仍可以有效保證視頻數據的傳送質量。以上所述,僅為本發明較佳的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本
技術領域:
的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。權利要求1、一種實現視頻數據傳送的方法,其特征在于,包括對當前批次的待傳送的視頻數據進行壓縮編碼,獲得壓縮編碼后的多個數據塊;對所述多個數據塊進行糾錯編碼處理,獲得相應的校驗塊;對所述數據塊和校驗塊進行交織處理,并將交織處理后的數據塊和校驗塊封裝成數據包后發送。2、根據權利要求1所迷的方法,其特征在于,所述的糾錯編碼包括對所述批次中的各個數據塊進行分組,并將所得的各組數據塊分別進行糾錯編碼處理,分別獲得一組對應的校驗塊,每組數據塊和對應的一組校驗塊形成一個擴展塊組。3、根據權利要求2所述的方法,其特征在于,各個所述的擴展塊組中含有相同數目的數據塊,以及相同數目的校驗塊,且所述擴展塊組中的每個數據塊的長度相等,每個校驗塊的長度相等,數據塊和校驗塊的長度相等。4、根據權利要求3所述的方法,其特征在于,所述的方法還包括將每個擴展塊組中的數據塊和校驗塊按照數據塊在前,校驗塊在后的順序用非負整數順序編號,且所述的交織處理包括將所述的各個擴展塊組中的序號相同的數據塊,或者校驗塊組成一個交織塊組,且每個交織塊組中的數據塊和校驗塊將封裝于同一數據包或者一組傳送順序相連的數據包中。5、根據權利要求1所述的方法,其特征在于,所述的封裝包括將交織處理獲得的一組時間或空間上不相鄰的數據塊封裝于同一數據包或者一組傳送順序相連的數據包中;和/或,將由時間或空間上不相鄰的數據塊經所述糾錯編碼處理產生的校驗塊封裝于同一數據包或者一組傳送順序相連的數據包中;其中,所述數據包的頭信息中包括交織索引號字段,并可選地包括糾4普編碼類型字段、數據塊大小字段、是否采用交織算法標志字段和保留字段中的至少一項,6、根據權利要求1所述的方法,其特征在于,所述的封裝包括將交織處理后的數據塊和校驗塊采用實時傳送協議RTP進行封裝。7、根據權利要求1至6任一項所述的方法,其特征在于,所述的方法還包括在接收端,接收一個批次視頻數據對應的一組數據包,從所述一組數據包中提取獲得多組數據塊和校驗塊,每組中包含若干個數據塊和校驗塊;對所述多組數據塊聯合進行去交織處理,得到去交織后的一個批次視頻數據對應的數據塊和校驗塊,所述去交織后的數據塊和校驗塊包含多個組,每個組含有多個數據塊和校驗塊;然后,對所述每一組數據塊和校驗塊進行糾錯解碼處理,獲得對應的多組處理后的數據塊;對所述多組處理后的數據進行壓縮解碼處理,獲得重構的視頻數據。8、根據權利要求7所述的方法,其特征在于,所述的糾錯解碼處理包括對各個擴展塊組中的各個數據塊和校驗塊進行檢測確定是否有數據塊丟失,如果有數據塊丟失,則利用該組內的其它數據塊和校驗塊通過糾錯解碼進行丟失數據塊的恢復處理,獲得丟失的數據塊。9、根據權利要求1至6任一項所述的方法,其特征在于,所述的方法還包括判斷待傳送的壓縮編碼數據的類型,若根據預先設定的信息確定所述壓縮編碼數據的類型為重要數據,則對的所述的數據塊和經糾錯編碼獲得的校驗塊進行封裝傳送;否則,對所述的數據塊和經糾錯編碼獲得的校驗塊進行交織處理,并對交織處理后的數據塊和校驗塊進行封裝傳送。10、根據權利要求9所述的方法,其特征在于,所述的判斷待傳送的壓縮編碼數據的類型的方法具體包括根據壓縮編碼數據頭信息中的標識承載數據類型字段進行編碼數據的類型的判斷。11、一種實現視頻數據傳送的裝置,其特征在于,包括壓縮編碼單元,用于對待傳送的原始視頻數據進行壓縮編碼處理,獲得編碼處理后的多個數據塊;糾錯編碼單元,用于對所述多個數據塊進行糾錯編碼處理,獲得相應的校驗塊;交織單元,用于對所述數據塊和校驗塊進行交織處理;打包發送處理單元,用于對交織處理后的數據塊和校驗塊進行封裝打包處理,并發送。12、根據權利要求10所述的裝置,其特征在于,所述的交織單元具體是將屬于同一批次的數據塊和/或校驗塊進行交織處理,使得在時間或空間上相鄰的數據塊,經過交織,在發送順序上不相鄰;使得由在時間或空間上相鄰交織后數據塊和/或校驗塊。13、根據權利要求12所述的裝置,其特征在于,所述的打包發送處理單元用于將交織處理后的一組時間或空間上不相鄰的凄t據塊,和/或,一組由時數據包或者相繼發送的一組K據包中,并發送。14、根據權利要求11所述的裝置,其特征在于,所述的打包發送處理單元中具體采用RTP協議進行數據包的封裝。15、根據權利要求11至14任一項所述的裝置,其特征在于,所述的裝置還包括判斷處理單元,用于判斷待傳送的壓縮編碼數據的類型,若根據預先設定的信息確定所述壓縮編碼數據的類型為重要數據,則對所述的數據塊和經糾錯編碼獲得的校驗塊進行封裝傳送;否則,觸發所述交織單元對所述的數據塊和經糾錯編碼獲得的校驗塊進行交織處理,并通過發送處理單元對交織處理后的數據塊和校驗塊進行封裝傳送。16、一種實現視頻數據傳送的系統,其特征在于,包括實現視頻數據傳送的裝置和視頻數據接收裝置,且所述的視頻數據接收裝置設置于接收端,用于接收所述實現視頻數據傳送的裝置發送來的一個批次視頻數據對應的一組數據包,從所述一組數據包中提取多組經過交織的數據塊和校驗塊,每組中包含若千個數據塊和校驗塊;之后,對所述多組數據塊和校驗塊聯合進行去交織處理,得到多個擴展塊組,然后對于每個擴展塊組進行檢測判斷,并根據檢測判斷結果,確定進行或者不進行糾錯解碼處理,獲得多個處理后的數據塊;最后,對所述多個處理后的數據進行壓縮解碼處理,獲得重構的視頻數據。全文摘要本發明涉及一種實現視頻數據傳送的方法、裝置及系統。本發明主要包括首先,對待傳送的視頻數據進行壓縮編碼處理,獲得編碼處理后的多個數據塊;之后,對所述多個數據塊進行糾錯編碼處理,獲得相應的校驗塊;最后,對所述數據塊和校驗塊進行交織處理,并對交織處理后的數據塊和校驗塊進行打包封裝傳送。本發明的實現使得即使在傳送中發生丟包,但因交織后的同一或者相繼數據包中所封裝的各數據塊之間相關性較低,因而,在接收端對于接收到數據無法解碼的可能性將大大降低。因此,本發明的實現可以提高視頻數據在IP網絡、無線網絡等存在丟包的網絡上的傳送質量。文檔編號H04N7/26GK101166273SQ20061014058公開日2008年4月23日申請日期2006年10月16日優先權日2006年10月16日發明者彬宋,浩秦,忠羅,郭春芳申請人:華為技術有限公司