新四季網

網絡視頻流亂序分段解碼方法

2023-06-01 22:24:26 2

網絡視頻流亂序分段解碼方法
【專利摘要】本發明提供了一種網絡視頻流亂序分段解碼方法,涉及視頻流處理【技術領域】。本方法首先從網絡中捕獲傳輸來的視頻數據包,並為每個視頻流建立一個緩存,將數據包按序存在對應的位置,當連續數據包達到指定大小時,進行視頻解碼。採用FFmpeg技術進行數據塊解碼,解碼時修改相應的上下文,通過偽裝的方式讓FFmpeg繼續解碼工作。此外本發明採用具有多個加速單元的獨立板卡進行解碼,加速單元採用FFmpeg技術實現,從而可實現並行解碼。無論網絡視頻流以何種順序接收,本發明方法均能以數據塊為單位將視頻流拼接並進行最大程度解碼,並可支持多數據流並發解碼;本發明方法提高了視頻流有效幀數的接收率和解碼率。
【專利說明】網絡視頻流亂序分段解碼方法

【技術領域】
[0001]本發明涉及視頻流處理【技術領域】,具體是一種基於網絡視頻流的無序分段解碼方法。

【背景技術】
[0002]在網絡視頻流處理領域,傳統的處理方案一般為根據視頻流按序處理。實際運用中,由於P2P、分段下載以及UDP協議的特性,使得亂序的視頻流存在。目前已有的處理方法只能跳過亂序的視頻流,導致解碼不完整,不能還原整個視頻流。


【發明內容】

[0003]本發明的目的是為了最大程度地正確處理亂序的視頻流,提出了一種網絡視頻流亂序分段解碼方法。
[0004]本發明提供的網絡視頻流亂序分段解碼方法,包括兩大步驟:
[0005]第一步,捕獲網絡傳輸來的視頻數據包,具體包括如下子步驟:
[0006]步驟1.1:捕獲網絡傳輸來的數據包,當數據包為視頻數據時,執行步驟1.2,否則繼續捕獲數據包;
[0007]步驟1.2:判斷該數據包是否屬於一個新的sess1n的視頻流數據,若是,為該新的sess1n建立緩存,並進入步驟1.3執行;否則,直接執行步驟1.3 ;
[0008]步驟1.3:根據數據包的位置信息將數據包存儲到對應的緩存中;
[0009]第二步,遍歷視頻緩存,當存在達到指定大小的數據塊時,採用FFmpeg技術對該數據塊進行解碼。數據塊是指連續的數據包。採用FFmpeg技術對數據塊進行解碼時,根據數據塊在視頻流中所處的位置,找到相應的上下文並更新,之後繼續解碼。
[0010]本發明還實現對數據塊的並行解碼,提供了一種實現方式:通過設置在獨立板卡上加速單元對數據塊進行解碼;所述的板卡上設置有兩個以上的加速單元,每個加速單元採用FFmpeg技術實現,用於音視頻處理;板卡的外部接口為PC1-E,插在支持PC1-E插槽的計算機上;計算機與板卡之間實現DMA方式的數據傳輸,從計算機的緩存中讀取待解碼的數據塊通過DMA方式傳輸給板卡上的加速單元,加速單元將解碼後的結果數據通過DMA方式傳回計算機。
[0011]所述的板卡使用方法是:
[0012](I)在主機作業系統的用戶態下設置有API庫和管理工具,在主機作業系統的核心態下設置主機側硬體驅動。在板卡系統的核心態下設置板卡側硬體驅動,在板卡系統的用戶態下設置板卡控制單元和加速單元。API庫提供API函數,以控制板卡啟停音視頻加速處理。主機側硬體驅動與板卡側硬體驅動用於實現DMA數據傳輸方式。
[0013](2)上層應用程式調用API庫提供的API函數,管理工具根據所調用的API函數向板卡控制單元發送音視頻處理的命令,板卡控制單元接收到音視頻處理的命令後,控制加速單元對音視頻數據進行解碼處理。所述的要處理的音視頻數據是通過主機側硬體驅動從主機緩存中讀取,然後傳送給板卡側硬體驅動,板卡側硬體驅動將要處理的音視頻數據傳送給加速單元,加速單元在將解碼後的結果數據傳送給板卡側硬體驅動,板卡側硬體驅動再傳送給主機側硬體驅動,最後由主機側硬體驅動將處理後的結果數據寫回內存。
[0014]本發明的優點與積極效果在於:無論網絡視頻流以何種順序接收,本發明方法均能以數據塊為單位將視頻流拼接並進行最大程度解碼;數據塊大小可根據實際應用調整,並可支持多數據流並發解碼;本發明方法提高了視頻流有效幀數的接收率和解碼率。

