新四季網

視頻播放方法、裝置、計算設備以及存儲介質與流程

2023-09-16 08:42:50 1


本發明涉及多媒體技術領域,特別是涉及一種視頻播放方法、裝置、計算設備以及存儲介質。



背景技術:

隨著網際網路技術和多媒體技術的快速發展,視頻在線播放業務被越來越多的用戶使用。用戶可以使用個人電腦、移動終端以及智能電視等多種形式的終端通過多種方式瀏覽在線視頻資源。例如,用戶可以通過騰訊視頻、優酷、愛奇藝等視頻播放軟體點播視頻,通過今日頭條、新浪微博等新聞資訊類app瀏覽視頻資訊,通過uc瀏覽器、qq瀏覽器、百度瀏覽器等瀏覽器app觀看視頻,還可以通過鬥魚tv、虎牙tv等直播平臺觀看視頻直播。

由於網際網路上的視頻資源較多,為了提高用戶的瀏覽體驗,現有的視頻播放軟體或視頻播放網站大多是以視頻列表的形式向用戶展示可供觀看的視頻資源。圖1示出了視頻列表的一個例子。如圖1所示,視頻列表中各條視頻相繼排列,用戶可以上下滑動操作來滾動視頻列表,並通過點擊視頻封面中的播放鍵(在其他示例中,點擊視頻標題或視頻封面的任意位置)來觀看相應的視頻。這種通過視頻列表向用戶展示視頻資源的方式可以使用戶直觀、清楚地預覽多個視頻資源。

但由於系統(例如,android系統)天然屬性的限制,視頻列表中的每個視頻項都需要配備一個播放容器,使得在視頻列表中各視頻項被點播時,很容易造成ui線程被掛起,導致anr(應用程式無響應),大大影響用戶瀏覽體驗。由此,需要一種在確保視頻順暢顯示的情況下儘量避免anr的技術方案。



技術實現要素:

為了解決如上的至少一個問題,本發明提出了一種新的播放機制的視頻播放方案。具體地,本發明通過一個自建的播放容器來代替播放列表中的多個播放容器,並且優選將自建容器的播放內容覆蓋原始播放內容並跟隨滾動事件滾動,由此在提升頁面響應效率的同時保持頁面的自然順暢的顯示。這一滾動跟隨方案還可以與固定小窗方案相結合,以提供更為完善的視頻列表播放體驗。

根據本發明的一個方面,提供了一種視頻播放方法,包括:獲取頁面上待播放視頻的播放內容和播放位置信息;在自建窗口中播放獲取的播放內容,其中根據播放位置信息使自建窗口覆蓋播放位置的至少一部分;監聽所述頁面上的滾動事件;以及使得所述自建窗口跟隨所述滾動事件進行滾動。

由此,通過創建用於播放視頻的自建窗口可以實現單一播放容器對頁面中各視頻的無anr播放,並且通過自建窗口的跟隨滾動提升窗口顯示的自然度。上述頁面優選為至少包括兩個或以上視頻項的視頻列表頁面,以便能夠從本發明的技術方案中受益。

自建窗口優選完全覆蓋待播放視頻的播放位置,由此使得播放效果更加自然。

優選地,上述滾動跟隨可以僅僅在播放位置完全或部分處於屏幕內顯示時進行。而當上述播放位置完全離開屏幕時,可以使得覆蓋顯示的自建窗口跳轉至屏幕內的固定位置並對播放內容進行完整顯示。由此,在視頻播放的完整度和自然順暢度之間取得良好的平衡。

優選地,監聽頁面上的滾動事件可以包括:預先獲取頁面的可滾動類型信息;根據獲取的可滾動類型信息以及監聽到的滾動事件計算滾動距離;以及使得自建窗口跟隨滾動滾動距離。由此,在視頻播放過程中,用戶對頁面中執行滾動操作時,不會影響視頻的正常觀看。

優選地,預先獲取頁面的可滾動類型信息可以包括:循環遍歷頁面上待播放視頻區域的上級viewgroup,並獲取可滾動的viewgroup,可滾動的viewgroup包括listview、recyclerview和viewpager。

