本發明涉及視頻處理技術領域,特別是涉及一種遠程視頻顯示方法及系統。
背景技術:
隨著通信技術的飛速發展,遠程視頻會議、本地傳屏演示等視頻處理技術已得到廣泛應用,如商顯整機使用無線傳屏模塊演示個人PC的PPT報告,給人們的生活和工作帶來很大的便捷。
現有技術中遠程視頻顯示方案是通過設定固定的參數,以固定的間隔對接收到的遠程視頻數據進行解碼,再對解碼的數據進行顯示,受限于系統API,送碼和解碼是串行的,每次送碼后都嘗試解碼,每次解碼都在固定的時間等待解碼結果。這就導致現有方案的解碼效率較低,當遠程視頻傳輸不穩定時(如因網絡不流暢引起的視頻數據時多時少),該方案依舊使用固定的間隔解碼,會導致兩種不利的情況:
第一種情況,數據量大時,解碼器繁忙,位于后面的數據等待到解碼機會的時間較長,從本地接收到數據到最終顯示到屏幕的時間因此也會變長,結果就是畫面顯示延遲較大;
第二種情況,數據量小時,由于每次解碼以固定的時間等待解碼結果,不能保證每次都能在該時間內等待到解碼結果,當這種情況發生時,由于送碼和解碼是串行的,必須等待下一次送碼后才能嘗試獲取解碼結果,也就說下一次嘗試獲取解碼結果時,獲取到的結果其實是上一次送碼的結果,這樣也會導致一個數據幀到最終解碼顯示的時間比較長,最終導致畫面顯示出現延遲。
技術實現要素:
本發明旨在至少解決現有技術中存在的技術問題之一。為此,本發明的一個目的在于提出一種遠程視頻顯示方法,解決數據量大或數據量小時出現畫面延遲的問題。
根據本發明實施例的遠程視頻顯示方法,包括:
當根據已送進解碼器的數據幀的數量判斷到所述解碼器處于繁忙狀態時,拋棄部分數據幀,并對剩余的數據幀進行解碼;
在預設的等待時間后,檢查是否成功獲取到解碼結果;
若否,則延長等待時間,并返回所述檢查是否成功獲取解碼結果的步驟,直至成功獲取到解碼結果為止。
根據本發明實施例的視頻顯示方法,通過判斷當前解碼器的解碼狀態對數據幀進行動態調整,在解碼器繁忙時適時減少解碼數據量,減輕解碼器負擔,及時解碼最新數據,此外,數據量較少時,加大等待解碼結果的時間,輪詢解碼結果,能夠保證在下一輪送碼前能解碼出當前數據幀,畫面延遲小,解碼效率較高。
另外,根據本發明上述實施例的遠程視頻顯示方法,還可以具有如下附加的技術特征:
進一步地,在本發明的一個實施例中,所述根據已送進解碼器的數據幀的數量判斷到所述解碼器處于繁忙狀態的步驟具體包括:
根據已送進解碼器的數據幀自帶的時間戳制作列表,所述列表中的數據幀和時間戳一一對應;
將所述列表中數據幀的數量與所述解碼器中預設的第一數據幀數量閾值進行對比;
若所述列表中數據幀的數量大于等于所述第一數據幀數量閾值,則判斷所述解碼器處于繁忙狀態。
進一步地,在本發明的一個實施例中,所述在預設的等待時間后檢查是否成功獲取到解碼結果的步驟之后,所述方法還包括:
若是,則根據所述解碼器的解碼結果更新所述列表;
檢查更新后的列表中是否還有未解碼的數據幀;
若是,則嘗試獲取該未解碼的數據幀的解碼結果。
進一步地,在本發明的一個實施例中,所述延長等待時間的步驟具體包括:
根據尚未解碼成功的數據幀的數量判斷是延長等待時間還是開始下一輪的送碼;
若所述尚未解碼成功的數據幀的數量大于等于所述解碼器中預設的第二數據幀數量閾值,則將延長等待時間。
進一步地,在本發明的一個實施例中,所述根據所述解碼器的解碼結果更新所述列表的步驟具體包括:
將當前已解碼的數據幀從所述列表中刪除,同時刪除所述列表中所有比所述當前已解碼的數據幀對應的時間戳早的數據幀。
本發明的另一個目的在于提出一種遠程視頻顯示系統,解決數據量大或數據量小時出現畫面延遲的問題。
根據本發明實施例的遠程視頻顯示系統,包括:
判斷模塊,用于根據已送進解碼器的數據幀的數量判斷所述解碼器的繁忙狀態;
拋棄模塊,用于在所述判斷模塊判斷到所述解碼器處于繁忙狀態時,對部分數據幀進行拋棄處理,所述拋棄模塊拋棄部分數據幀后,所述解碼器對剩余的數據幀進行解碼;
第一檢查模塊,用于在預設的等待時間后,檢查是否成功獲取到解碼結果;
延長等待模塊,用于在所述第一檢查模塊在預設的等待時間后檢查到未成功獲取到解碼結果時,延長所述第一檢查模塊的等待時間;
所述延長等待模塊延長等待時間后,所述第一檢查模塊繼續檢查是否成功獲取解碼結果,直至成功獲取到解碼結果為止。
另外,根據本發明上述實施例的遠程視頻顯示系統,還可以具有如下附加的技術特征:
進一步地,在本發明的一個實施例中,所述判斷模塊包括制作模塊、對比模塊和第一判斷子模塊;
所述制作模塊用于根據已送進解碼器的數據幀自帶的時間戳制作列表,所述列表中的數據幀和時間戳一一對應;
所述對比模塊用于將所述列表中數據幀的數量與所述解碼器中預設的第一數據幀數量閾值進行對比;
所述第一判斷子模塊用于在所述對比模塊對比到所述列表中數據幀的數量大于等于所述第一數據幀數量閾值時,判斷所述解碼器處于繁忙狀態。
進一步地,在本發明的一個實施例中,所述系統還包括:
更新模塊,用于在所述第一檢查模塊在預設的等待時間后檢查到成功獲取到解碼結果時,根據所述解碼器的解碼結果更新所述列表;
第二檢查模塊,用于在所述更新模塊更新后的列表中檢查是否還有未解碼的數據幀;
嘗試獲取模塊,用于在所述第二檢查模塊檢查到更新后的列表中還有未解碼的數據幀時,嘗試獲取該未解碼的數據幀的解碼結果。
進一步地,在本發明的一個實施例中,所述延長等待模塊包括第二判斷子模塊和延長子模塊;
所述第二判斷子模塊用于在所述第一檢查模塊在預設的等待時間后檢查到未成功獲取到解碼結果時,根據尚未解碼成功的數據幀的數量判斷是延長等待時間還是開始下一輪的送碼;
所述延長子模塊用于在所述判斷子模塊判斷到所述尚未解碼成功的數據幀的數量大于等于所述解碼器中預設的第二數據幀數量閾值時,延長等待時間。
進一步地,在本發明的一個實施例中,所述更新模塊包括刪除子模塊;
所述刪除子模塊用于將當前已解碼的數據幀從所述列表中刪除,同時刪除所述列表中所有比所述當前已解碼的數據幀對應的時間戳早的數據幀。
本發明的附加方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發明的實踐了解到。
附圖說明
本發明的上述和/或附加的方面和優點從結合下面附圖對實施例的描述中將變得明顯和容易理解,其中:
圖1是根據本發明一實施例的視頻顯示方法的流程圖;
圖2是根據本發明另一實施例的視頻顯示方法的流程圖;
圖3是根據本發明一實施例的視頻顯示系統的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
請參閱圖1,本發明一實施例提出的視頻顯示方法,至少包括以下步驟:
S101,當根據已送進解碼器的數據幀的數量判斷到所述解碼器處于繁忙狀態時,拋棄部分數據幀,并將剩余的數據幀進行解碼;
其中,通過判斷當前解碼器的解碼狀態對數據幀進行動態調整,在解碼器繁忙時適時減少解碼數據量,減輕解碼器負擔,及時解碼最新數據。
S102,在預設的等待時間后,檢查是否成功獲取到解碼結果;
即在固定的時間段獲取解碼結果,檢查是否能夠成功獲取到解碼結果。
S103,若否,則延長等待時間,并返回所述檢查是否成功獲取解碼結果的步驟,直至成功獲取到解碼結果為止。
其中,步驟S103能夠保證在數據量較少、且在固定的時間無法獲取到解碼結果時,通過對尚未解碼成功的數據幀輪詢解碼結果,加大等待解碼結果的時間,保證在下一輪送碼前能解碼出當前數據幀,畫面延遲小,解碼效率較高。
根據本發明實施例的視頻顯示方法,能夠保證在不管數據量大時還是在數據量小時,都能確保解碼效率,減少畫面延遲。
請參閱圖2,本發明另一實施例提出的視頻顯示方法,至少包括以下步驟:
S201,根據已送進解碼器的數據幀的數量判斷解碼器是否處于繁忙狀態;
具體實施時,所述根據已送進解碼器的數據幀的數量判斷解碼器是否處于繁忙狀態的步驟具體包括:
根據已送進解碼器的遠程視頻中數據幀自帶的時間戳制作列表,所述列表中的數據幀和時間戳一一對應;
本實施例中,所述時間戳具體可以為顯示時間戳(PTS,Presentation Time Stamp),即某時刻應該顯示對應數據幀的畫面,所述列表中的數據幀和時間戳一一對應指所述列表中的數據幀通過其特定的時間戳進行標示,所述列表中的數據幀只包括已送碼且未解碼的數據幀。
將所述列表中數據幀的數量與所述解碼器中預存的第一數據幀數量閾值進行對比;
具體實施例時,所述解碼器中預先設有第一數據幀數量閾值,該第一數據幀數量閾值可以根據要顯示的遠程視頻的數據幀的大小和處理難度進行設置,也可以通過大數據進行分析確定。
若所述列表中數據幀的數量大于等于所述第一數據幀數量閾值,則判斷所述解碼器處于繁忙狀態。
可以理解的,若所述列表中數據幀的數量小于所述第一數據幀數量閾值,則判斷所述解碼器處于非繁忙狀態,該非繁忙狀態可以為正常狀態,即數據量正常,不多也不少;也可以為數據量較少的狀態。
S202,若是,則拋棄部分數據幀,并對剩余的數據幀進行解碼;
其中,拋棄部分數據幀即指對該部分數據幀不再進行解碼處理,此時,被拋棄的該部分數據幀不會再保留在所述列表中,拋棄的數據幀的具體數量和種類,可以根據數據幀的總量、數據幀的重要程度、解碼器的處理能力、某一數據幀解碼的難易程度等條件進行確定,例如,若其中一個數據幀解碼難度大,或其中一個數據幀數據量大,不易解碼,又或其中一個數據幀不重要,則可以將上述幾種數據幀進行拋棄,而對其它數據幀進行解碼,以保證視頻傳輸的可靠性。
S203,若否,則直接對已送進解碼器的數據幀進行解碼;
其中,若解碼器不處于繁忙狀態,即包括正常狀態和數據量較少的狀態,此時都會直接對已送進解碼器的數據幀進行解碼。
S204,在預設的等待時間后,檢查是否成功獲取到解碼結果;
其中,步驟S202或步驟203完成后都會進行步驟S204,步驟S204可以根據現有技術,在固定的時間間隔下從所述解碼器獲取解碼結果,檢查是否能夠成功獲取到解碼結果。
S205,若是,則根據所述解碼器的解碼結果更新所述列表;
其中,步驟S205具體包括以下步驟:
若是,將當前已解碼的數據幀從所述列表中刪除,同時刪除所述列表中所有比所述當前已解碼的數據幀對應的時間戳早的數據幀。
具體實施時,若檢查到已成功獲取到所述解碼器的解碼結果,則將當前已解碼的數據幀及其對應的時間戳從所述列表中刪除,例如,當前解碼的數據幀對應的時間戳為1分50秒,此時,則將1分50秒對應的數據幀所述列表中刪除,同時,將1分50秒以前的所有時間戳對應的數據幀也從所述列表中刪除,因為1分50秒以前的時間戳對應的數據幀對遠程視頻傳輸的意義不大,不需要再對這些數據幀進行解碼,從而進一步減輕解碼器的負擔。
S206,檢查更新后的列表中是否還有未解碼的數據幀;
其中,在步驟S205之后,執行步驟S206,檢查更新后的列表中是否還有未解碼的數據幀。
S207,若是,則嘗試獲取該未解碼的數據幀的解碼結果;
可以理解的,若否,即所述列表中已經沒有未解碼的數據幀,此時流程結束。
在步驟S204,可能會執行步驟S208;
S208,若否,則延長等待時間,并返回所述檢查是否成功獲取解碼結果的步驟;
即,檢查到未成功獲取到所述解碼器的解碼結果時,延長等待解碼結果的時間,此時情形應用于現有技術中數據量小時,且又無法在固定的時間內等待到解碼結果的情況。
若檢查到未成功獲取到所述解碼器的解碼結果,則延長等待時間,延長等待時間后,在返回所述檢查是否成功獲取解碼結果的步驟,即輪詢解碼結果,直至成功獲取到解碼結果為止,保證在下一輪送碼前能解碼出當前數據幀。
其中,該步驟S208中延長等待時間的步驟具體包括以下步驟:
根據尚未解碼成功的數據幀的數量判斷是延長等待時間還是開始下一輪的送碼;
若所述尚未解碼成功的數據幀的數量大于等于所述解碼器中預設的第二數據幀數量閾值,則將延長等待時間。
其中,所述解碼器還預先預設第二數據幀數量閾值,若所述尚未解碼成功的數據幀的數量大于等于所述解碼器中預存的第二數據幀數量閾值,表明此時需要解碼的數據幀較多,需要對尚未解碼成功的數據幀繼續嘗試獲取解碼結果,從而保證能夠得出解碼結果。可以理解的,當所述尚未解碼成功的數據幀的數量小于所述解碼器中預存的第二數據幀數量閾值,且此時又接到新的數據幀時,則表明此時需要解碼的數據幀不多,因此可以優先處理新的數據幀,對新的數據幀進行送碼、解碼。
此外,在具體實施時,步驟S207中,嘗試獲取該未解碼的數據幀的解碼結果指在預設的等待時間后,檢查是否成功獲取到解碼結果,如果能夠獲取到解碼結果則結束流程,如果未能獲取到解碼結果,則也會延長等待時間,并繼續嘗試獲取該未解碼的數據幀的解碼結果。
根據本發明上述實施例的視頻顯示方法,通過判斷當前解碼器的解碼狀態對數據幀進行動態調整,在解碼器繁忙時適時減少解碼數據量,減輕解碼器負擔,及時解碼最新數據,此外,數據量較少時,加大等待解碼結果的時間,輪詢解碼結果,能夠保證在下一輪送碼前能解碼出當前數據幀,畫面延遲小,解碼效率較高。
請參閱圖3,基于同一發明構思,本發明一實施例提出的遠程視頻顯示系統,包括:
判斷模塊,用于根據已送進解碼器的數據幀的數量判斷所述解碼器的繁忙狀態;
拋棄模塊,用于在所述判斷模塊判斷到所述解碼器處于繁忙狀態時,對部分數據幀進行拋棄處理,所述拋棄模塊拋棄部分數據幀后,所述解碼器對剩余的數據幀進行解碼;
可以理解的,若所述判斷模塊判斷到所述解碼器處于非繁忙狀態時,所述解碼器直接對已送碼的數據幀進行解碼;
第一檢查模塊,用于在預設的等待時間后,檢查是否成功獲取到解碼結果;
延長等待模塊,用于在所述第一檢查模塊在預設的等待時間后檢查到未成功獲取到解碼結果時,延長所述第一檢查模塊的等待時間;
所述延長等待模塊延長等待時間后,所述第一檢查模塊繼續檢查是否成功獲取解碼結果,直至成功獲取到解碼結果為止。
本實施例中,所述判斷模塊包括制作模塊、對比模塊和第一判斷子模塊;
所述制作模塊用于根據已送進解碼器的數據幀自帶的時間戳制作列表,所述列表中的數據幀和時間戳一一對應;
所述對比模塊用于將所述列表中數據幀的數量與所述解碼器中預設的第一數據幀數量閾值進行對比;
所述第一判斷子模塊用于在所述對比模塊對比到所述列表中數據幀的數量大于等于所述第一數據幀數量閾值時,判斷所述解碼器處于繁忙狀態。
本實施例中,所述系統還包括:
更新模塊,用于在所述第一檢查模塊在預設的等待時間后檢查到成功獲取到解碼結果時,根據所述解碼器的解碼結果更新所述列表;
第二檢查模塊,用于在所述更新模塊更新后的列表中檢查是否還有未解碼的數據幀;
嘗試獲取模塊,用于在所述第二檢查模塊檢查到更新后的列表中還有未解碼的數據幀時,嘗試獲取該未解碼的數據幀的解碼結果。
本實施例中,所述延長等待模塊包括第二判斷子模塊和延長子模塊;
所述第二判斷子模塊用于在所述第一檢查模塊在預設的等待時間后檢查到未成功獲取到解碼結果時,根據尚未解碼成功的數據幀的數量判斷是延長等待時間還是開始下一輪的送碼;
所述延長子模塊用于在所述判斷子模塊判斷到所述尚未解碼成功的數據幀的數量大于等于所述解碼器中預設的第二數據幀數量閾值時,延長等待時間。
可以理解的,當所述第二判斷子模塊判斷到尚未解碼成功的數據幀的數量小于所述解碼器中預存的第二數據幀數量閾值,且此時又接到新的數據幀時,則表明此時需要解碼的數據幀不多,因此可以優先處理新的數據幀,對新的數據幀進行送碼、解碼。
本實施例中,所述更新模塊包括刪除子模塊;
所述刪除子模塊用于將當前已解碼的數據幀從所述列表中刪除,同時刪除所述列表中所有比所述當前已解碼的數據幀對應的時間戳早的數據幀。
在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認為是用于實現邏輯功能的可執行指令的定序列表,可以具體實現在任何計算機可讀介質中,以供指令執行系統、裝置或設備(如基于計算機的系統、包括處理器的系統或其他可以從指令執行系統、裝置或設備取指令并執行指令的系統)使用,或結合這些指令執行系統、裝置或設備而使用。就本說明書而言,“計算機可讀介質”可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執行系統、裝置或設備或結合這些指令執行系統、裝置或設備而使用的裝置。
計算機可讀介質的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計算機盤盒(磁裝置),隨機存取存儲器(RAM),只讀存儲器(ROM),可擦除可編輯只讀存儲器(EPROM或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(CDROM)。另外,計算機可讀介質甚至可以是可在其上打印所述程序的紙或其他合適的介質,因為可以例如通過對紙或其他介質進行光學掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程序,然后將其存儲在計算機存儲器中。
應當理解,本發明的各部分可以用硬件、軟件、固件或它們的組合來實現。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執行系統執行的軟件或固件來實現。例如,如果用硬件來實現,和在另一實施方式中一樣,可用本領域公知的下列技術中的任一項或他們的組合來實現:具有用于對數據信號實現邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現場可編程門陣列(FPGA)等。
在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
盡管已經示出和描述了本發明的實施例,本領域的普通技術人員可以理解:在不脫離本發明的原理和宗旨的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發明的范圍由權利要求及其等同物限定。