【專利附圖】

【附圖說明】
[0015]圖1是本發明的網絡視頻流亂序分段解碼方法的步驟流程圖;
[0016]圖2是本發明通過FFmpeg技術實現並發解碼的結構示意圖。

【具體實施方式】
[0017]下面將結合附圖和實施例對本發明作進一步的詳細說明。
[0018]本發明提出的網絡視頻流亂序分段解碼方法,是一種基於網絡視頻流的無序分段解碼方法,通過本地緩存、分段處理等,最大程度地正確處理亂序的視頻流。
[0019]如圖1所示,為本發明的無序分段解碼方法的整體流程示意圖,具體包括以下步驟:
[0020]步驟一、捕獲網絡傳輸來的視頻數據包,並保存到緩存中。具體步驟一包括如下步驟1.1?步驟1.3。
[0021]步驟1.1、捕獲網絡傳輸來的數據包,對數據包進行分析,如該數據包為視頻數據,則執行步驟1.2,否則繼續捕獲數據包。
[0022]步驟1.2、分析該數據包,如該數據包屬於一個新sess1n(會話)的視頻流數據,則為該sess1n建立緩存空間,然後執行步驟1.3 ;否則,直接執行步驟1.3。
[0023]步驟1.3、根據該數據包中包含的位置信息,將數據包保存至對應的緩存中。具體可根據數據包中偏移量offset來確定數據包的位置。
[0024]步驟二、採用FFmpeg技術對達到指定大小的連續數據包進行解碼。
[0025]遍歷視頻緩存中已保存的所有數據包,判斷是否存在達到指定大小的數據塊,數據塊由連續數據包組成,若存在,則對該數據塊進行解碼處理;否則轉步驟一繼續捕獲數據包。
[0026]數據塊的大小可以根據實際應用調整。
[0027]對達到指定大小的數據塊進行解碼,解碼採用FFmpeg技術實現。所述的FFmpeg是一個開源免費跨平臺的視頻和音頻流方案,它包含了非常先進的音頻/視頻編解碼庫libavcodec,FFmpeg是一個集錄製、轉換、音/視頻編碼解碼功能為一體的完整的開源解決方案,支持 MPEG、DivX, MPEG4、AC3、DV、FLV 等 40 多種編碼格式,AV1、MPEG、OGG、Matroska,ASF等90多種解碼格式[參考文獻:http://www.ffmpeg.0rg]。本發明的解碼處理由開源的FFmpeg移植而成,可實現目前所有FFMPEG所自帶的音視頻處理,並可隨時升級。
[0028]FFmpeg中解碼支持流方式,數據是以塊(大小不定)為單位依次送入解碼引擎解碼。視頻流中的當前塊,在解碼過程中可能會參照到之前的數據,即參考幀。解碼引擎記錄當前流的信息,包括碼流的當前位置,當前參考幀數據等等上下文環境。有數據塊送入時,解碼引擎根據上下文計算出數據塊在碼流中所處的位置,更新上下文後再進行解碼。因此FFmpeg中必須按照順序送入數據才能進行正確的解碼,否則系統將引起異常。
[0029]本發明實現對緩衝的亂序數據進行解碼,並最大可能的還原該視頻流。在原有FFmpeg基礎上,在投入數據塊至解碼引擎前,根據該數據塊在視頻流中所處的位置,找到相應的上下文並更新,之後解碼引擎再繼續解碼。對於每一塊數據塊,都需要修改FFmpeg中相應的上下文內容,通過偽裝的方式讓FFmpeg繼續解碼工作。讓解碼引擎認為該碼流已經到了該位置,從而能順利進行解碼。對於一些特定的封裝,例如flv還需要通過特殊處理flv頭尾數據來解封裝真正的數據內容。
[0030]另外由於分段亂序式的解碼,極有可能參考幀還沒有進內存或已被刷新,因此專門設立了緩衝區存放被刷新出來的參考幀,在需要的時候切換進內存供參考。由於數據的不完整性,FFmpeg非常容易崩潰,本發明中針對常見格式的流數據經過大量測試,還加入了大量的檢查及容錯機制,最大程度上了保持了 FFmpeg解碼的魯棒性。
[0031]本發明採用加速單元對數據塊進行解碼。每個加速單元採用FFmpeg技術實現,用於音視頻處理。因此,利用本發明方法可同時對多個數據塊進行解碼處理。
[0032]所述的加速單元設置在獨立的板卡上,加速單元有多個,以實現並行音頻解碼處理。板卡的外部接口為PC1-E,可插在支持PC1-E插槽的計算機上,板卡通過PC1-E總線與計算機通訊。
[0033]如圖2所示,在計算機主機作業系統的用戶態下設置有API (Applicat1nProgramming Interface,應用程式編程接口)庫I和管理工具2 ;在主機作業系統的核心態下設置DMA (Direct Memory Access,直接內存訪問)方式的主機側硬體驅動3。在板卡系統的核心態下設置DMA方式的板卡側硬體驅動4 ;在板卡系統的用戶態下設置板卡控制單元5和加速單元6。加速單元6可以有多個,如圖2所示的實施例中為3個。
[0034]API庫I用於提供API函數,實現板卡控制功能、狀態檢測功能、數據統計以及日誌功能。板卡控制是指控制板卡進行音視頻加速處理的啟動或暫停或關閉。狀態檢測功能是指板卡的工作狀態查詢。數據統計是指通過板卡所完成的音視頻處理的數據量,數據量是指音視頻編解碼流數及字節數。
[0035]管理工具2根據所調用的API函數控制板卡完成音視頻數據的處理。管理工具2向板卡控制單元5發送音視頻處理的命令以及待處理音視頻數據的地址信息,並從板卡控制單元5接受數據處理狀態以及數據統計的信息。管理工具2與板卡控制單元5之間通過PC1-E總線進行通訊。
[0036]主機側硬體驅動3與板卡側硬體驅動4用於實現DMA數據傳輸方式。
[0037]板卡控制單元5用於實現如下功能:控制板卡、數據傳輸、加速單元控制以及數據統計等。控制板卡用於響應主機作業系統中管理工具2對板卡的控制,如啟動板卡進行音視頻加速處理或暫停板塊音視頻加速處理或關閉板塊對音視頻的加速處理。加速單元控制是指加載用於音視頻編解碼處理的加速單元6。數據統計是指各加速單元在進行音視頻處理後統計自身處理的數據量(音視頻編解碼流數及字節數),然後合併統計後返回給主機作業系統。
[0038]主機的上層應用程式7調用API庫I提供的API函數,管理工具2根據所調用的API函數控制板卡完成音視頻數據的處理。管理工具2向板卡控制單元5發送音視頻處理的命令,板卡控制單元5接收到該命令後,控制加速單元6對所要處理的音視頻數據進行音視頻解碼處理。要處理的音視頻數據是通過主機側硬體驅動3從主機緩存中讀取,然後通過DMA方式傳送給板卡側硬體驅動4,板卡側硬體驅動4將要處理的音視頻數據傳送給加速單元6,加速單元6在將要處理的數據處理完畢後將處理後的結果數據傳送給板卡側硬體驅動4,板卡側硬體驅動4再傳送給主機側硬體驅動3,最後由主機側硬體驅動3將處理後的結果數據寫回內存。
[0039]本發明方法中由計算機主機負責數據採集及傳輸,板卡負責視頻解碼處理,從而大大提高了普通計算機的視頻解碼能力。並且板卡和主機之間採用DMA方式傳輸數據,整個音視頻處理過程不佔用CPU資源。板卡可採用多核處理器,例如64核的多核處理器,以提高多數據流並發解碼的效率。
[0040]採用本發明方法進行網絡視頻數據亂序分段解碼,與【背景技術】中的現有的傳統處理方案的對比效果如表1所示。對比採用了 INTEL XEON 2.7G+千兆網卡,在區域網內使用快車從同一個流媒體伺服器中,分5段下載6個相同的視頻流,每個視頻流下載5次,解碼後的幀數取平均值表示。
[0041]表1本發明的網絡視頻數據亂序分段解碼與傳統處理方案的對比表

【權利要求】
1.一種網絡視頻流亂序分段解碼方法,其特徵在於,包括兩大步驟: 第一步,捕獲網絡傳輸來的視頻數據包,包括如下過程: 步驟1.1:捕獲網絡傳輸來的數據包,當數據包為視頻數據時,執行步驟1.2,否則繼續捕獲數據包; 步驟1.2:判斷該數據包是否屬於一個新的sess1n的視頻流數據,若是,為該新的sess1n建立緩存,並進入步驟1.3執行;否則,直接執行步驟1.3 ; 步驟1.3:根據數據包的位置信息將數據包存儲到對應的緩存中; 第二步,遍歷視頻緩存,當存在達到指定大小的數據塊時,採用FFmpeg技術對該數據塊進行解碼;數據塊為連續的數據包;採用FFmpeg技術對數據塊進行解碼時,根據數據塊在視頻流中所處的位置,找到相應的上下文並更新,之後繼續解碼。
2.根據權利要求1所述的網絡視頻流亂序分段解碼方法,其特徵在於,第二步中所述的採用FFmpeg技術對數據塊進行解碼,通過設置在獨立板卡上加速單元實現;所述的板卡上設置有兩個以上的加速單元,每個加速單元採用FFmpeg技術實現,用於音視頻處理;板卡的外部接口為PC1-E,插在支持PC1-E插槽的計算機上;計算機與板卡之間實現DMA方式的數據傳輸,從計算機的緩存中讀取待解碼的數據塊通過DMA方式傳輸給板卡上的加速單元,加速單元將解碼後的結果數據通過DMA方式傳回計算機。
3.根據權利要求2所述的網絡視頻流亂序分段解碼方法,其特徵在於,第二步中所述的板卡,其實現數據解碼的方法是: (1)在主機作業系統的用戶態下設置有API庫和管理工具,在主機作業系統的核心態下設置主機側硬體驅動;在板卡系統的核心態下設置板卡側硬體驅動,在板卡系統的用戶態下設置板卡控制單元和加速單元;API庫提供API函數,以控制板卡啟停音視頻加速處理;主機側硬體驅動與板卡側硬體驅動用於實現DMA數據傳輸方式; (2)上層應用程式調用API庫提供的API函數,管理工具根據所調用的API函數向板卡控制單元發送音視頻處理的命令,板卡控制單元接收到音視頻處理的命令後,控制加速單元對音視頻數據進行解碼處理;要處理的音視頻數據通過主機側硬體驅動從主機緩存中讀取,然後傳送給板卡側硬體驅動,板卡側硬體驅動將要處理的音視頻數據傳送給加速單元,加速單元在將解碼後的結果數據傳送給板卡側硬體驅動,板卡側硬體驅動再傳送給主機側硬體驅動,最後由主機側硬體驅動將處理後的結果數據寫回內存。
【文檔編號】H04N21/44GK104202659SQ201410471628
【公開日】2014年12月10日 申請日期:2014年9月16日 優先權日:2014年9月16日
【發明者】包秀國, 週遊, 袁慶升, 謝銘, 童曉民, 周康成, 唐劍琪, 鄒學強 申請人:國家計算機網絡與信息安全管理中心, 北京賽思信安技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