優選地,該視頻播放方法還可以包括:預先建立自建窗口,其中自建窗口被布置在最上層布局。自建窗口可被隱藏,並在需要播放視頻時取消上述隱藏。由此確保在需要時對自建窗口的恰當顯示。

優選地,預先建立自建窗口還可以包括:為自建窗口提供默認的視頻控制參數;和/或為自建窗口提供可供編輯的視頻控制參數選項。由此,可以進一步完善自建窗口的視頻播放功能。

優選地,預先建立自建窗口還可以包括:在子線程中預先建立自建窗口。由此,通過在子線程中執行自建窗戶口的建立事件,可以保證主線程的響應能力,避免由主線程的阻塞而引起anr的發生。

優選地,子線程監聽自建窗口播放過程中的完整狀態,並將每個狀態從子線程發布到主線程中。由此,通過將子線程監聽到的視頻播放狀態post到主線程,可以進一步避免anr的發生。上述自建窗口可以在不同的時刻建立,以滿足實際應用中的具體要求。

根據本發明的另一個方面,還提供了一種視頻播放裝置,包括:播放信息獲取單元,用於獲取頁面上待播放視頻的播放內容和播放位置信息;內容播放單元,用於在自建窗口中播放獲取的播放內容,其中根據播放位置信息使自建窗口覆蓋播放位置的至少一部分;頁面事件監聽單元,用於監聽頁面上的滾動事件;以及窗口跟隨單元,用於使使得所述自建窗口跟隨所述滾動事件進行滾動。上述頁面優選是可滾動的包括至少兩個視頻的視頻播放列表頁面。

優選地,所述內容播放單元可以使得所述自建窗口完全覆蓋所述播放位置並在所述自建窗口中播放獲取的播放內容。

優選地,所述窗口跟隨單元可以在所述播放位置至少有一部分在屏幕內顯示時,使得所述自建窗口跟隨所述滾動事件進行滾動。

優選地,上述裝置還可以包括:窗口固定單元,用於在所述播放位置完全或部分不在屏幕內顯示時,使得所述自建窗口在所述屏幕內固定並完整顯示。

優選地,頁面事件監聽單元可以用於:預先獲取頁面的可滾動類型信息;根據獲取的可滾動類型信息以及監聽到的滾動事件計算滾動距離;以及使得自建窗口跟隨滾動滾動距離。

優選地,預先獲取頁面的可滾動類型信息可以包括:循環遍歷頁面上待播放視頻區域的上級viewgroup,並獲取可滾動的viewgroup,可滾動的viewgroup包括listview、recyclerview和viewpager。

優選地,該視頻播放裝置還可以包括:窗口預建單元,用於預先建立自建窗口,其中自建窗口被布置在最上層布局中。優選地,所述窗口預建單元可以隱藏自己預先建立的所述自建窗口,並且所述內容播放單元取消對預先建立的所述自建窗口的隱藏並在所述自建窗口中播放獲取的播放內容。

優選地,窗口預建單元為自建窗口提供默認的視頻控制參數;和/或為自建窗口提供可供編輯的的視頻控制參數選項。

優選地,窗口預建單元在子線程中建立自建窗口。所述自建窗口可以在如下時刻建立:在播放視頻的應用被啟動時;在進入包括可播放視頻的頁面時;或者在所述包括可播放視頻的頁面內視頻第一次被點擊播放時。

優選地,子線程監聽自建窗口播放過程中的完整狀態,並將每個狀態從子線程發布到主線程中。

根據本發明的又一個方面,還提供了一種計算設備,包括:處理器;以及存儲器,其上存儲有可執行代碼,當可執行代碼被處理器執行時,使處理器執行上文述及的方法。

根據本發明的再一個方面,還提供了一種非暫時性機器可讀存儲介質,其上存儲有可執行代碼,當可執行代碼被電子設備的處理器執行時,使處理器執行上文述及的方法。

