本發明專利技術提供了多進程解碼播放方法和裝置,應用于客戶端,客戶端上設置有主進程和多個子進程,子進程包括Libvlc播放器,包括:獲取用戶的選取模式;根據選取模式在主進程上創建主窗口;在主窗口上生成多個子窗口,其中,每個子進程對應相應的子窗口;將每個子窗口上對應的視頻流進行繪制,得到多個繪制后的視頻流;通過Libvlc播放器將多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流;顯示多個解碼后的視頻流;采用多進程播放器進行播放,可以滿足多路節目同時播放和多個播放器長時間播放,提高了獨立性和穩定性。提高了獨立性和穩定性。提高了獨立性和穩定性。
【技術實現步驟摘要】
多進程解碼播放方法和裝置
[0001]本專利技術涉及視頻處理
,尤其是涉及多進程解碼播放方法和裝置。
技術介紹
[0002]目前,視頻播放采用單進程播放器進行播放,單進程播放器無法滿足多路節目同時播放;當多個單進程播放器播放時間較長時,會存在崩潰、停播、卡頓或跳轉到其他幀界面等問題。
[0003]另外,隨著業務邏輯的復雜化和需求的增加,單進程播放器無法滿足產品的迭代需求。
技術實現思路
[0004]有鑒于此,本專利技術的目的在于提供多進程解碼播放方法和裝置,采用多進程播放器進行播放,可以滿足多路節目同時播放和多個播放器長時間播放,提高了獨立性和穩定性。
[0005]第一方面,本專利技術實施例提供了多進程解碼播放方法,應用于客戶端,所述客戶端上設置有主進程和多個子進程,所述子進程包括Libvlc播放器,所述方法包括:
[0006]獲取用戶的選取模式;
[0007]根據所述選取模式在所述主進程上創建主窗口;
[0008]在所述主窗口上生成多個子窗口,其中,每個所述子進程對應相應的所述子窗口;
[0009]將每個所述子窗口上對應的視頻流進行繪制,得到多個繪制后的視頻流;
[0010]通過所述Libvlc播放器將所述多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流;
[0011]顯示所述多個解碼后的視頻流。
[0012]進一步的,所述通過所述Libvlc播放器將所述多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流,包括:
[0013]將所述多個繪制后的視頻流輸入給訪問層,并通過訪問層發送給流層;
[0014]將所述多個繪制后的視頻流通過所述流層發送給解復用層;
[0015]所述解復用層對所述多個繪制后的視頻流進行解復用,得到多個解復用的視頻流;
[0016]將所述多個解復用的視頻流發送給第一輸出層,并通過第一輸出層發送給解碼層;
[0017]所述解碼層對所述多個解復用的視頻流進行解碼,得到所述多個解碼后的視頻流。
[0018]進一步的,所述方法還包括:
[0019]所述主進程通過DBUS將播放信息發送給所述子進程;
[0020]或者,
[0021]所述子進程通過所述DBUS將播放結果信息發送給所述主進程。
[0022]進一步的,所述方法還包括:
[0023]當所述主窗口上生成多個所述子窗口時,根據所述選取模式調整每個所述子窗口的大小和顯示位置。
[0024]進一步的,所述方法還包括:
[0025]當所述主窗口在界面上發生變化時,根據變化后的主窗口調整每個所述子窗口的大小和所述顯示位置。
[0026]第二方面,本專利技術實施例提供了多進程解碼播放裝置,應用于客戶端,所述客戶端上設置有主進程和多個子進程,所述子進程包括Libvlc播放器,所述裝置包括:
[0027]播放器組管理子模塊,用于獲取用戶的選取模式;根據所述選取模式在所述主進程上創建主窗口;在所述主窗口上生成多個子窗口,其中,每個所述子進程對應相應的所述子窗口;
[0028]播放器視頻繪制子模塊,用于將每個所述子窗口上對應的視頻流進行繪制,得到多個繪制后的視頻流;
[0029]所述Libvlc播放器,用于將所述多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流;顯示所述多個解碼后的視頻流。
[0030]進一步的,所述Libvlc播放器具體用于:
[0031]將所述多個繪制后的視頻流輸入給訪問層,并通過訪問層發送給流層;
[0032]將所述多個繪制后的視頻流通過所述流層發送給解復用層;
[0033]所述解復用層對所述多個繪制后的視頻流進行解復用,得到多個解復用的視頻流;
[0034]將所述多個解復用的視頻流發送給第一輸出層,并通過第一輸出層發送給解碼層;
[0035]所述解碼層對所述多個解復用的視頻流進行解碼,得到所述多個解碼后的視頻流。
[0036]進一步的,所述裝置還包括調整模塊;
[0037]所述調整模塊,用于當所述主窗口上生成多個所述子窗口時,根據所述選取模式調整每個所述子窗口的大小和顯示位置。
[0038]第三方面,本專利技術實施例提供了電子設備,包括存儲器、處理器,所述存儲器上存儲有可在所述處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如上所述的方法。
[0039]第四方面,本專利技術實施例提供了具有處理器可執行的非易失的程序代碼的計算機可讀介質,所述程序代碼使所述處理器執行如上所述的方法。
[0040]本專利技術實施例提供了多進程解碼播放方法和裝置,應用于客戶端,客戶端上設置有主進程和多個子進程,子進程包括Libvlc播放器,包括:獲取用戶的選取模式;根據選取模式在主進程上創建主窗口;在主窗口上生成多個子窗口,其中,每個子進程對應相應的子窗口;將每個子窗口上對應的視頻流進行繪制,得到多個繪制后的視頻流;通過Libvlc播放器將多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流;顯示多個解碼后的視頻流;采用多進程播放器進行播放,可以滿足多路節目同時播放和多個播放器長時間
GeForce GTX 1060 6GB(6GB/七彩虹)顯卡,最優播放為16路(10硬解+6軟解);2)英特爾UHD Graphics 630(128MB/華碩)顯卡,最優播放為12路(8硬解+4軟解)。
[0063]多進程播放器可同時支持16路節目同時播放,并且CPU和內存使用率不應高于80%;多進程播放器穩定性好,最低可滿足30*24h持續穩定播放,無卡頓、無停播和不崩潰;支持PC端跟移動端視頻切換(即切屏),具體參照圖2,以3*3為例顯示多個子窗口。
[0064]主進程包括主窗口、Web容器、播放器組管理子模塊和播放器視頻繪制子模塊。其中,Web容器為Web瀏覽器引擎,主要是將內容嵌入到沒有本機Web引擎的平臺上QT應用程序中去。子進程包括播放器控制與交互疊加層、播放器疊加繪制層和Libvlc播放器。
[0065]主進程的作用是用于創建與管理主窗口、創建與管理Web容器、創建與管理播放器組管理子模塊、創建與管理播放器視頻繪制子模塊、創建與管理播放子進程。
[0066]子進程的作用是接收主進程發送的視頻顯示Widget標識,通過Libvlc接口將視頻顯示Widget標識配置到Libvlc播放器中,通過Libvlc接口將播放地址配置到Libvlc播放器中,通過Libvlc接口播放視頻。
[0067]進一步的,步驟S105包括以下步驟:
[0068]步驟S201,將多個繪制后的視頻流輸入給訪問層,并通過訪問層發送給流層;
[0069]步驟S202,將多個繪制后的視頻流通過流層發送給解復用層;
[0070]步驟S203,解復用層對多個繪制后的視頻流進行解復用,得到多個解復用的視頻流;
[0071]步驟S204,將本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種多進程解碼播放方法,其特征在于,應用于客戶端,所述客戶端上設置有主進程和多個子進程,所述子進程包括Libvlc播放器,所述方法包括:獲取用戶的選取模式;根據所述選取模式在所述主進程上創建主窗口;在所述主窗口上生成多個子窗口,其中,每個所述子進程對應相應的所述子窗口;將每個所述子窗口上對應的視頻流進行繪制,得到多個繪制后的視頻流;通過所述Libvlc播放器將所述多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流;顯示所述多個解碼后的視頻流。2.根據權利要求1所述的多進程解碼播放方法,其特征在于,所述通過所述Libvlc播放器將所述多個繪制后的視頻流進行解復用和解碼,得到多個解碼后的視頻流,包括:將所述多個繪制后的視頻流輸入給訪問層,并通過訪問層發送給流層;將所述多個繪制后的視頻流通過所述流層發送給解復用層;所述解復用層對所述多個繪制后的視頻流進行解復用,得到多個解復用的視頻流;將所述多個解復用的視頻流發送給第一輸出層,并通過第一輸出層發送給解碼層;所述解碼層對所述多個解復用的視頻流進行解碼,得到所述多個解碼后的視頻流。3.根據權利要求1所述的多進程解碼播放方法,其特征在于,所述方法還包括:所述主進程通過DBUS將播放信息發送給所述子進程;或者,所述子進程通過所述DBUS將播放結果信息發送給所述主進程。4.根據權利要求1所述的多進程解碼播放方法,其特征在于,所述方法還包括:當所述主窗口上生成多個所述子窗口時,根據所述選取模式調整每個所述子窗口的大小和顯示位置。5.根據權利要求4所述的多進程解碼播放方法,其特征在于,所述方法還包括:當所述主窗口在界面上發生變化時,根據變化后的主窗口調整每個所述子窗口的大小和所述顯示位置...
【專利技術屬性】
技術研發人員:馬彪,蘭現民,宋慶安,
申請(專利權)人:北京數碼視訊科技股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。