一種遠端視頻顯示方法及裝置的制造方法
【技術領域】
[0001]本發明涉及多媒體技術領域,尤其涉及一種遠端視頻顯示方法及裝置。
【背景技術】
[0002]目前Windows平臺上實現錄屏后實時發送到遠端進行播放時,通常的方案是將收到的視頻數據解碼后,將解碼后的數據中的圖片數據轉換為位圖,然后再將位圖轉換為具有特定大小和分辨率的單個不變的像素集,然后在Windows呈現基礎(WindowsPresentat1n Foundat1n,WPF)的控件中進行顯示,但是,在將大量的視頻數據進行轉換顯示時,此過程非常的消耗系統資源,占用大量的系統內存,消耗較長的時間,影響軟件的整體性能。
[0003]故急需一種遠端視頻顯示方法及裝置,能有效地降低視頻數據轉碼過程中占用的系統資源,并能快速地顯示視頻數據。
【發明內容】
[0004]本發明提供一種遠端視頻顯示方法及裝置,用以將視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據后顯示,達到有效地降低視頻數據轉碼過程中占用的系統資源,并能快速地顯示視頻數據的目的。
[0005]本發明提供一種遠端視頻顯示方法,包括:
[0006]對當前接收的一幀視頻數據進行解碼,將本次解碼后的視頻數據保存在第一緩存中;
[0007]將第一緩存中緩存的本次解碼后的視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據;
[0008]在顯示區域中顯示轉碼后的BGRA格式圖像數據;
[0009]清空第一緩存中的數據。
[0010]本發明實施例的一些有益效果可以包括:
[0011]對視頻幀數據進行解碼并將該解碼后視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據,接著在顯示區域中顯示轉碼后的BGRA格式圖像數據即可完成視頻顯示。從而達到有效地降低視頻數據轉碼過程中占用的系統資源,并能快速地顯示視頻數據的目的。
[0012]在一個實施例中,所述將第一緩存中解碼后的視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據,包括:
[0013]步驟Sll:獲取第一緩存中緩存的本次解碼后的視頻數據的視頻幀尺寸;
[0014]步驟S12:判斷本次解碼后的視頻數據的視頻幀尺寸是否與保存的視頻幀尺寸相同,是則執行步驟S14,否則將保存的視頻幀尺寸更新為本次解碼后的視頻數據的視頻幀尺寸并執行步驟S13 ;其中,第一次執行所述遠端視頻顯示方法前將視頻幀尺寸的初始值預先保存為O ;
[0015]步驟S13:根據本次解碼后的視頻數據的視頻幀尺寸設置數據塊大小,并執行步驟 S14 ;
[0016]步驟S14:創建一個圖像管理對象,并執行步驟S15 ;
[0017]步驟S15:根據保存的視頻幀尺寸及顯示區域尺寸,獲取視頻幀數據轉碼的上下文;
[0018]步驟S16:根據所設置的數據塊大小設置第二緩存大小,并將第一緩存中緩存的本次解碼后的視頻數據拷貝到第二緩存中;
[0019]步驟S17:根據本次獲取的視頻幀數據轉碼的上下文,將第二緩存中的視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據。
[0020]在一個實施例中,所述在顯示區域中顯示轉碼后的BGRA格式圖像數據,包括:
[0021]將轉碼后的BGRA格式圖像數據寫入到本次創建的圖像管理對象中;
[0022]更新所述顯示區域;
[0023]清空第二緩存中的數據。
[0024]在一個實施例中,所述視頻幀數據轉碼的上下文中轉碼算法為SWS_FAST_BILINEAR 算法。
[0025]在該實施例中,由于SWS_FAST_BILINEAR算法在處理視頻圖像縮放時,具有較好的轉碼效果,在保證不影響畫面的情況下,轉碼效率也非常高,從而為快速地顯示視頻數據提供了有力的支撐。
[0026]在一個實施例中,所述根據本次獲取的視頻幀數據轉碼的上下文,將第二緩存中的視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據,包括:根據本次獲取的視頻幀數據轉碼的上下文,利用ffmpeg中swscale將第二緩存中的視頻數據轉換為尺寸為顯示區域尺寸的BGRA格式圖像數據。
[0027]在該實施例中,利用ffmpeg中swscale將視頻數據直接轉換為尺寸為顯示區域尺寸的BGRA格式圖像數據,然后在顯示控件中顯示該BGRA格式圖像數據即可完成視頻的顯示工作。從而達到有效地降低視頻數據轉碼過程中占用的系統資源,并能快速地顯示視頻數據的目的。
[0028]在一個實施例中,步驟S13中所述根據本次解碼后的視頻數據的視頻幀尺寸設置數據塊大小,包括:設置數據塊大小為本次解碼后的視頻數據的視頻幀尺寸的寬與高的乘積的3倍。
[0029]在該實施例中,由于RGB24利用24位來表示一個像素,RGB分量都用8位表示,取值范圍為0-255,保證圖像畫面優質顯示效果的同時,能極大的節約存儲空間。由于采用RGB24,轉碼后的數據大小應不大于解碼后的視頻數據的視頻幀尺寸的寬與高的乘積的3倍。
[0030]在一個實施例中,所述當前接收的一幀視頻數據為H264編碼視頻數據。
[0031]在該實施例中,H264編碼的視頻數據具有低碼率、高質量的圖像、容錯能力強、網絡適應性強等特點,被廣泛的應用于視頻數據編碼。由于可以對H264編碼視頻數據進行快速顯示,從而能達到具有適用性廣的特點。
[0032]一種遠端視頻顯示裝置,包括:解碼模塊、第一緩存、轉碼模塊、顯示模塊和緩存清空模塊;
[0033]所述解碼模塊,用于對當前接收的一幀視頻數據進行解碼,將本次解碼后的視頻數據保存在第一緩存中;
[0034]所述轉碼模塊,用于將第一緩存中緩存的本次解碼后的視頻數據轉碼為尺寸為顯示區域尺寸的BGRA格式圖像數據并發送給顯示模塊;
[0035]所述顯示模塊,用于在顯示區域中顯示收到的轉碼后的BGRA格式圖像數據,并在顯示完畢后向緩存清空模塊發送緩存清空指令;
[0036]所述緩存清空模塊,用于根據所述緩存清空指令清空第一緩存中的數據。
[0037]在一個實施例中,所述轉碼模塊包括:視頻幀尺寸獲取模塊,判斷模塊,數據塊設置模塊,圖像管理對象創建模塊,上下文獲取模塊,數據拷貝模塊,視頻數據轉碼模塊,第二緩存;
[0038]所述視頻幀尺寸獲取模塊,用于獲取第一緩存中緩存的本次解碼后的視頻數據的視頻幀尺寸,并將獲取的本次解碼后的視頻數據的視頻幀尺寸發送給所述判斷模塊和所述上下文獲取模塊;
[0039]所述判斷模塊,用于判斷本次解碼后的視頻數據的視頻幀尺寸是否與自身保存的視頻幀尺寸相同,當不相同時,將自身保存的視頻幀尺寸更新為所述本次解碼后的視頻數據的視頻幀尺寸,并向數據塊設置模塊發送本次解碼后的視頻數據的視頻幀尺寸以及更新數據塊大小指令;當相同時,向所述圖像管理對象創建模塊發送創建圖像管理對象的指令;其中,所述判斷模塊保存的視頻幀尺寸的初始值為O ;
[0040]所述數據塊設置模塊,用于在接收到所述更新數據塊大小指令后,根據所述判斷模塊發來的本次解碼后的視頻數據的視頻幀尺寸設置數據塊大小;向所述數據拷貝模塊發送所設置的數據塊大