本發明的視頻播放方法、裝置、計算設備以及存儲介質,通過創建用於播放視頻的自建窗口可以實現單一播放容器對頁面中各視頻的無anr播放,並且通過自建窗口的跟隨滾動提升窗口顯示的自然度。上述跟隨播放方案可以與小窗播放方案相結合,以便給出在視頻播放的完整度和自然順暢度之間具有良好的平衡的整體播放方案。

附圖說明

通過結合附圖對本公開示例性實施方式進行更詳細的描述,本公開的上述以及其它目的、特徵和優勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標號通常代表相同部件。

圖1是示出了現有技術中視頻播放列表的例子。

圖2是用於實現本發明實施例的環境的示意圖。

圖3是示出了根據本發明一實施例的視頻播放方法的示意性流程圖。

圖4和5分別示出了自建窗口保持跟隨和跳轉為小窗的例子。

圖6是示出了根據本發明一實施例的視頻播放裝置的結構的示意性方框圖。

圖7是示出了根據本發明一實施例的計算設備的結構的示意性方框圖。

具體實施方式

下面將參照附圖更詳細地描述本公開的優選實施方式。雖然附圖中顯示了本公開的優選實施方式,然而應該理解,可以以各種形式實現本公開而不應被這裡闡述的實施方式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,並且能夠將本公開的範圍完整地傳達給本領域的技術人員。

如圖1所示,為了方便用戶的視頻觀看與瀏覽,現有的視頻播放列表中通常從上到下的排列著多個視頻,例如,圖中所示的該視頻列表中的第n個和其後的第n+1個視頻。用戶可以對視頻列表進行滾動,例如,通過對觸屏的上下滑動,並且例如通過點擊選擇感興趣的視頻進行觀看。上述布置雖然有助於用戶的方便瀏覽和觀看,但從作業系統(例如,android系統)的功能實現來看,由於需要為視頻列表中的每個視頻項提供播放容器(即,包含了播放器的視圖控制項),很容易造成ui線程(例如,本文中的主線程)的阻塞,從而導致極為影響用戶體驗的anr。

針對於此,發明人深入研究後提出,可以通過建立一個自建窗口而將頁面中原本需要的多個播放容器縮減為一個,並優選在子線程中實現其整個生命周期,從而大大減輕作業系統應對視頻列表的負擔。另外,上述自建窗口可以覆蓋原有的播放區域並跟隨用戶的滾動操作滾動,使得用戶感受不出其實並非在原始視頻窗口而是在上層的自建窗口中觀看視頻。上述跟隨滾動方案還可以與小窗播放方案相結合,例如,在原始視頻窗口將要完全立刻屏幕顯示時跳轉至小窗播放,由此為用戶提供一個更為完整全面的視頻列表播放體驗。

至此以視頻播放列表為例,就本發明的視頻播放方案的基本原理做了簡要說明。需要說明的是,本發明的視頻播放方案可以應用於多種類型的提供視頻播放資源的頁面。其中,本發明述及的頁面可以是網頁,也可以是嵌入在應用中的頁面,例如,可以是騰訊視頻等視頻網站提供的網頁,也可以是新浪微博、百度貼吧等資訊類網頁,還可以是適於安裝在移動終端上的今日頭條等app中的頁面。並且,頁面可以按照圖1所示,以視頻列表形式向用戶展示可播放的視頻資源,也可以以其它形式向用戶展示可播放的視頻資源。

下面將結合圖2至圖5詳細說明本發明的視頻播放方案。本發明實施例所提供的視頻播放方案可應用於如圖2所示的環境中。圖2是用於實現本發明實施例的環境的示意圖。在一個實施例中,環境中的移動終端10可以經由網絡40實現與伺服器20的信息收發。伺服器20可以通過訪問資料庫30來獲取移動終端10所需的內容。移動終端之間(例如,10_1與10_2或10_n之間)也可以經由網絡40彼此通信。網絡40可以是廣義上的用於信息傳遞的網絡,可以包括一個或多個通信網絡,諸如無線通信網絡、網際網路、私域網、區域網、城域網、廣域網或是蜂窩數據網絡等。在一個實施例中,網絡40也可以包括衛星網絡,由此將移動終端10的gps信號傳送給伺服器20。應當注意,如果向圖2中添加或從圖2中去除附加模塊,不會改變本發明的示例實施例的底層概念。另外,雖然為了方便說明而在圖中示出了從資料庫30到伺服器20的雙向箭頭,但本領域技術人員可以理解的是,上述數據的收發也是可以通過網絡40實現的。

