視頻數(shù)據(jù)的發(fā)送方法及裝置的制造方法
【專利摘要】本申請?zhí)峁┮环N視頻數(shù)據(jù)的發(fā)送方法及裝置,所述方法包括:獲取參考I幀;針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值,并將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中;在需要從臨時緩存空間中選取數(shù)據(jù)幀時,如果臨時緩存空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從臨時緩存空間中選擇一個采集I幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將臨時緩存空間中的其它采集I幀丟棄。應(yīng)用本申請實施例,前端設(shè)備通過將采集I幀的差值存儲到臨時緩存空間,在選取數(shù)據(jù)幀進行發(fā)送時,利用差值選取采集I幀進行發(fā)送,以確保終端設(shè)備播放的視頻畫面的實時性,并且不會遺漏重要視頻畫面。
【專利說明】
視頻數(shù)據(jù)的發(fā)送方法及裝置
技術(shù)領(lǐng)域
[0001 ]本申請涉及通信技術(shù)領(lǐng)域,尤其涉及一種視頻數(shù)據(jù)的發(fā)送方法及裝置。
【背景技術(shù)】
[0002] 隨著監(jiān)控系統(tǒng)的網(wǎng)絡(luò)化發(fā)展,監(jiān)控系統(tǒng)中的前端設(shè)備(比如IPC(IP Camera,網(wǎng)絡(luò) 攝像機)設(shè)備)的視頻數(shù)據(jù),在終端設(shè)備上被點播的機率越來越大。前端設(shè)備首先將采集的 視頻數(shù)據(jù)編碼成若干個數(shù)據(jù)幀組,并將若干個數(shù)據(jù)幀組存儲在發(fā)送緩存隊列中,每個數(shù)據(jù) 幀組由一個I幀和多個P幀組成。其中,I幀是關(guān)鍵幀,記錄了一幀完整的視頻畫面,是數(shù)據(jù)幀 組中最重要的數(shù)據(jù)幀,可以單獨進行解碼,P幀是非關(guān)鍵幀,是根據(jù)前一個數(shù)據(jù)幀得到的,需 要參考前一個數(shù)據(jù)幀進行解碼。然后前端設(shè)備將每個數(shù)據(jù)幀從發(fā)送緩存隊列中發(fā)送到終端 設(shè)備,終端設(shè)備對接收到的每個數(shù)據(jù)幀進行解碼,并將視頻畫面呈現(xiàn)給用戶。
[0003] 然而,受網(wǎng)絡(luò)穩(wěn)定性和帶寬不足的影響,終端設(shè)備容易出現(xiàn)視頻畫面不清晰,甚至 出現(xiàn)視頻畫面花屏或卡頓的情況。在現(xiàn)有技術(shù)中,當網(wǎng)絡(luò)帶寬不足,出現(xiàn)擁堵時,前端設(shè)備 的發(fā)送緩存隊列中的數(shù)據(jù)幀不能及時發(fā)送出去,導(dǎo)致發(fā)送緩存隊列溢出,前端設(shè)備會將所 有溢出的數(shù)據(jù)幀全部丟棄。這樣,前端設(shè)備在將所有溢出的數(shù)據(jù)幀丟棄的同時,勢必會將溢 出的關(guān)鍵幀(I幀)也丟棄,而這些溢出的關(guān)鍵幀對于終端設(shè)備的視頻畫面的影響比較大(比 如,前面視頻畫面中出現(xiàn)一人,后面視頻畫面這人沒了,而中間這人做了什么沒有看到),從 而導(dǎo)致重要視頻畫面丟失。
【發(fā)明內(nèi)容】
[0004] 有鑒于此,本申請?zhí)峁┮环N視頻數(shù)據(jù)的發(fā)送方法及裝置,以解決現(xiàn)有視頻數(shù)據(jù)發(fā) 送方式會導(dǎo)致重要視頻畫面丟失的問題。
[0005] 根據(jù)本申請實施例的第一方面,提供一種視頻數(shù)據(jù)的發(fā)送方法,所述方法應(yīng)用于 前端設(shè)備上,所述視頻數(shù)據(jù)由若干個數(shù)據(jù)幀組組成,所述數(shù)據(jù)幀組包括采集I幀,所述方法 包括:
[0006] 獲取參考I幀;
[0007] 針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值,并將 所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中;
[0008] 在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨時緩存空間中存在多個 采集I幀,則利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空間中選擇一個采集I幀,讀取 該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將所述臨時緩存空間中的其它采集I幀 丟棄。
[0009] 根據(jù)本申請實施例的第二方面,提供一種視頻數(shù)據(jù)的發(fā)送裝置,所述裝置應(yīng)用于 前端設(shè)備上,所述視頻數(shù)據(jù)由若干個數(shù)據(jù)幀組組成,所述數(shù)據(jù)幀組包括采集I幀,所述裝置 包括:
[0010]獲取單元,用于獲取參考I幀;
[0011] 差值計算單元,用于針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采 集I幀的差值;
[0012] 存儲單元,用于將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中;
[0013] 選擇處理單元,用于在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨時 緩存空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空間中選 擇一個采集I幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將所述臨時緩存 空間中的其它采集I幀丟棄。
[0014] 應(yīng)用本申請實施例,在網(wǎng)絡(luò)擁堵時,前端設(shè)備首先獲取參考I幀,然后針對每個數(shù) 據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值,并將所述差值與所述采集I 幀存儲在預(yù)先申請的臨時緩存空間中,在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果 所述臨時緩存空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從臨時緩存空間 中選擇一個采集I幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將臨時緩存 空間中的其它采集I幀丟棄。
[0015] 基于上述實現(xiàn)方式,在網(wǎng)絡(luò)擁堵時,由于前端設(shè)備是通過將每個數(shù)據(jù)幀組中的采 集I幀的差值存儲在預(yù)先申請的臨時緩存空間中,所述差值用于表示所述采集I幀與參考I 幀的差異,差值越大表不所述米集I幀相對參考I幀的差異越大,也就是視頻畫面內(nèi)容差異 越大,所述采集I幀越重要。因此,在選取數(shù)據(jù)幀進行發(fā)送時,前端設(shè)備可以利用每個采集I 幀對應(yīng)的差值,選取一個采集I幀進行發(fā)送,以確保終端設(shè)備播放的視頻畫面的實時性,并 盡可能使用戶能夠看到內(nèi)容有變化的視頻畫面,不會遺漏任何重要視頻畫面。前端設(shè)備還 會將其它的采集I幀丟棄,在確保終端設(shè)備播放的視頻畫面的實時性,不遺漏任何重要視頻 畫面的前提下,實現(xiàn)減輕網(wǎng)絡(luò)擁堵的目的。因此,前端設(shè)備通過有選擇的發(fā)送一個采集I幀, 并將臨時緩存空間中的其它采集I幀丟棄,這樣,可以有選擇的丟棄采集I幀,并且丟棄的采 集I幀對于終端設(shè)備的視頻畫面影響不大。而現(xiàn)有技術(shù)中,是發(fā)送緩存隊列只要一溢出,就 將所有溢出的采集I幀丟棄,這樣,在網(wǎng)絡(luò)擁堵時,前端設(shè)備丟棄的采集I幀是任意的,沒有 選擇的,因此,丟棄的采集I幀可能是比較重要的,對于終端設(shè)備的視頻畫面影響比較大,而 發(fā)送到終端設(shè)備的采集I幀的視頻畫面可能與之前的視頻畫面沒有任何變化。
【附圖說明】
[0016] 圖1為本申請根據(jù)一示例性實施例示出的一種視頻數(shù)據(jù)的發(fā)送方法的實施例流程 圖;
[0017] 圖2為本申請根據(jù)一示例性實施例示出的一種臨時緩存空間中差值最大的采集I 幀不是最新采集I幀的示意圖;
[0018] 圖3為本申請根據(jù)一示例性實施例示出的一種臨時緩存空間中差值最大的采集I 幀是最新采集I幀的示意圖;
[0019] 圖4為本申請根據(jù)一示例性實施例示出的一種臨時緩存空間中只存在一個采集I 幀的不意圖;
[0020] 圖5為本申請根據(jù)一示例性實施例示出的一種臨時緩存空間中不存在采集I幀的 示意圖;
[0021] 圖6為本申請根據(jù)一示例性實施例示出的一種前端設(shè)備的硬件結(jié)構(gòu)圖;
[0022] 圖7為本申請根據(jù)一示例性實施例示出的一種視頻數(shù)據(jù)的發(fā)送裝置的實施例結(jié)構(gòu) 圖。
【具體實施方式】
[0023] 這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及 附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例 中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附 權(quán)利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
[0024] 在本申請使用的術(shù)語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。 在本申請和所附權(quán)利要求書中所使用的單數(shù)形式的"一種"、"所述"和"該"也旨在包括多數(shù) 形式,除非上下文清楚地表示其他含義。還應(yīng)當理解,本文中使用的術(shù)語"和/或"是指并包 含一個或多個相關(guān)聯(lián)的列出項目的任何或所有可能組合。
[0025]應(yīng)當理解,盡管在本申請可能采用術(shù)語第一、第二、第三等來描述各種信息,但這 些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離 本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第 一信息。取決于語境,如在此所使用的詞語"如果"可以被解釋成為"在……時"或"當…… 時"或"響應(yīng)于確定"。
[0026] 在本申請實施例中,視頻數(shù)據(jù)的發(fā)送方法可以應(yīng)用于視頻數(shù)據(jù)實時傳輸?shù)膽?yīng)用場 景中,例如視頻監(jiān)控、視頻點播等。本申請的實施例以視頻點播的應(yīng)用場景為例進行說明。 概括地講,視頻點播系統(tǒng)包括前端設(shè)備和終端設(shè)備。其中,所述前端設(shè)備用于采集視頻數(shù) 據(jù),并通過網(wǎng)絡(luò)向終端設(shè)備發(fā)送視頻數(shù)據(jù),可以是網(wǎng)絡(luò)攝像機、接入模擬攝像機的編碼器 等;所述終端設(shè)備用于從前端設(shè)備獲取視頻數(shù)據(jù),進行實時播放。前端設(shè)備可以使用如下網(wǎng) 絡(luò)將視頻數(shù)據(jù)發(fā)送給終端設(shè)備:帶寬網(wǎng)絡(luò)、3G(3rd-g enerati〇n,第三代移動通信技術(shù))網(wǎng)絡(luò) 或者4G(4th-gen erati〇n,第四代移動通信技術(shù))網(wǎng)絡(luò)等。然而,不斷變化的網(wǎng)絡(luò)環(huán)境對視頻 播放實時性的影響十分顯著,因此,本申請實施例所提供的視頻數(shù)據(jù)發(fā)送方法,目的在于在 網(wǎng)絡(luò)環(huán)境變壞(即網(wǎng)絡(luò)帶寬不足)的情況下,還能夠保證視頻播放的實時性,并且不會丟失 重要的視頻畫面。
[0027] 參見圖1所示,為本申請根據(jù)一示例性實施例示出的一種視頻數(shù)據(jù)的發(fā)送方法的 實施例流程圖,該實施例應(yīng)用于前端設(shè)備上,在本申請實施例中,所述視頻數(shù)據(jù)由若干個數(shù) 據(jù)幀組組成,所述數(shù)據(jù)幀組包括一個采集I幀和多個P幀,其中,采集I幀是關(guān)鍵幀,記錄了一 幀完整的視頻畫面,是數(shù)據(jù)幀組中最重要的數(shù)據(jù)幀,可以單獨進行解碼,P幀是非關(guān)鍵幀(前 向預(yù)測編碼幀),記錄了一個數(shù)據(jù)幀與前一個數(shù)據(jù)幀所不同的部分,需要根據(jù)前一個數(shù)據(jù)幀 進行解碼。當前端設(shè)備的發(fā)送緩存隊列中需要發(fā)送的所有數(shù)據(jù)幀的大小超過預(yù)設(shè)閾值時, 前端設(shè)備可以向內(nèi)存申請預(yù)設(shè)大小的臨時緩存空間,比如,假設(shè)前端設(shè)備的碼率為2Mbps, 如果需要將5秒的數(shù)據(jù)幀存儲在臨時緩存空間中,則可以申請5*2= 10Mb的臨時緩存空間。 這樣,利用臨時緩存空間存儲數(shù)據(jù)幀,可以避免發(fā)送緩存隊列中的數(shù)據(jù)幀溢出。并且在發(fā)送 緩存隊列中的數(shù)據(jù)幀發(fā)送完之后,再從臨時緩存空間中選取數(shù)據(jù)幀,并將選取的數(shù)據(jù)幀存 儲到發(fā)送緩存隊列中進行發(fā)送。
[0028]該實施例包括以下步驟:
[0029] 步驟101:獲取參考I幀。
[0030] 前端設(shè)備獲取最后存儲在發(fā)送緩存隊列的采集I幀,作為初始的參考I幀,在后續(xù) 過程中,可以對參考I幀進行調(diào)整,具體調(diào)整方式在后續(xù)說明。
[0031] 在本申請實施例中,為了對I幀與參考I幀進行區(qū)分,將最后存儲在發(fā)送緩存隊列 的I幀,或者后續(xù)進行調(diào)整時,將正要發(fā)送或已經(jīng)發(fā)送的I幀稱為參考I幀,而將已編碼但未 進入發(fā)送緩存隊列的I幀稱為采集I幀。在本質(zhì)上,采集I幀與參考I幀二者之間沒有任何區(qū) 別,都是I幀,例如,針對某個I幀,當前端設(shè)備將I幀存儲到臨時緩存空間中時,該I幀可以作 為采集I幀,當前端設(shè)備正要發(fā)送I幀時,該I幀可以作為參考I幀。
[0032] 步驟102:針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差 值,并將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中。
[0033]前端設(shè)備首先將視頻數(shù)據(jù)進行分組,通常情況下,前端設(shè)備的幀率可以是25fps, 即每隔40毫秒得到一個數(shù)據(jù)幀,1秒得到25個數(shù)據(jù)幀,因此,前端設(shè)備通??梢詫⑦@1秒的數(shù) 據(jù)幀(25個數(shù)據(jù)幀)作為一個數(shù)據(jù)幀組,即先編碼一個記錄了一幀完整的視頻畫面的采集I 幀,隨后的24個P幀只記錄與前一個數(shù)據(jù)幀(采集I幀或P幀)所不同的部分,每個數(shù)據(jù)幀組中 采集I幀是數(shù)據(jù)幀組的首幀,P幀按照順序排在采集I幀之后。如表1所示,為一種示例性的數(shù) 據(jù)幀組。
[0034]
[0035] 表 1
[0036] 其中,前端設(shè)備編碼采集I幀可以采用幀內(nèi)壓縮算法,編碼P幀可以采用幀間壓縮 算法,本申請實施例對于采集I幀和P幀的具體編碼方式不進行限制,在此不再贅述。
[0037] 針對計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值的過程,前端設(shè)備將參 考I幀和采集I幀均進行預(yù)解碼還原到編碼前的圖像,并將兩者的圖像進行差值計算,并將 計算結(jié)果的絕對值作為差值;前端設(shè)備也可以在采集I幀編碼之前,將參考I幀進行預(yù)解碼 還原為圖像之后,再與編碼之前的采集I幀的圖像進行差值計算,并將計算結(jié)果的絕對值作 為差值。通常情況下,當監(jiān)控場景相對靜止沒有變化時,參考I幀與采集I幀之間沒有明顯差 異,差值很小,而當在監(jiān)控場景中出現(xiàn)異常物體運動時,參考I幀與采集I幀之間會有明顯差 異,差值增大。因此,該差值越大,表不該米集I幀相對參考I幀的差異越大,也就是視頻畫面 內(nèi)容差異越大,該采集I幀越重要。
[0038] 其中,所述差值用于表示該采集I幀與參考I幀的差異,采集I幀是數(shù)據(jù)幀組中最重 要的數(shù)據(jù)幀。并且,前端設(shè)備在獲取到采集I幀與參考I幀之間的差值之后,將該差值以及該 差值對應(yīng)的采集I幀一并存儲到臨時緩存空間中。
[0039] 步驟102是在發(fā)送緩存隊列中的數(shù)據(jù)幀不能及時發(fā)送出去時執(zhí)行的過程,在發(fā)送 緩存隊列中的數(shù)據(jù)幀發(fā)送完成之后,需要從臨時緩存空間中選取數(shù)據(jù)幀時,執(zhí)行步驟103。
[0040] 步驟103:在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨時緩存空間中 存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空間中選擇一個采集I 幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將所述臨時緩存空間中的其它 采集I幀丟棄。
[0041] 當發(fā)送緩存隊列中的數(shù)據(jù)幀發(fā)送完成之后,前端設(shè)備開始從臨時緩存空間中選取 數(shù)據(jù)幀,如果臨時緩存空間中存在多個采集I幀,前端設(shè)備則利用每個采集I幀對應(yīng)的差值, 從所述臨時緩存空間中選擇一個采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將其它采集I 幀丟棄。
[0042] 其中,針對利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空間中選擇一個采集I 幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將其它采集I幀丟棄的過程,前端設(shè)備可以利用每個 采集I幀對應(yīng)的差值,確定差值最大的采集I幀,并將所述差值最大的采集I幀讀取到發(fā)送緩 存隊列中進行發(fā)送,并將所述臨時緩存空間中所述差值最大的采集I幀之外的其它采集I幀 丟棄。
[0043]其中,如步驟102所述,差值最大表不該米集I幀相對參考I幀的差異最大,也就是 說,該差值對應(yīng)的采集I幀的視頻畫面內(nèi)容,相對之前已經(jīng)發(fā)送或正要發(fā)送的視頻畫面內(nèi)容 差異最大,該采集I幀很重要,而其它較小差值對應(yīng)的采集I幀的視頻畫面,相對之前已經(jīng)發(fā) 送或正要發(fā)送的視頻畫面內(nèi)容變化較小,因此,為了保證發(fā)送視頻數(shù)據(jù)的實時性,并盡可能 使用戶能夠看到內(nèi)容有變化的視頻畫面,不會遺漏任何重要視頻畫面,前端設(shè)備從臨時緩 存空間中存儲的所有數(shù)據(jù)幀組中選取差值最大的采集I幀進行發(fā)送,以確保終端設(shè)備播放 的視頻畫面的實時性。若臨時緩存空間中存在兩個差值最大的采集I幀,可以選取最新存儲 在臨時緩存空間中的米集I幀進行發(fā)送,因為最新存儲的米集I幀表不視頻畫面是最新的, 更具有實時性。
[0044] 此外,前端設(shè)備將差值最大的采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送之后,臨時 緩存空間中剩下的其它采集I幀的差值,由于都是基于之前的參考I幀計算得到的,在選取 差值最大的采集I幀進行發(fā)送后,前端設(shè)備就要調(diào)整參考I幀,因此,前端設(shè)備將差值最大的 采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送之后,臨時緩存空間中再存儲進來的采集I幀的差 值,是根據(jù)新的參考I幀得到的,而臨時緩存空間中剩下的根據(jù)舊的參考I幀得到的差值對 應(yīng)的采集I幀已經(jīng)過期,從而可以將其它采集I幀丟棄,以減輕網(wǎng)絡(luò)擁堵。
[0045] 需要說明的是,前端設(shè)備在將差值與采集I幀存儲在臨時緩存空間中之后,還將P 幀對應(yīng)采集I幀存儲到臨時緩存空間中,因此,若差值最大的采集I幀不是臨時緩存空間中 的最新采集I幀,則將臨時緩存空間中的所有P幀丟棄;若差值最大的采集I幀是最新采集I 幀,則將差值最大的采集I幀之前的所有P幀丟棄,并將差值最大的采集I幀之后的P幀保留 在臨時緩存空間中。
[0046]其中,最新米集I幀指的是最后存儲到臨時緩存空間中的米集I幀,即在臨時緩存 空間中排在最后面的采集I幀,也即剛剛存儲到臨時緩存空間中的采集I幀。由于P幀是非關(guān) 鍵幀,在數(shù)據(jù)幀組中是根據(jù)前一個數(shù)據(jù)幀得到的,需要參考前一數(shù)據(jù)幀進行解碼,如果該數(shù) 據(jù)幀組中的采集I幀過期,那么該數(shù)據(jù)幀組中的采集I幀之后的所有P幀也過期。因此,若差 值最大的采集I幀不是最新采集I幀,由于臨時緩存空間中剩下的其它采集I幀已經(jīng)過期,那 么臨時緩存空間中的所有P幀也已經(jīng)過期(包括差值最大的采集I幀對應(yīng)的數(shù)據(jù)幀組中的P 幀),因此,前端設(shè)備可以將其丟棄,以減輕網(wǎng)絡(luò)擁堵。如圖2所示,為臨時緩存空間中差值最 大的采集I幀不是最新采集I幀的示意圖。若差值最大的采集I幀是最新采集I幀,由于差值 最大的采集I幀之后的P幀是根據(jù)該差值最大的采集I幀(或者差值最大的采集I幀之后的P 幀)得到的,并且差值最大的采集I幀(正在發(fā)送的采集I幀)之后的P幀是最新存儲到臨時緩 存空間中的,因此,差值最大的采集I幀之后的P幀還沒有過期,可以將其保留在臨時緩存空 間中,如果網(wǎng)絡(luò)不擁堵,差值最大的采集I幀很快發(fā)送出去,并且臨時緩存空間中還沒有新 的采集I幀存儲進來,那么就可以選取保留下來的P幀進行發(fā)送。而差值最大的采集I幀之前 的所有P幀已經(jīng)過期,可以將其丟棄,以減輕網(wǎng)絡(luò)擁堵。如圖3所示,為臨時緩存空間中差值 最大的采集I幀是最新采集I幀的示意圖。
[0047] 進一步地,前端設(shè)備在將選取的差值最大的采集I幀存儲到發(fā)送緩存隊列中進行 發(fā)送時,可以調(diào)整當前的參考I幀,即將該差值最大的采集I幀作為新的參考I幀,以確保參 考I幀一直是正要發(fā)送或者已經(jīng)發(fā)送的采集I幀。
[0048] 上面是臨時緩存空間中存在多個采集I幀的情況的處理過程,下面結(jié)合具體的例 子,對臨時緩存空間中存在一個采集I幀、不存在采集I幀、以及只存在一個數(shù)據(jù)幀(采集I幀 或P幀)進行說明:
[0049] 情況一、臨時緩存空間中存在一個采集I幀:
[0050] 在前端設(shè)備需要從臨時緩存空間中選取數(shù)據(jù)幀時,如果臨時緩存空間中只存在一 個采集I幀,則將該采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將該采集I幀之前的P幀丟 棄,并將該采集I幀之后的P幀保留在臨時緩存空間中,并將該采集I幀作為新的參考I幀,以 確保參考I幀一直是正要發(fā)送或者已經(jīng)發(fā)送的采集I幀。
[0051] 其中,由于采集I幀是關(guān)鍵幀,是視頻數(shù)據(jù)組中最重要的數(shù)據(jù)幀,因此前端設(shè)備會 優(yōu)先讀取該采集I幀進行發(fā)送,以保證視頻數(shù)據(jù)的實時性,并盡可能使用戶能夠看到內(nèi)容有 變化的視頻畫面,不會遺漏任何重要視頻畫面。此外,由于該采集I幀之后的P幀是根據(jù)該采 集I幀(或者該采集I幀之后的P幀)得到的,并且也是最新存儲到臨時緩存空間中的,因此, 該采集I幀之后的P幀沒有過期,可以將其保留在臨時緩存空間中,當網(wǎng)絡(luò)不擁堵,臨時緩存 空間中還沒有新的采集I幀存儲進來時,就可以選取保留下來的P幀進行發(fā)送。而該采集I幀 之前的所有P幀已經(jīng)過期,可以將其丟棄,以減輕網(wǎng)絡(luò)擁堵,如圖4所示,為臨時緩存空間中 只存在一個采集I幀的示意圖。
[0052] 情況二、臨時緩存空間中不存在采集I幀:
[0053] 在前端設(shè)備需要從臨時緩存空間中選取數(shù)據(jù)幀時,如果臨時緩存空間中不存在采 集I幀,則將最早存儲到臨時緩存空間中的P幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將其他P 幀保留在臨時緩存空間中,并保持參考I幀不變,以確保參考I幀一直是正要發(fā)送或者已經(jīng) 發(fā)送的采集I幀。
[0054]其中,由于P幀是根據(jù)前一個數(shù)據(jù)幀(可能是采集I幀,也可能是P幀)得到的,因此 前端設(shè)備需要讀取最早存儲到臨時緩存空間中的P幀(即在臨時緩存空間中排在最前面的P 幀)進行發(fā)送,以避免終端設(shè)備出現(xiàn)視頻畫面花屏的問題。又由于臨時緩存空間中只存在P 幀,不存在采集I幀,表示網(wǎng)絡(luò)環(huán)境漸漸變好,數(shù)據(jù)幀的發(fā)送速度越來越快,前端設(shè)備采集的 視頻數(shù)據(jù)編碼之后的數(shù)據(jù)幀存儲到臨時緩存空間之后,很快就能被讀取并發(fā)送出去,因此, 可以將其他P幀保留在臨時緩存空間中,以供后續(xù)讀取發(fā)送。如圖5所示,為臨時緩存空間中 不存在采集I幀的示意圖。
[0055] 情況三、臨時緩存空間中只存在一個數(shù)據(jù)幀(采集I幀或P幀):
[0056] 在前端設(shè)備需要從臨時緩存空間中選取數(shù)據(jù)幀時,如果臨時緩存空間中只存在一 個數(shù)據(jù)幀(采集I幀或P幀),則表示網(wǎng)絡(luò)環(huán)境已經(jīng)變好,數(shù)據(jù)幀的發(fā)送速度與存儲數(shù)據(jù)幀到 臨時緩存空間中的速度保持同步,此時,前端設(shè)備可以釋放臨時緩存空間,只利用發(fā)送緩存 隊列發(fā)送數(shù)據(jù)幀。
[0057]由上述實施例所述,在網(wǎng)絡(luò)擁堵時,前端設(shè)備首先獲取參考I幀,然后針對每個數(shù) 據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值,并將所述差值與所述采集I 幀存儲在預(yù)先申請的臨時緩存空間中,在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果 所述臨時緩存空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從臨時緩存空間 中選擇一個采集I幀,并將該已選擇的采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將臨時 緩存空間中的其它采集I幀丟棄。
[0058]基于上述實現(xiàn)方式,在網(wǎng)絡(luò)擁堵時,由于前端設(shè)備是通過將每個數(shù)據(jù)幀組中的采 集I幀的差值存儲在預(yù)先申請的臨時緩存空間中,所述差值用于表示所述采集I幀與參考I 幀的差異,差值越大表不所述米集I幀相對參考I幀的差異越大,也就是視頻畫面內(nèi)容差異 越大,所述采集I幀越重要。因此,在選取數(shù)據(jù)幀進行發(fā)送時,前端設(shè)備可以利用每個采集I 幀對應(yīng)的差值,選取一個采集I幀進行發(fā)送,以確保終端設(shè)備播放的視頻畫面的實時性,并 盡可能使用戶能夠看到內(nèi)容有變化的視頻畫面,不會遺漏任何重要視頻畫面。前端設(shè)備還 會將其它的采集I幀丟棄,在確保終端設(shè)備播放的視頻畫面的實時性,不遺漏任何重要視頻 畫面的前提下,實現(xiàn)減輕網(wǎng)絡(luò)擁堵的目的。因此,前端設(shè)備通過有選擇的發(fā)送一個采集I幀, 并將臨時緩存空間中的其它采集I幀丟棄,這樣,可以有選擇的丟棄采集I幀,并且丟棄的采 集I幀對于終端設(shè)備的視頻畫面影響不大。而現(xiàn)有技術(shù)中,是發(fā)送緩存隊列只要一溢出,就 將所有溢出的采集I幀丟棄,這樣,在網(wǎng)絡(luò)擁堵時,前端設(shè)備丟棄的采集I幀是任意的,沒有 選擇的,因此,丟棄的采集I幀可能是比較重要的,對于終端設(shè)備的視頻畫面影響比較大,而 發(fā)送到終端設(shè)備的采集I幀的視頻畫面可能與之前的視頻畫面沒有任何變化。
[0059] 與前述視頻數(shù)據(jù)的發(fā)送方法的實施例相對應(yīng),本申請還提供了視頻數(shù)據(jù)的發(fā)送裝 置的實施例。
[0060] 本申請視頻數(shù)據(jù)的發(fā)送裝置的實施例可以應(yīng)用在前端設(shè)備上。裝置實施例可以通 過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯 意義上的裝置,是通過其所在設(shè)備的處理器將非易失性存儲器中對應(yīng)的計算機程序指令讀 取到內(nèi)存中運行形成的。從硬件層面而言,如圖6所示,為本申請視頻數(shù)據(jù)的發(fā)送裝置所在 設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖6所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲器之 外,實施例中裝置所在的設(shè)備通常根據(jù)該設(shè)備的實際功能,還可以包括其他硬件,對此不再 贅述。
[0061] 參見圖7所示,為本申請根據(jù)一示例性實施例示出的一種視頻數(shù)據(jù)的發(fā)送裝置的 實施例結(jié)構(gòu)圖,該實施例應(yīng)用于前端設(shè)備上,所述視頻數(shù)據(jù)由若干個數(shù)據(jù)幀組組成,所述數(shù) 據(jù)幀組包括采集I幀,所述裝置包括:獲取單元710、差值計算單元720、存儲單元730、選擇處 理單元740。
[0062] 其中,所述獲取單元710,用于獲取參考I幀;
[0063] 所述差值計算單元720,用于針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀 組中的采集I幀的差值;
[0064] 所述存儲單元730,用于將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空 間中;
[0065] 所述選擇處理單元740,用于在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所 述臨時緩存空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空 間中選擇一個采集I幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將所述臨 時緩存空間中的其它采集I幀丟棄。
[0066] 在一個可選的實現(xiàn)方式中,所述選擇處理單元740,具體用于利用每個采集I幀對 應(yīng)的差值,確定差值最大的采集I幀,并將所述差值最大的采集I幀讀取到發(fā)送緩存隊列中 進行發(fā)送,并將所述臨時緩存空間中所述差值最大的采集I幀之外的其它采集I幀丟棄。
[0067] 在另一個可選的實現(xiàn)方式中,針對每個數(shù)據(jù)幀組,所述數(shù)據(jù)幀組還包括P幀,所述 存儲單元730,還用于在將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中時, 將所述P幀存儲到所述臨時緩存空間中;
[0068]所述選擇處理單元740,還用于若所述差值最大的采集I幀不是所述臨時緩存空間 中的最新采集I幀,則將所述臨時緩存空間中的所有P幀丟棄;其中,所述最新采集I幀指的 是最后存儲到所述臨時緩存空間中的采集I幀;若所述差值最大的采集I幀是所述臨時緩存 空間中的最新采集I幀,則將所述差值最大的采集I幀之前的所有P幀丟棄,并將所述差值最 大的采集I幀之后的P幀保留在所述臨時緩存空間中;
[0069] 所述獲取單元710,還用于將所述差值最大的采集I幀作為新的參考I幀。
[0070] 在另一個可選的實現(xiàn)方式中,針對每個數(shù)據(jù)幀組,所述數(shù)據(jù)幀組還包括P幀,所述 存儲單元730,還用于在將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中時, 將所述P幀存儲到所述臨時緩存空間中;
[0071] 所述選擇處理單元740,還用于在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果 所述臨時緩存空間中只存在一個采集I幀,則將所述采集I幀讀取到發(fā)送緩存隊列中進行發(fā) 送,并將所述采集I幀之前的P幀丟棄,并將所述采集I幀之后的P幀保留在所述臨時緩存空 間中;所述獲取單元,還用于將所述采集I幀作為新的參考I幀;
[0072] 或者,所述選擇處理單元740,還用于如果所述臨時緩存空間中不存在采集I幀,則 將最早存儲到所述臨時緩存空間中的P幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將其他P幀保 留在所述臨時緩存空間中,并保持參考I幀不變。
[0073] 在另一個可選的實現(xiàn)方式中,所述裝置還包括(圖7中未示出):
[0074] 申請單元,用于在所述獲取單元710獲取參考I幀之前,在發(fā)送緩存隊列中需要發(fā) 送的所有數(shù)據(jù)幀的大小超過預(yù)設(shè)閾值時,申請預(yù)設(shè)大小的臨時緩存空間;其中,所述發(fā)送緩 存隊列用于存儲需要發(fā)送的數(shù)據(jù)幀,在所述發(fā)送緩存隊列中的數(shù)據(jù)幀發(fā)送完之后,從所述 臨時緩存空間中選取數(shù)據(jù)幀,并將選取的數(shù)據(jù)幀存儲到發(fā)送緩存隊列中進行發(fā)送。
[0075] 上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的 實現(xiàn)過程,在此不再贅述。
[0076] 對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實 施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件 說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以 不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的 需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付 出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0077] 由上述實施例所述,在網(wǎng)絡(luò)擁堵時,前端設(shè)備首先獲取參考I幀,然后針對每個數(shù) 據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值,并將所述差值與所述采集I 幀存儲在預(yù)先申請的臨時緩存空間中,在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果 所述臨時緩存空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從臨時緩存空間 中選擇一個采集I幀,并將該已選擇的采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將臨時 緩存空間中的其它采集I幀丟棄。
[0078] 基于上述實現(xiàn)方式,在網(wǎng)絡(luò)擁堵時,由于前端設(shè)備是通過將每個數(shù)據(jù)幀組中的采 集I幀的差值存儲在預(yù)先申請的臨時緩存空間中,所述差值用于表示所述采集I幀與參考I 幀的差異,差值越大表不所述米集I幀相對參考I幀的差異越大,也就是視頻畫面內(nèi)容差異 越大,所述采集I幀越重要。因此,在選取數(shù)據(jù)幀進行發(fā)送時,前端設(shè)備可以利用每個采集I 幀對應(yīng)的差值,選取一個采集I幀進行發(fā)送,以確保終端設(shè)備播放的視頻畫面的實時性,并 盡可能使用戶能夠看到內(nèi)容有變化的視頻畫面,不會遺漏任何重要視頻畫面。前端設(shè)備還 會將其它的采集I幀丟棄,在確保終端設(shè)備播放的視頻畫面的實時性,不遺漏任何重要視頻 畫面的前提下,實現(xiàn)減輕網(wǎng)絡(luò)擁堵的目的。因此,前端設(shè)備通過有選擇的發(fā)送一個采集I幀, 并將臨時緩存空間中的其它采集I幀丟棄,這樣,可以有選擇的丟棄采集I幀,并且丟棄的采 集I幀對于終端設(shè)備的視頻畫面影響不大。而現(xiàn)有技術(shù)中,是發(fā)送緩存隊列只要一溢出,就 將所有溢出的采集I幀丟棄,這樣,在網(wǎng)絡(luò)擁堵時,前端設(shè)備丟棄的采集I幀是任意的,沒有 選擇的,因此,丟棄的采集I幀可能是比較重要的,對于終端設(shè)備的視頻畫面影響比較大,而 發(fā)送到終端設(shè)備的采集I幀的視頻畫面可能與之前的視頻畫面沒有任何變化。
[0079] 以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精 神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本申請保護的范圍之內(nèi)。
【主權(quán)項】
1. 一種視頻數(shù)據(jù)的發(fā)送方法,其特征在于,所述方法應(yīng)用于前端設(shè)備上,所述視頻數(shù)據(jù) 由若干個數(shù)據(jù)幀組組成,所述數(shù)據(jù)幀組包括采集I幀,所述方法包括: 獲取參考I幀; 針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I幀的差值,并將所述 差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中; 在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨時緩存空間中存在多個采集 I幀,則利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空間中選擇一個采集I幀,讀取該已 選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將所述臨時緩存空間中的其它采集I幀丟 棄。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用每個采集I幀對應(yīng)的差值,從所述 臨時緩存空間中選擇一個采集I幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送, 并將所述臨時緩存空間中的其它采集I幀丟棄,包括: 利用每個采集I幀對應(yīng)的差值,確定差值最大的采集I幀,并將所述差值最大的采集I幀 讀取到發(fā)送緩存隊列中進行發(fā)送,并將所述臨時緩存空間中所述差值最大的采集I幀之外 的其它采集I幀丟棄。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于, 針對每個數(shù)據(jù)幀組,所述數(shù)據(jù)幀組還包括P幀,在將所述差值與所述采集I幀存儲在預(yù) 先申請的臨時緩存空間中時,將所述P幀存儲到所述臨時緩存空間中; 若所述差值最大的采集I幀不是所述臨時緩存空間中的最新采集I幀,則將所述臨時緩 存空間中的所有P幀丟棄;其中,所述最新采集I幀指的是最后存儲到所述臨時緩存空間中 的米集I幀; 若所述差值最大的采集I幀是所述臨時緩存空間中的最新采集I幀,則將所述差值最大 的采集I幀之前的所有P幀丟棄,并將所述差值最大的采集I幀之后的P幀保留在所述臨時緩 存空間中; 將所述差值最大的采集I幀作為新的參考I幀。4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 針對每個數(shù)據(jù)幀組,所述數(shù)據(jù)幀組還包括P幀,在將所述差值與所述采集I幀存儲在預(yù) 先申請的臨時緩存空間時,將所述P幀存儲到所述臨時緩存空間中; 在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨時緩存空間中只存在一個采 集I幀,則將所述采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將所述采集I幀之前的P幀丟 棄,并將所述采集I幀之后的P幀保留在所述臨時緩存空間中,并將所述采集I幀作為新的參 考I幀;或者,如果所述臨時緩存空間中不存在采集I幀,則將最早存儲到所述臨時緩存空間 中的P幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將其他P幀保留在所述臨時緩存空間中,并保 持參考I幀不變。5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取參考I幀之前,還包括: 在發(fā)送緩存隊列中需要發(fā)送的所有數(shù)據(jù)幀的大小超過預(yù)設(shè)閾值時,申請預(yù)設(shè)大小的臨 時緩存空間;其中,所述發(fā)送緩存隊列用于存儲需要發(fā)送的數(shù)據(jù)幀,在所述發(fā)送緩存隊列中 的數(shù)據(jù)幀發(fā)送完之后,從所述臨時緩存空間中選取數(shù)據(jù)幀,并將選取的數(shù)據(jù)幀存儲到發(fā)送 緩存隊列中進行發(fā)送。6. -種視頻數(shù)據(jù)的發(fā)送裝置,其特征在于,所述裝置應(yīng)用于前端設(shè)備上,所述視頻數(shù)據(jù) 由若干個數(shù)據(jù)幀組組成,所述數(shù)據(jù)幀組包括采集I幀,所述裝置包括: 獲取單元,用于獲取參考I幀; 差值計算單元,用于針對每個數(shù)據(jù)幀組,計算所述參考I幀與所述數(shù)據(jù)幀組中的采集I 幀的差值; 存儲單元,用于將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中; 選擇處理單元,用于在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨時緩存 空間中存在多個采集I幀,則利用每個采集I幀對應(yīng)的差值,從所述臨時緩存空間中選擇一 個采集I幀,讀取該已選擇的采集I幀到發(fā)送緩存隊列中進行發(fā)送,并將所述臨時緩存空間 中的其它采集I幀丟棄。7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述選擇處理單元,具體用于利用每個采 集I幀對應(yīng)的差值,確定差值最大的采集I幀,并將所述差值最大的采集I幀讀取到發(fā)送緩存 隊列中進行發(fā)送,并將所述臨時緩存空間中所述差值最大的采集I幀之外的其它采集I幀丟 棄。8. 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,針對每個數(shù)據(jù)幀組,所述數(shù)據(jù)幀組還包 括P幀,所述存儲單元,還用于在將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空 間中時,將所述P幀存儲到所述臨時緩存空間中; 所述選擇處理單元,還用于若所述差值最大的采集I幀不是所述臨時緩存空間中的最 新采集I幀,則將所述臨時緩存空間中的所有P幀丟棄;其中,所述最新采集I幀指的是最后 存儲到所述臨時緩存空間中的采集I幀;若所述差值最大的采集I幀是所述臨時緩存空間中 的最新采集I幀,則將所述差值最大的采集I幀之前的所有P幀丟棄,并將所述差值最大的采 集I幀之后的P幀保留在所述臨時緩存空間中; 所述獲取單元,還用于將所述差值最大的采集I幀作為新的參考I幀。9. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,針對每個數(shù)據(jù)幀組,所述數(shù)據(jù)幀組還包括P 幀,所述存儲單元,還用于在將所述差值與所述采集I幀存儲在預(yù)先申請的臨時緩存空間中 時,將所述P幀存儲到所述臨時緩存空間中; 所述選擇處理單元,還用于在需要從所述臨時緩存空間中選取數(shù)據(jù)幀時,如果所述臨 時緩存空間中只存在一個采集I幀,則將所述采集I幀讀取到發(fā)送緩存隊列中進行發(fā)送,并 將所述采集I幀之前的P幀丟棄,并將所述采集I幀之后的P幀保留在所述臨時緩存空間中; 所述獲取單元,還用于將所述采集I幀作為新的參考I幀; 或者,所述選擇處理單元,還用于如果所述臨時緩存空間中不存在采集I幀,則將最早 存儲到所述臨時緩存空間中的P幀讀取到發(fā)送緩存隊列中進行發(fā)送,并將其他P幀保留在所 述臨時緩存空間中,并保持參考I幀不變。10. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 申請單元,用于在所述獲取單元獲取參考I幀之前,在發(fā)送緩存隊列中需要發(fā)送的所有 數(shù)據(jù)幀的大小超過預(yù)設(shè)閾值時,申請預(yù)設(shè)大小的臨時緩存空間;其中,所述發(fā)送緩存隊列用 于存儲需要發(fā)送的數(shù)據(jù)幀,在所述發(fā)送緩存隊列中的數(shù)據(jù)幀發(fā)送完之后,從所述臨時緩存 空間中選取數(shù)據(jù)幀,并將選取的數(shù)據(jù)幀存儲到發(fā)送緩存隊列中進行發(fā)送。
【文檔編號】H04N7/18GK105898358SQ201610219046
【公開日】2016年8月24日
【申請日】2016年4月8日
【發(fā)明人】周迪, 任俊峰, 余劍聲
【申請人】浙江宇視科技有限公司