本發明涉及數據通信領域,具體而言,涉及一種視頻幀傳輸方法及裝置。
背景技術:
隨著社會的發展,視頻流在網絡中的傳輸變得越來越平常。但是,由于視頻流的數據量較大,當網絡阻塞時,會出現視頻幀丟失的情況,進而導致接收端在播放接收到的視頻幀時出現卡頓現象。
技術實現要素:
有鑒于此,本發明實施例的目的在于提供一種視頻幀傳輸方法及裝置。
第一方面,本發明實施例提供一種視頻幀傳輸方法,所述方法包括:獲取當前網絡情況;根據當前網絡情況、及已緩存的編碼視頻流中各個增強層對應的差異值區間,確定待發送的幀,其中,所述編碼視頻流包括關鍵幀及至少一個視頻幀,每個所述視頻幀對應一個參考幀,屬于同一增強層中的每個所述視頻幀與該視頻幀的參考幀的差異值均屬于同一區間;發送所述待發送的幀。
第二方面,本發明實施例提供一種視頻幀傳輸裝置,所述裝置包括:獲取模塊,用于獲取當前網絡情況;第一處理模塊,用于根據當前網絡情況、及已緩存的編碼視頻流中各個增強層對應的差異值區間,確定待發送的幀,其中,所述編碼視頻流包括關鍵幀及至少一個視頻幀,每個所述視頻幀對應一個參考幀,屬于同一增強層中的每個所述視頻幀與該視頻幀的參考幀的差異值均屬于同一區間;發送模塊,用于發送所述待發送的幀。
與現有技術相比,本發明實施例提供的一種視頻幀傳輸方法及裝置,通過根據當前網絡情況及從已緩存的編碼視頻流中各個增強層對應的差異值區間,實時的確定待發送的幀,并立即將待發送的幀發送,通過這種方式,能夠實現實時的發送與當前網絡情況相適應的幀,解決了在網絡阻塞時,傳輸編碼視頻流時出現幀丟失的情況,并且待發送的幀根據已緩存的編碼視頻流中各個增強層對應的差異值區間來確定,丟棄了相對不重要的視頻幀,能夠保證重要的幀及時、完整的發送,進而使得視頻接收端能夠完整的播放視頻,避免了視頻播放時的卡頓現象。
為使本發明的上述目的、特征和優點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發明的某些實施例,因此不應被看作是對范圍的限定,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他相關的附圖。
圖1是本發明實施例提供的終端設備與服務器交互的示意圖。
圖2是本發明實施例提供的一種視頻幀傳輸方法的流程圖。
圖3是本發明實施例提供的編碼單元的示意圖。
圖4是本發明實施例提供的編碼單元的分層結構示意圖。
圖5是本發明實施例提供的一種視頻幀傳輸方法中的步驟S400的一種詳細流程圖。
圖6是本發明實施例提供的丟棄一層增強層的原理示意圖。
圖7是本發明實施例提供的一種視頻幀傳輸方法中的部分流程圖。
圖8是本發明實施例提供的丟棄兩層增強層的原理示意圖。
圖9是本發明實施例提供的丟棄三層增強層的原理示意圖。
圖10是本發明實施例提供的一種視頻幀傳輸方法中的步驟S400的另一種詳細流程圖。
圖11是本發明實施例提供的一種視頻幀傳輸裝置的功能模塊示意圖。
具體實施方式
下面將結合本發明實施例中附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發明實施例的組件可以以各種不同的配置來布置和設計。因此,以下對在附圖中提供的本發明的實施例的詳細描述并非旨在限制要求保護的本發明的范圍,而是僅僅表示本發明的選定實施例。基于本發明的實施例,本領域技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。同時,在本發明的描述中,術語“第一”、“第二”等僅用于區分描述,而不能理解為指示或暗示相對重要性或時間先后。
圖1示出了本發明實施例提供的一種終端設備與服務器交互的示意圖。所述服務器100與所述終端設備200之間通過網絡進行通信連接,以進行數據通信或交互。所述服務器100可以是視頻監控服務器VM、網絡硬盤錄像機NVR、網絡服務器、數據庫服務器、個人電腦(personal computer,PC)等。所述終端設備200可以是網絡攝像機、個人電腦(personal computer,PC)、平板電腦、智能手機等等。
圖2示出了本發明實施例提供的一種視頻幀傳輸方法的流程圖,請參閱圖2,本實施例描述的是終端設備的處理流程,所述方法包括:
步驟S300,獲取當前網絡情況。
當前網絡情況可以包括當前網絡帶寬,當前網絡丟包率,當前網絡轉發率等。獲取當前網絡情況的實施方式有多種,例如,可以通過第三方應用來獲取當前網絡情況。
步驟S400,根據當前網絡情況、及已緩存的編碼視頻流中各個增強層對應的差異值區間,確定待發送的幀,其中,所述編碼視頻流包括關鍵幀及至少一個視頻幀,每個所述視頻幀對應一個參考幀,屬于同一增強層中的每個所述視頻幀與該視頻幀的參考幀的差異值均屬于同一區間。
編碼視頻流,是指用視頻編碼算法對畫面進行壓縮編碼后,形成的編碼視頻流。其中,視頻編碼算法可以是H.264編碼算法,H.265編碼算法或者分層編碼算法等。
關鍵幀,是指編碼視頻流中攜帶視頻流關鍵信息的幀,可以為I幀或部分P幀。其中,所述編碼視頻流中可以包括一個或多個關鍵幀。
視頻幀,是指編碼視頻流中除關鍵幀外的其它幀,視頻幀中沒有完整畫面數據,只有與其對應參考幀的差別數據,其解碼依賴于其它幀,例如,可以為P幀。每個所述視頻幀對應的參考幀,可以是關鍵幀或者其它視頻幀。若屬于同一增強層中的每個所述視頻幀與該視頻幀的參考幀的差異值均相同,則所述增強層對應的差異值區間為該差異值。
待發送的幀,是指從所述編碼視頻流中包括的關鍵幀及至少一個視頻幀中確定的一部分幀。
作為一種實施方式,所述編碼視頻流中包括多個所述關鍵幀。請參閱圖3至圖4,圖3示出了一個編碼視頻流,該編碼視頻流中包括2個關鍵幀及9個視頻幀,其中,關鍵幀為I幀和P5幀,視頻幀為P1幀 ̄P4幀及P6幀 ̄P10幀,對于每個視頻幀而言,有一個與其對應的參考幀,如圖3所示,P1幀、P3幀與I幀相對應,P2幀與P1幀對應,P4幀與P3幀對應,P6幀、P8幀與P5幀相對應,P7幀與P6幀對應,P9幀與P8幀對應,P10幀與P9幀對應。分別求出每個視頻幀與該視頻幀對應的參考幀的差異值,作為一種實施方式,每個視頻幀與該視頻幀對應的參考幀的差異值為每個視頻幀與該視頻幀對應的參考幀的的亮度差的絕對值。如圖3所示,求出P1幀與I幀的差異值P1’,P2幀與P1幀的差異值P2’,P3幀與I幀的差異值P3’,依次類推,求出如圖3所示的差分值序列P1’ ̄P10’。
進一步的,如圖4所示,將差異值屬于同一區間的視頻幀構成同一增強層,每個所述增強層與一個差異值區間相對應。若差異值P3’與P8’屬于第一差異值區間,差異值P1’、P6’、P9’屬于第二差異值區間,差異值P2’、P4’、P7’、P10’屬于第三差異值區間,則編碼單元包括一個基礎層及3個增強層,基礎層lay0中包括I幀和P5幀;增強層lay1包括P3幀和P8幀,增強層lay1與第一差異值區間對應;增強層lay2包括P1幀、P6幀及P9幀,增強層lay2與第二差異值區間對應;增強層lay3包括P2幀、P4幀、P7幀、及P10幀,增強層lay3與第三差異值區間對應。可以理解的是,屬于不同增強層中的每個視頻幀與該視頻幀對應的參考幀的差異值均不同,并且對于不同增強層,其對應的差異區間不同。進一步的,對于差異值區間較小的增強層,該增強層內的視頻幀優先級較低,對于差異值區間較大的增強層,該增強層內的視頻幀優先級較高。
作為一種實施方式,可以開辟一個內存空間,用于存放包括編碼視頻流,將編碼視頻流緩存在該內存空間中,當獲取到當前網絡情況時,從已緩存的編碼視頻流中確定待發送的幀并發送。其中,開辟的內存空間的大小與編碼碼率對應,例如,若終端設備的編碼碼率為2Mbps,則若需要存儲一個5秒的編碼視頻流,則需要開辟一個20Mb的內存空間。
作為一種實施方式,步驟S400可以包括:若當前網絡阻塞,根據各個增強層對應的差異值區間的排序結果,丟棄所述編碼視頻流中的至少一個增強層中的所有視頻幀,將所述編碼視頻流中剩余的幀作為待發送的幀。
若當前網絡阻塞,可以對各個所述增強層對應的差異值區間進行排序,排序的方式可以為從大到小排序,也可以是從小到大排序。根據不同的排序方式,丟棄編碼視頻流中的至少一個增強層中的所有視頻幀,將所述編碼視頻流中剩余的幀作為待發送的幀。可以理解的是,若當前網絡正常時,將已緩存的編碼視頻流中的所有幀都發送出去,能夠保證在接收端接收到幀時,正常觀看到流暢且高質量的視頻畫面。
進一步的,作為一種具體的實施方式,請參閱圖5,步驟S400可以包括:
步驟S411,按照從小到大的順序,對各個所述增強層對應的差異值區間進行排序。
步驟S412,將差異值區間最小的增強層中的所有視頻幀丟棄,將所述編碼視頻流中剩余的幀作為待發送的幀。
請參閱圖6,若排序結果為:增強層lay3對應的差異值區間小于增強層lay2對應的差異值區間,增強層lay2對應的差異值區間小于增強層lay1對應的差異值區間,則增強層lay3對應的差異值區間最小,此時將增強層lay3中的所有視頻幀丟棄,如圖4所示,增強層lay3包括P2幀、P4幀、P7幀、及P10幀,則將P2幀、P4幀、P7幀、及P10幀丟棄后,剩余的視頻幀為I幀、P1幀、P3幀、P5幀、P6幀、P8幀、及P9幀,將所述編碼視頻流中剩余的I幀、P1幀、P3幀、P5幀、P6幀、P8幀、及P9幀作為待發送的幀。
進一步的,請參閱圖7,所述方法還包括:
步驟S413,再次獲取當前網絡情況。
步驟S414,若當前網絡仍阻塞,根據排序結果,繼續丟棄所述編碼視頻流中的至少一個增強層中的所有視頻幀,當所述編碼視頻流中僅剩下關鍵幀,僅將所述關鍵幀作為待發送的幀。
請參閱圖8,若排序結果為:增強層lay3對應的差異值區間小于增強層lay2對應的差異值區間,增強層lay2對應的差異值區間小于增強層lay1對應的差異值區間。此時已經丟棄了增強層lay3內的所有視頻幀,由于當前網絡仍阻塞,則繼續進行丟棄,根據排序結果,此時丟棄增強層lay2內的所有視頻幀,如圖4所示,增強層lay2包括P1幀、P6幀及P9幀,則將P1幀、P6幀及P9幀丟棄后,所述編碼視頻流中剩余的幀為I幀、P3幀、P5幀、及P8幀,將剩余的I幀、P3幀、P5幀、及P8幀作為待發送的幀。
此時,可以再次獲取當前網絡情況,如當前網絡仍為阻塞,則根據排序結果,繼續丟棄,此時丟棄增強層lay1內的所有視頻幀。如圖4所示,增強層lay2包括P3幀及P8幀,請參閱圖9,此時將P3幀及P8幀丟棄,如圖9所示,此時所述編碼視頻流中僅剩下關鍵幀I幀及P5幀,將所述關鍵幀I幀及P5幀作為待發送的幀。可以理解的是,當所述編碼視頻流中僅剩下關鍵幀時,不再進行丟棄,能夠保證接收端接收到編碼視頻流后,仍然能夠正常觀看,不會出現卡頓的現象。
作為另一種具體的實施方式,請參閱圖10,步驟S400可以包括:
步驟S421,若當前網絡的帶寬屬于第一區間,將差異值區間最小的增強層中的所有視頻幀丟棄后,將所述編碼視頻流中剩余的幀作為待發送的幀。
可以預先設定第一區間,第二區間,第三區間的值,其中,所述第一區間的最小值大于所述第二區間的最大值,所述第二區間的最小值大于所述第三區間的最大值。
假設第一區間的為[10M,20M],第二區間的為[5M,9M),第三區間的為[2M,5M)。若當前網絡帶寬為15M時,此時,如圖6所示,將差異值區間最小的增強層lay3中的所有視頻幀丟棄后,將所述編碼視頻流中剩余的幀作為待發送的幀。
步驟S422,若當前網絡的帶寬屬于第二區間,將所述編碼視頻流中的多個增強層中的所有視頻幀丟棄后,將所述編碼視頻流中剩余的幀作為待發送的幀。
若當前網絡帶寬為7M時,此時可以選擇丟棄多個增強層中的所有視頻幀,例如,可以選擇丟棄增強層lay3中的所有視頻幀,也可以選擇丟棄增強層lay3及增強層lay2中的所有視頻幀,還可以選擇丟棄增強層lay3、增強層lay2、及增強層lay1中的所有視頻幀,選擇的策略可以進一步進行設定,例如,可以進一步將所述第二區間進行劃分,劃分成多個子區間,根據當前網絡的帶寬屬于哪一個子區間來確定選擇丟棄幾層增強層。
步驟S423,若當前網絡的帶寬屬于第三區間,僅將所述編碼視頻流中的所述關鍵幀作為待發送的幀。
若當前網絡帶寬為3M時,此時僅保留基礎層lay0中的關鍵幀作為待發送的幀。
可以理解的是,這種方式中,當獲取到網絡帶寬后,立刻就能確定適應當前帶寬的幀,不必一次次去試探到底丟棄幾層,加快了處理的速度,并且能夠保證基礎層內關鍵幀的傳輸,以維持解碼后的基本畫面,,保證了解碼后畫面的流暢性。
步驟S500,發送所述待發送的幀。
本發明實施例提供的一種視頻幀傳輸方法,通過根據當前網絡情況及從已緩存的編碼視頻流中各個增強層對應的差異值區間,實時的確定待發送的幀,并立即將待發送的幀發送,通過這種方式,能夠實現實時的發送與當前網絡情況相適應的幀,解決了在網絡阻塞時,傳輸編碼視頻流時出現幀丟失的情況,并且待發送的幀根據已緩存的編碼視頻流中各個增強層對應的差異值區間來確定,丟棄了相對不重要的視頻幀,能夠保證重要的幀及時、完整的發送,進而使得視頻接收端能夠完整的播放視頻,避免了視頻播放時的卡頓現象。
請參閱圖11,是本發明實施例提供的一種視頻幀傳輸裝置600的功能模塊示意圖。所述視頻幀傳輸裝置600運行于終端設備200中。所述視頻幀傳輸裝置600包括獲取模塊610、第一處理模塊620、以及發送模塊630。
獲取模塊610,用于獲取當前網絡情況。
第一處理模塊620,用于根據當前網絡情況、及已緩存的編碼視頻流中各個增強層對應的差異值區間,確定待發送的幀,其中,所述編碼視頻流包括關鍵幀及至少一個視頻幀,每個所述視頻幀對應一個參考幀,屬于同一增強層中的每個所述視頻幀與該視頻幀的參考幀的差異值均屬于同一區間。
作為一種實施方式,所述每個視頻幀與該視頻幀的參考幀的的差異值為每個視頻幀與該視頻幀的參考幀的亮度差的絕對值。
作為一種實施方式,第一處理模塊620,具體用于若當前網絡阻塞,根據各個增強層對應的差異值區間的排序結果,丟棄所述編碼視頻流中的至少一個增強層中的所有視頻幀,將所述編碼視頻流中剩余的幀作為待發送的幀。
作為一種具體的實施方式,第一處理模塊620,具體用于按照從小到大的順序,對各個所述增強層對應的差異值區間進行排序;將差異值區間最小的增強層中的所有視頻幀丟棄。
作為又一種實施方式,所述裝置還包括第二處理模塊640,用于再次獲取當前網絡情況;若當前網絡仍阻塞,根據排序結果,繼續丟棄所述編碼視頻流中的至少一個增強層中的所有視頻幀,當所述編碼視頻流中僅剩下關鍵幀,僅將所述關鍵幀作為待發送的幀。
作為另一種實施方式,第一處理模塊620,具體用于若當前網絡的帶寬屬于第一區間,將差異值區間最小的增強層中的所有視頻幀丟棄后,將所述編碼視頻流中剩余的幀作為待發送的幀;若當前網絡的帶寬屬于第二區間,將所述編碼視頻流中的多個增強層中的所有視頻幀丟棄后,將所述編碼視頻流中剩余的幀作為待發送的幀;若當前網絡的帶寬屬于第三區間,僅將所述編碼視頻流中的所述關鍵幀作為待發送的幀,其中,所述第一區間的最小值大于所述第二區間的最大值,所述第二區間的最小值大于所述第三區間的最大值。
發送模塊630,用于發送所述待發送的幀。
以上各模塊可以是由軟件代碼實現,也同樣可以由硬件例如集成電路芯片實現。
需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本發明實施例所提供的視頻幀傳輸裝置,其實現原理及產生的技術效果和前述方法實施例相同,為簡要描述,裝置實施例部分未提及之處,可參考前述方法實施例中相應內容。
在本申請所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,也可以通過其它的方式實現。以上所描述的裝置實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據本發明的多個實施例的裝置、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現方式中,方框中所標注的功能也可以以不同于附圖中所標注的順序發生。例如,兩個連續的方框實際上可以基本并行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基于硬件的系統來實現,或者可以用專用硬件與計算機指令的組合來實現。
另外,在本發明各個實施例中的各功能模塊可以集成在一起形成一個獨立的部分,也可以是各個模塊單獨存在,也可以兩個或兩個以上模塊集成形成一個獨立的部分。
所述功能如果以軟件功能模塊的形式實現并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。
以上所述,僅為本發明的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應所述以權利要求的保護范圍為準。