移動終端10是可用來進行網絡訪問的任何合適的可攜式電子設備,包括但不限於智慧型電話、平板電腦或是其他可攜式客戶端。伺服器20則是能夠通過網絡訪問的提供交互服務所需信息的任何伺服器。圖中雖然示出了多個移動終端10-1…n以及單個伺服器20和資料庫30,並且在隨後的描述中會選擇其中的一個或部分移動終端加以描述(例如,移動終端10-1),但是本領域技術人員應該理解的是,上述1…n個移動終端旨在表示真實網絡中存在的多個移動終端,示出的單個伺服器20和資料庫30旨在表示本發明的技術方案涉及伺服器及資料庫的操作。對特定編號的移動端以及單個伺服器和資料庫加以詳述至少為了說明方便,而非暗示對移動端和伺服器的類型或是位置等具有限制。

圖3是根據本發明一個實施例的視頻播放方法的示意性流程圖。該方法可由圖2所示的移動終端10執行。

參見圖3,方法始於步驟s310,獲取頁面上待播放視頻的播放內容和播放位置信息。

此處述及的頁面是指顯示在移動終端上的帶有視頻播放資源的可滾動頁面,其可以是移動終端通過瀏覽器訪問的網頁,也可以是安裝在移動終端上的app中的頁面。頁面可以提供一個或多個視頻資源,優選為包括至少兩個視頻的可滾動視頻播放列表頁面,例如,圖1所示頁面。待播放視頻可以是頁面中用戶期望播放的視頻,可以根據用戶對頁面執行的拖動、點擊等操作確定頁面上的待播放視頻,例如,圖1中用戶想要點擊的視頻n。對於待播放視頻,可以將待播放視頻在頁面中的位置信息視為待播放視頻的播放位置信息,並且可以根據待播放視頻在頁面中的屬性設置信息確定其播放位置信息。在這裡,播放位置是相對於頁面而非屏幕顯示而言的,頁面的滾動會影響屏顯的位置但不會改變播放位置。待播放視頻的播放內容可以根據頁面中指示的待播放視頻的地址通過網絡在線獲取。

在步驟s320,在自建窗口中播放獲取的播放內容。

在這裡,可以將自建窗口看做是有別於上述頁面而自行建立的窗口。自建窗口可以位於頁面中,也可以位於頁面之上,並且用於提供對用戶可見的視頻播放區域。自建窗口可以獲取頁面中各視頻的播放權限(例如,通過其所屬的子線程,如下將詳述),使得頁面中的視頻均可以在該自建窗口中進行播放。優選可以將自建窗口布置在最上層布局中,以使得自建窗口不會被遮擋。作為本發明的一個可選實施例,可以預先建立自建窗口,並且自建窗口的初始狀態可以設置為隱藏狀態,然後響應於步驟s320的執行,可以取消對預先建立的自建窗口的隱藏。由此,在用戶僅瀏覽頁面而未點播視頻的情況下,自建窗口被隱藏,不會影響用戶正常的瀏覽體驗,而通過將自建窗口布置在最上層布局中則可以保證視頻的播放始終對用戶可見。

在建立自建窗口的過程中,可以為自建窗口提供默認的視頻控制參數,並且/或者,還可以為自建窗口提供可供編輯的視頻控制參數選項。此處述及的視頻控制參數可以是諸如音量控制、進度控制、聲音控制等與視頻播放相關的參數。

自建窗口的初始位置可以是一個任意值,在獲取了待播放視頻的播放位置信息後,可以根據待播放視頻的播放位置信息,重新設定自建窗口的位置。例如可以將自建窗口移動到待播放視頻的播放位置,以覆蓋待播放視頻,也可以將自建窗口移動到部分覆蓋播放位置的位置。優選地,使得所述自建窗口完全覆蓋所述播放位置,使得用戶完全感覺不到是在不同於原始視頻窗口的上層窗口中觀看視頻。

在步驟s330,監聽頁面上的滾動事件,並且在步驟s340,使得自建窗口所述自建窗口跟隨所述滾動事件進行滾動。

這裡述及的頁面上的滾動事件指的是用戶例如通過上下滑動觸控螢幕而引起的滾動事件。在這裡,滾動事件主要是指基於用戶的輸入而引起的頁面中的頁面內容的滾動。通過監聽滾動事件可以(實時)獲取頁面中發生滾動的位移。根據本發明的應用場景不同,監聽頁面上的滾動事件的具體實現也不盡相同。例如,在本發明中的頁面為基於瀏覽器訪問的網頁時,可以根據網頁中滾動條的滾動參數來確定滾動距離。再例如,在本發明中的頁面為安卓系統下嵌入在應用中的頁面(例如圖1所示的頁面)時,由於頁面中可能存在多種類型的可滾動的view(視圖),例如listview(列表視圖)、recyclerview(復用視圖)、viewpager(滑動視圖),此時頁面上的滾動事件大多是針對view的滾動,因此可以監聽view的滾動,根據view的滾動參數確定具體的滾動距離。具體實現上,可以預先獲取頁面的可滾動類型信息,這裡可以通過循環遍歷頁面上待播放視頻區域的上級viewgroup(視圖組),以獲取可滾動的viewgroup,可滾動的viewgroup可以包括listview、recyclerview、viewpager等多種類型。在獲取了可滾動類型信息後,可以根據所獲取的可滾動類型信息以及監聽到的滾動事件計算滾動距離,並使自建窗口(實時)跟隨滾動所計算的滾動距離。

為了使得在頁面上發生滾動事件時,不影響視頻的正常觀看。可以在執行步驟s330的過程中,執行步驟s340,使得自建窗口跟隨滾動事件滾動並保存完整顯示。換句話說,監聽步驟和跟隨步驟通常可以交替進行,以確保自建窗口對滾動操作的實時跟隨。

在一個實施例中,可以為上述跟隨操作限定具體範圍,並且可以與小窗播放相結合以實現一個更為自然且完整的播放方案。例如,自建窗口可以僅在原始播放位置完全在屏幕中顯示的情況下保持跟隨,而其顯示不完整時跳轉為固定位置的小窗播放。例如,自建窗口也可以在原始播放位置只要有部分還在屏幕中顯示的情況下保持跟隨,而其顯示不完整時跳轉為固定位置的小窗播放。

圖4和5分別示出了自建窗口保持跟隨和跳轉為小窗的例子。用戶例如可以點擊圖1所示的視頻n封面上的播放按鈕,使得視頻n開始播放。本發明的自建窗口可以獲取視頻n的具體播放內容並完整覆蓋該視頻的默認播放位置,使得在用戶看來該視頻就像是由其默認視頻播放容器進行播放的一樣。隨後用戶可以對頁面進行列表滾動操作,使得播放位置只有部分在屏幕內顯示,這時仍然保持自建頁面的跟隨顯示,如圖4所示。而當視頻n的播放位置完全不在屏幕內顯示時,自建窗口的跟隨播放可以轉為小窗播放,如圖5所示。這裡的「播放容器」可以理解為包含了播放器的視圖控制項。而小窗播放則可以是固定位置播放,並且其大小可以相應調整,例如圖5所示的右下角縮小顯示。

雖然在此示出了跟隨播放與小窗播放操作相結合的實施例,但本領域技術人員可以理解的是,本發明的跟隨播放可以不與小窗播放相結合。例如,可以在放位置完全不在屏幕內顯示時單純保持或是停止自建窗口的顯示等。

本發明的視頻播放方案可以優選地應用於安卓系統中,例如可以應用於安卓系統下的應用開發,如今日頭條、騰訊視頻等提供視頻播放資源的app開發。在將本發明的視頻播放方法應用於這類場景中時,為了避免會嚴重影響用戶體驗的anr對話框的出現,可以在由子線程建立自建窗口,並將自建窗口的完整生命周期全部放在該子線程執行。另外,還可以由子線程執行步驟s330的監聽操作,即可以由子線程監聽自建窗口播放過程中的完整狀態,並將監聽到的每個狀態發布到主線程。

根據具體的應用場景,可以在恰當的時刻建立本發明的自建窗口,例如在播放視頻的應用被啟動時;在進入包括可播放視頻的頁面時;在所述包括可播放視頻的頁面內視頻第一次被點擊播放時;或者其他合適的時刻。在自建窗口由子線程創建時,該子線程本身也可以在合適的時間點或是情況下創建。

至此,結合圖3-5就本發明的視頻播放方法做了詳細說明,另外,本發明的視頻播放方法還可以實現為一種視頻播放裝置。圖6是示出了根據本發明一實施例的視頻播放裝置的結構的示意性方框圖。其中,視頻播放裝置600的功能模塊可以由實現本發明原理的硬體、軟體或硬體和軟體的結合來實現。本領域技術人員可以理解的是,圖6所描述的功能模塊可以組合起來或者劃分成子模塊,從而實現上述發明的原理。因此,本文的描述可以支持對本文描述的功能模塊的任何可能的組合、或者劃分、或者更進一步的限定。

下面僅就視頻播放裝置600可以具有的功能模塊以及各功能模塊可以執行的操作做簡要說明,對於其中涉及的細節部分可以參見上文描述,這裡不再贅述。

參見圖6,視頻播放裝置600包括播放信息獲取單元610、內容播放單元620、頁面事件監聽單元630以及窗口跟隨單元640。

播放信息獲取單元610用於獲取頁面上待播放視頻的播放內容和播放位置信息,內容播放單元620用於在自建窗口中播放獲取的播放內容,其中根據播放位置信息使自建窗口覆蓋所述播放位置的至少一部分。頁面事件監聽單元630用於監聽頁面上的跟隨事件。窗口跟隨單元640用於所述自建窗口跟隨所述滾動事件滾動。

在一個實施例中,內容播放單元620可以使得所述自建窗口完全覆蓋所述播放位置,由此使得用戶不會感受到原始播放容器上的自建窗口,使得上述播放更為自然順暢。

在一個實施例中,可以為上述跟隨操作限定具體範圍。例如,窗口跟隨單元640可以在播放位置至少有一部分在屏幕內顯示時,使得所述自建窗口跟隨所述滾動事件進行滾動。跟隨操作還可以與小窗播放相結合以實現一個更為自然且完整的播放方案。例如,視頻播放裝置600還可以包括窗口固定單元,用於在所述播放位置完全或部分不在屏幕內顯示時,使得所述自建窗口在所述屏幕內固定並完整顯示。

作為本發明的一個可選實施例,頁面事件監聽單元430可以預先獲取頁面的可滾動類型信息,根據獲取的可滾動類型信息以及監聽到的滾動事件計算滾動距離,使得自建窗口跟隨滾動滾動距離。其中,可滾動類型信息可以包括循環遍歷頁面上待播放視頻區域的上級viewgroup,並獲取可滾動的viewgroup,可滾動的viewgroup包括listview、recyclerview和viewpager。

如圖6所示,作為本發明的一個可選實施例,視頻播放裝置600還可以包括圖中虛線框所示的窗口預建單元650。

窗口預建單元650可以用於預先建立自建窗口,其中自建窗口被布置在最上層布局。窗口預建單元650可以隱藏自建窗口,內容播放單元620則可在需要播放視頻時取消對預先建立的自建窗口的隱藏。

可選地,窗口預建單元650還可以為自建窗口提供默認的視頻控制參數,並且還可以為自建窗口提供可供編輯的視頻控制參數選項。

窗口預建單元650可以在預先建立的子線程中預先建立自建窗口,子線程可以監聽自建窗口播放過程中的完整狀態,並將每個狀態從子線程發布到主線程中。

圖7是示出了根據本發明一實施例的計算設備的結構的示意性方框圖。

參見圖7,計算設備700可以是臺式機、可攜式計算機、平板電腦、智慧型手機、個人數據助理(pda),或者其他類型的計算機裝置,但是不限於任何特定形式。計算設備700可以包括但不限於處理器710和存儲器720。

處理器710可以是一個多核的處理器,也可以包含多個子處理器。在一些實施例中,處理器710可以包含一個通用的主處理器以及一個或多個特殊的協處理器,例如圖形處理器(gpu)、數位訊號處理器(dsp)等等。

存儲器720可以包括存儲文件形式或其他形式的內容的任何類型的存儲設備中的一個或多個,包括磁硬碟驅動器、固態硬驅、半導體存儲設備、快閃記憶體,或者能夠存儲程序指令或數字信息的任何其他計算機可讀可寫存儲介質。存儲器720上可以存儲有可執行代碼,在本發明中,當存儲器720上的可執行代碼被處理器710執行時,可以使處理器710執行圖3所示的視頻播放方法。

具體應用

在當前的網際網路領域內,無論是視頻直播還是視頻點播都是熱點和商機所在。各大網際網路公司爭相在視頻直播、視頻點播上投入大量資源,希望能佔據一席之地。但是由於安卓系統的開源本質導致安卓手機的碎片化,並且用戶對相關產品的需求千變萬化,因此尤其需要一個通用的播放框架來快速集成短視頻功能的開發,以快速跟上需求的迭代。由此,為了便於開發者快速將視頻播放功能集成到產品(app)中,可以基於本發明的視頻播放方案預先設計一個通用視頻播放框架(framework),即可以將本發明的視頻播放方法封裝到該框架中,該框架為系統的可重用設計,其可被應用開發者使用。如此,基於預先設計的視頻播放框架,開發者僅需按照產品需求設計視頻的ui,即可實現自定義的視頻播放功能,例如列表視頻播放,從而可以快速將自定義的視頻播放功能集成到產品中,設計過程中不需要考慮兼容性問題,也不需要考慮頁面滾動時視頻的生命周期,在短時間內就可以實現良好的視頻播放體驗效果。

另外,為了進一步便於開發者設計,框架中還可以為提供默認的視頻控制參數,例如進度控制、音量控制、聲音控制等等。並且,還可以提供可供開發者編輯的視頻控制參數選項。優選地,為了提高框架的可擴展性,還可以提供面向開發者的接口,該接口可以允許開發者加入針對自建窗口的自定義控制邏輯,例如開發者可以將視頻控制界面的根布局添加到自建窗口中,開發者可以根據ui來自定義播放控制的界面,比如針對橫豎屏增加不同的控制布局等。再例如,還可以讓開發者選擇是否將頁面上的滾動事件透傳下去,是否由滾動的列表處理頁面上的滾動事件等等。

由此,基於本發明的視頻播放方案實現的視頻播放框架能良好的支持android平臺的主流控制項,讓開發者能在短時間內集成到特定的產品功能中,且擴展性強,維護成本小,符合網際網路多變的基因。開發者只需要提供一個視頻播放區域的viewgroup(視圖組)/view(視圖),該框架會根據此viewgroup/view找到其所有父布局中所有能滾動的view,例如listview(列表視圖)、recyclerview(復用視圖)、viewpager(滑動視圖)。然後監聽view的滾動事件,動態移動視頻的播放區域(即自建窗口的位置),達到自建窗口跟隨滾動效果。

本發明的視頻播放方法應用於安卓系統中的應用開發時的視頻播放流程如下。

第一步:增加視頻播放viewgroup(可以理解為上文述及的自建窗口的一個實現)

將容納視頻播放的viewgroup(例如,可將其稱為videoplaylayout)添加到activity的最上層布局,然後將其隱藏。

第二步:傳遞最終播放區域的viewgroup

獲取視頻播放展示的區域的viewgroup(例如,可將其稱為coverlayout),找到該coverlayout在屏幕中位置,將videoplaylayout設置為顯示狀態,移動videoplaylayout的位置到coverlayout之上。coverlayout即為上文述及的待播放視頻。

第三步:得到可滾動的viewgroup,動態調整videoplaylayout位置

這裡可以通過循環遍歷coverlayout的父viewgroup,得到可滾動的viewgroup(例如listview),然後可以採用策略模式根據不同的可滾動視圖得到對應的滾動距離,動態設置videoplaylayout在屏幕中的位置,讓其跟隨滾動。其中,此處述及的策略模式中可以封裝用於攔截view的touch事件、根據所攔截的touch事件計算view的滾動距離的實現方法。

在將videoplaylayout動態設置在屏幕中的位置後,可以根據videoplaylayout在屏幕中的位置來回調相應的接口,設置對應播放狀態。其中,此處述及的接口中可以封裝有視頻播放狀態與位置之間的播放邏輯,位置和播放狀態之間的對應關係可以是預先設定的,例如可以是在videoplaylayout滾動的距離超過預定距離後,停止其播放。

第四步:添加視頻控制界面的根布局到videoplaylayout

為了提高框架的可擴展性,可以將視頻控制界面的根布局添加到videoplaylayout中,開發者可以根據ui來自定義播放控制的界面。另外,框架還可以設計一套默認實現播放控制的ui,比如進度控制、音量控制、聲音控制等。

第五步:播放狀態回調的全局控制

可以由子線程監聽視頻播放過程中的完整狀態,將每個狀態從子線程post到主線程中,並分發給各個設置的監聽邏輯中,如此可以方便開發者處理一些播放狀態過程中的邏輯。具體實現上,可以將與自建窗口相關的生命周期方法放在子線程中執行,統一用單向隊列管理,然後依次在android平臺上發布到主線程執行。具體地,可以在預先建立的子線程中預先建立自建窗口,並且可以使用子線程監聽自建窗口播放過程中的完整狀態,然後可以將監聽到的狀態post到主線程中。如此可以保證開發者能自己控制整個視頻的播放生命周期,防止anr,並為列表播放視頻提供可能。

上文中已經參考附圖詳細描述了根據本發明的視頻播放方法、裝置以及計算設備。本發明通過一個自建的播放容器來代替播放列表中的多個播放容器,並且優選將自建容器的播放內容覆蓋原始播放內容並跟隨滾動事件滾動,由此在提升頁面響應效率的同時保持頁面的自然順暢的顯示。這一滾動跟隨方案還可以與固定小窗方案相結合,以提供更為完善的視頻列表播放體驗。

此外,根據本發明的方法還可以實現為一種電腦程式或電腦程式產品,該電腦程式或電腦程式產品包括用於執行本發明的上述方法中限定的上述各步驟的電腦程式代碼指令。

或者,本發明還可以實施為一種非暫時性機器可讀存儲介質(或計算機可讀存儲介質、或機器可讀存儲介質),其上存儲有可執行代碼(或電腦程式、或計算機指令代碼),當所述可執行代碼(或電腦程式、或計算機指令代碼)被電子設備(或計算設備、伺服器等)的處理器執行時,使所述處理器執行根據本發明的上述方法的各個步驟。上述代碼尤其可以實現為一種可重用的播放「框架」,以方便對本方案的功能進行相應的移至和具體設定。

本領域技術人員還將明白的是,結合這裡的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實現為電子硬體、計算機軟體或兩者的組合。

附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統和方法的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標記的功能也可以以不同於附圖中所標記的順序發生。例如,兩個連續的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。

以上已經描述了本發明的各實施例,上述說明是示例性的,並非窮盡性的,並且也不限於所披露的各實施例。在不偏離所說明的各實施例的範圍和精神的情況下,對於本技術領域的普通技術人員來說許多修改和變更都是顯而易見的。本文中所用術語的選擇,旨在最好地解釋各實施例的原理、實際應用或對市場中的技術的改進,或者使本技術領域的其它普通技術人員能理解本文披露的各實施例。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