本申請涉及信息處理技術領域,具體涉及信息顯示技術領域,尤其涉及視頻直播方法及裝置。
背景技術:
隨著網絡技術的發(fā)展,視頻得到了普遍的推廣。視頻由于其直觀的視覺體驗,成為用戶獲取信息的主要方式。尤其是視頻直播,能夠帶給用戶實時的、身臨其境的視覺體驗。
當前的視頻按視頻幀分類可以分為關鍵幀(即i幀)、前向參考幀(即p幀)。當視頻播放端播放的是直播視頻時,如果開始接收到的關鍵幀,則可以實現即時播放,但如果開始接收到的是前向參考幀,則播放處于等待狀態(tài),只有在接收到關鍵幀時才會對視頻進行播放。由于在視頻幀中,前向參考幀的數量通常比關鍵幀多,導致視頻直播時經常會遇到視頻播放延時的情況,播放實時性差。
技術實現要素:
本申請?zhí)峁┝艘曨l直播方法及裝置,以解決背景技術中提到的問題。
一方面,本申請?zhí)峁┝艘环N視頻直播方法,所述方法包括:接收視頻發(fā)布端發(fā)來的視頻幀;根據所述視頻幀的數據類型對所述視頻幀進行緩沖得到緩沖幀序列;監(jiān)測視頻播放端的視頻播放狀態(tài),所述視頻播放狀態(tài)包括開始播放狀態(tài)和正在播放狀態(tài);根據所述視頻播放狀態(tài)將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播。
在一些實施例中,所述根據所述視頻幀的數據類型對所述視頻幀進行緩沖得到緩沖幀序列包括:若當前接收的視頻幀為關鍵幀,則刪除所述緩沖幀序列內之前的視頻幀,將所述關鍵幀放入所述緩沖幀序 列,否則,將當前接收的視頻幀按接收順序放入所述緩沖幀序列。
在一些實施例中,所述根據所述視頻播放狀態(tài)將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播包括:若所述視頻播放狀態(tài)為開始播放狀態(tài),并且當前接收的視頻幀不是關鍵幀,則將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播后,將所述當前接收的視頻幀發(fā)送給所述視頻播放端,若當前接收的視頻幀是關鍵幀,則將所述當前接收的視頻幀發(fā)送給所述視頻播放端進行直播;若所述視頻播放狀態(tài)為正在播放狀態(tài),則將所述當前接收的視頻幀發(fā)送給所述視頻播放端進行直播。
在一些實施例中,所述將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播還包括:將所述緩沖幀序列內第一個視頻幀的時間戳修改為當前時間。
第二方面,本申請?zhí)峁┝艘环N視頻直播裝置,所述裝置包括:視頻幀接收單元,接收視頻發(fā)布端發(fā)來的視頻幀;緩沖幀序列生成單元,用于根據所述視頻幀的數據類型對所述視頻幀進行緩沖得到緩沖幀序列;播放狀態(tài)監(jiān)測單元,用于監(jiān)測視頻播放端的視頻播放狀態(tài),所述視頻播放狀態(tài)包括開始播放狀態(tài)和正在播放狀態(tài);緩沖幀序列發(fā)送單元,用于根據所述視頻播放狀態(tài)將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播。
在一些實施例中,所述緩沖幀序列生成單元包括:緩沖幀序列生成子單元,用于在當前接收的視頻幀為關鍵幀時,刪除所述緩沖幀序列內之前的視頻幀,將所述關鍵幀放入所述緩沖幀序列,否則,將當前接收的視頻幀按接收順序放入所述緩沖幀序列。
在一些實施例中,所述緩沖幀序列發(fā)送單元包括:緩沖幀序列發(fā)送子單元,用于在所述視頻播放狀態(tài)為開始播放狀態(tài),并且當前接收的視頻幀不是關鍵幀時,將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播后,再將所述當前接收的視頻幀發(fā)送給所述視頻播放端,若當前接收的視頻幀是關鍵幀,則將所述當前接收的視頻幀發(fā)送給所述視頻播放端進行直播,在所述視頻播放狀態(tài)為正在播放狀態(tài)時,將所述當前接收的視頻幀發(fā)送給所述視頻播放端。
在一些實施例中,所述緩沖幀序列發(fā)送單元還包括:時間戳修改子單元,用于將所述緩沖幀序列內第一個視頻幀的時間戳修改為當前時間。
本申請首先接收視頻幀;然后根據接收的視頻幀的類型進行緩沖得到緩沖幀序列,能夠提高緩沖幀序列中視頻幀的播放時效性;之后獲取視頻播放端的視頻播放狀態(tài);最后根據視頻播放狀態(tài)將緩沖幀序列發(fā)送給視頻播放端,使得播放端能夠快速進行視頻播放,提高了視頻直播的實時性。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1是根據本申請的可以應用于其中的示例性系統(tǒng)架構圖;
圖2是根據本申請的視頻直播方法的一個實施例流程圖;
圖3是根據本申請的視頻直播方法的流程圖;
圖4是根據本申請的視頻直播裝置的一個實施例結構示意圖;
圖5是適于用來實現本申請實施例的服務器的計算機系統(tǒng)的結構示意圖。
具體實施方式
下面結合附圖和實施例對本申請作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋相關發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關發(fā)明相關的部分。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結合實施例來詳細說明本申請。
圖1示出了可以應用本申請的視頻直播方法或視頻直播裝置的實施例的示例性系統(tǒng)架構100。
如圖1所示,系統(tǒng)架構100可以包括終端設備101、102、103, 網絡104和服務器105。網絡104用以在終端設備101、102、103和服務器105之間提供通信鏈路的介質。網絡104可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
用戶可以使用終端設備101、102、103通過網絡104與服務器105交互,以接收或發(fā)送消息等。終端設備101、102、103上可以安裝有各種視頻應用和網絡應用,例如視頻直播器和瀏覽器等。
終端設備101、102、103可以是具有顯示屏并且支持視頻播放和瀏覽器視頻播放的各種電子設備,包括但不限于智能手機、平板電腦等。
服務器105可以是提供各種服務的服務器,例如對終端設備101、102、103上的視頻直播器和瀏覽器提供支持的視頻服務器。視頻服務器可以將接收到的視頻幀發(fā)送給終端設備101、102、103,并通過終端設備101、102、103上的視頻直播器和瀏覽器進行播放。
需要說明的是,本申請實施例所提供的視頻直播方法一般由服務器105執(zhí)行,相應地,視頻直播裝置一般設置于服務器105中。
應該理解,圖1中的終端設備、網絡和服務器的數目僅僅是示意性的。根據實現需要,可以具有任意數目的終端設備、網絡和服務器。
繼續(xù)參考圖2,圖2示出了視頻直播方法的一個實施例的流程圖200。
如圖2所示,本實施例的視頻直播方法包括以下步驟:
步驟201,接收視頻發(fā)布端發(fā)來的視頻幀。
在本實施例中,基于視頻直播方法運行于其上的電子設備(例如圖1的服務器105)可以通過有線連接方式或者無線連接方式與終端設備(例如圖1所示的終端設備101、102、103)連接,實現視頻直播的目的。
視頻發(fā)布端可以是電視臺,也可以是進行視頻通訊的終端,如手機、平板電腦和筆記本。通常,視頻發(fā)布端通過有線或無線的方式發(fā)送視頻幀,發(fā)送視頻幀的過程中往往會受到網絡因素的影響,出現延時或掉幀等情況,因此,視頻幀的實時性不高,延時的情況較為普遍。
視頻服務器接收視頻幀后,會對視頻幀進行緩沖,并將緩沖后的 視頻幀發(fā)送給視頻幀接收端。
步驟202,根據所述視頻幀的數據類型對所述視頻幀進行緩沖得到緩沖幀序列。
現有的視頻服務器都是接收視頻幀并對視頻幀進行保存。在接收到視頻幀接收端發(fā)來的視頻幀請求信號后,將緩沖的視頻幀發(fā)送給視頻幀接收端。視頻幀可以分為i幀和p幀(視頻幀還包括b幀,由于b幀和p幀都不能單獨實現視頻播放,因此,本申請不對b幀過多解釋),其中,i幀是一個全幀壓縮編碼幀,解碼時僅用i幀的數據就可重構完整圖像。p幀是i幀后面相隔1~2幀的編碼幀,p幀屬于前向預測的幀間編碼,它只參考前面最靠近它的i幀或p幀,解碼時,必須將i幀中的預測值與預測誤差求和后才能重構完整的p幀圖像??梢姡琲幀和p幀在視頻播放過程中的作用不同。
現有的視頻服務器通常是按照接收的視頻幀的先后順序對視頻幀進行緩沖,沒有考慮視頻幀是i幀和p幀的功能特性,直接將緩沖的視頻幀發(fā)送給視頻幀接收端。這是導致視頻直播出現延時的一個重要原因。本實施例的緩沖幀序列用于對視頻幀進行緩沖,當視頻服務器接收到i幀時,視頻服務器將緩沖幀序內當前的視頻幀刪除后,將接收的i幀放入緩沖幀序,當視頻服務器接收到p幀時,按照接收的先后順序,將p幀放入緩沖幀序。可見,本實施例的緩沖幀序內只包括視頻服務器最近接收的一個i幀。因此,能夠最大限度地保證視頻幀接收端視頻直播的實時性。
在本實施例的一些可選的實現方式中,為了提高視頻直播的實時性,步驟202還可以包括:若當前接收的視頻幀為關鍵幀,則刪除所述緩沖幀序列內之前的視頻幀,將所述關鍵幀放入所述緩沖幀序列,否則,將當前接收的視頻幀按接收順序放入所述緩沖幀序列。
由上述對i幀和p幀的分析可知,i幀不依賴其他視頻幀就能獨立顯示相應的畫面,因此,i幀在視頻直播過程中的作用更大。為了提高視頻直播的實時性,本實施例方法先對接收的視頻幀的類型進行分析,當接收到的是i幀(關鍵幀)時,可以將i幀直接發(fā)送給視頻幀接收端,能夠最大限度地保證視頻播放的實時性。同時,也可以刪除接收 i幀之前緩沖的視頻幀。若此時視頻幀接收端不接收視頻幀,這將該i幀放入緩沖幀序列。當接收到的是p幀時,由于p幀依賴i幀才能播放,將p幀直接發(fā)送給視頻幀接收端會導致視頻播放延時。因此可以將p幀直按接收的先后順序放入緩沖幀序列。
步驟203,監(jiān)測視頻播放端的視頻播放狀態(tài)。
本實施例的視頻播放狀態(tài)包括開始播放狀態(tài)和正在播放狀態(tài)。其中,開始播放狀態(tài)是指,在視頻服務器接收到當前視頻幀時,視頻幀接收端由不接收視頻幀轉變到接收視頻幀的狀態(tài),相當于瞬時由不接收視頻幀的狀態(tài)進入播放視頻幀的狀態(tài);正在播放狀態(tài)是指,在視頻服務器接收到當前視頻幀時,視頻幀接收端已經處于播放視頻幀的狀態(tài)。
由上述對i幀和p幀以及視頻播放狀態(tài)的分析可知,視頻服務器可以根據不同的視頻播放狀態(tài),對當前接收到的i幀和p幀進行相應處理,可以提高視頻直播的實時性,因此,首先要檢測視頻播放端的視頻播放狀態(tài)。
為了獲取視頻幀接收端的視頻播放狀態(tài),視頻服務器可以實時監(jiān)測與視頻服務器連接的視頻幀接收端的播放狀態(tài),也可以間隔設定時間向視頻幀接收端發(fā)送播放狀態(tài)請求信號,獲取視頻播放狀態(tài)的具體方式視實際情況而定。
步驟204,根據所述視頻播放狀態(tài)將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播。
通常來說,視頻播放端的視頻播放狀態(tài)可以分為三種:一、不播放狀態(tài);二,正在播放狀態(tài);三,開始播放狀態(tài)。其中,不播放狀態(tài)可以不考慮;正在播放狀態(tài)和開始播放狀態(tài)都需要很好的實時性,對于正在播放狀態(tài),視頻服務器不需要將接收到的當前視頻幀放入緩沖幀序列,只要直接發(fā)送給視頻幀接收端就能保證視頻直播的實時性;對于開始播放狀態(tài),視頻服務器需要根據接收到的當前視頻幀的類型做緩沖處理,將有必要的視頻幀放入緩沖幀序列,當檢測到視頻幀接收端為開始播放狀態(tài)時,將相應的視頻幀發(fā)送給視頻幀接收端,保證視頻直播的實時性。
在本實施例的一些可選的實現方式中,步驟204可以包括:
一方面,若所述視頻播放狀態(tài)為開始播放狀態(tài),并且當前接收的視頻幀不是關鍵幀,則將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播后,將所述當前接收的視頻幀發(fā)送給所述視頻播放端,若當前接收的視頻幀是關鍵幀,則將所述當前接收的視頻幀發(fā)送給所述視頻播放端進行直播;
若所述視頻播放狀態(tài)為開始播放狀態(tài),則視頻服務器需要將接收到的最近的i幀發(fā)送給視頻幀接收端,以保證視頻直播的實時性。如果當前接收的視頻幀不是關鍵幀,則說明視頻服務器的緩沖幀序列里有最近的i幀,則將緩沖幀序列里的視頻幀發(fā)送給視頻幀接收端,并且視頻服務器將后續(xù)接收到的視頻幀(不考慮視頻幀的類型)都直接發(fā)送給視頻幀接收端(此時不需要對視頻幀進行緩沖);若當前接收的視頻幀是i幀,則不考慮緩沖幀序列里的視頻幀,直接將該i幀發(fā)送給視頻播放端進行直播,并且視頻服務器將后續(xù)接收到的視頻幀(不考慮視頻幀的類型)都直接發(fā)送給視頻幀接收端。
另一方面,若所述視頻播放狀態(tài)為正在播放狀態(tài),則將所述當前接收的視頻幀發(fā)送給所述視頻播放端進行直播。
若是正在播放狀態(tài),則視頻服務器不需要對接收的視頻幀緩沖,將當前接收的視頻幀發(fā)送給視頻播放端進行直播即可保證直播的實時性。
在本實施例的一些可選的實現方式中,視頻幀都帶有時間戳,以表明該視頻幀的時間信息。緩沖幀序列里的視頻幀不是實時接收到的視頻幀,而是之前收到的視頻幀。為了提高視頻幀接收端進行視頻直播的實時性,視頻服務器在將緩沖幀序列里的視頻幀之前,可以對視頻幀的時間戳進行修改,以促使視頻幀接收端盡快進行視頻幀的播放。因此,步驟204還可以包括:將所述緩沖幀序列內第一個視頻幀的時間戳修改為當前時間。
繼續(xù)參見圖3,圖3是根據本實施例的視頻直播方法的一個流程圖。由圖3可知,視頻服務器對接收到的視頻幀的類型進行分析,根據類型信息對視頻幀作對應的處理;然后獲取視頻接收端的視頻播放 狀態(tài),根據視頻播放狀態(tài)和當前接收的視頻幀確定發(fā)送給視頻接收端的視頻幀。
本申請的上述實施例提供的方法首先接收視頻幀;然后根據接收的視頻幀的類型進行緩沖得到緩沖幀序列,能夠提高緩沖幀序列中視頻幀的播放時效性;之后獲取視頻播放端的視頻播放狀態(tài);最后根據視頻播放狀態(tài)將緩沖幀序列發(fā)送給視頻播放端,使得播放端能夠快速進行視頻播放,提高了視頻直播的實時性。
進一步參考圖4,作為對上述各圖所示方法的實現,本申請?zhí)峁┝艘环N視頻直播裝置的一個實施例,該裝置實施例與圖2所示的方法實施例相對應,該裝置具體可以應用于各種電子設備中。
如圖4所示,本實施例所述的視頻直播裝置400包括:視頻幀接收單元401、緩沖幀序列生成單元402、播放狀態(tài)監(jiān)測單元403和緩沖幀序列發(fā)送單元404。其中,視頻幀接收單元401用于接收視頻發(fā)布端發(fā)來的視頻幀;緩沖幀序列生成單元402用于根據所述視頻幀的數據類型對所述視頻幀進行緩沖得到緩沖幀序列;播放狀態(tài)監(jiān)測單元403用于監(jiān)測視頻播放端的視頻播放狀態(tài),所述視頻播放狀態(tài)包括開始播放狀態(tài)和正在播放狀態(tài);緩沖幀序列發(fā)送單元404用于根據所述視頻播放狀態(tài)將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播。
在本實施例中,視頻幀接收單元401、緩沖幀序列生成單元402、播放狀態(tài)監(jiān)測單元403以及緩沖幀序列發(fā)送單元404的具體處理可分別參考圖2對應實施例中步驟201、步驟202、步驟203、步驟204的相關說明,在此不再贅述。
在本實施例的一些可選的實現方式中,所述緩沖幀序列生成單元402可以包括:緩沖幀序列生成子單元(圖中未示出),用于在當前接收的視頻幀為關鍵幀時,刪除所述緩沖幀序列內之前的視頻幀,將所述關鍵幀放入所述緩沖幀序列,否則,將當前接收的視頻幀按接收順序放入所述緩沖幀序列。
在本實施例的一些可選的實現方式中,所述緩沖幀序列發(fā)送單元404可以包括:緩沖幀序列發(fā)送子單元(圖中未示出),用于在所述視頻播放狀態(tài)為開始播放狀態(tài),并且當前接收的視頻幀不是關鍵幀時, 將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播后,再將所述當前接收的視頻幀發(fā)送給所述視頻播放端,若當前接收的視頻幀是關鍵幀,則將所述當前接收的視頻幀發(fā)送給所述視頻播放端進行直播,在所述視頻播放狀態(tài)為正在播放狀態(tài)時,將所述當前接收的視頻幀發(fā)送給所述視頻播放端。
在本實施例的一些可選的實現方式中,所述緩沖幀序列發(fā)送單元404可以包括:時間戳修改子單元(圖中未示出),用于將所述緩沖幀序列內第一個視頻幀的時間戳修改為當前時間。
下面參考圖5,其示出了適于用來實現本申請實施例的服務器的計算機系統(tǒng)500的結構示意圖。
如圖5所示,計算機系統(tǒng)500包括中央處理單元(cpu)501,其可以根據存儲在只讀存儲器(rom)502中的程序或者從存儲部分508加載到隨機訪問存儲器(ram)503中的程序而執(zhí)行各種適當的動作和處理。在ram503中,還存儲有系統(tǒng)500操作所需的各種程序和數據。cpu501、rom502以及ram503通過總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。
以下部件連接至i/o接口505:包括鍵盤、鼠標等的輸入部分506;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚聲器等的輸出部分507;包括硬盤等的存儲部分508;以及包括諸如lan卡、調制解調器等的網絡接口卡的通信部分509。通信部分509經由諸如因特網的網絡執(zhí)行通信處理。驅動器510也根據需要連接至i/o接口505??刹鹦督橘|511,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據需要安裝在驅動器510上,以便于從其上讀出的計算機程序根據需要被安裝入存儲部分508。
特別地,根據本公開的實施例,上文參考流程圖描述的過程可以被實現為計算機軟件程序。例如,本公開的實施例包括一種計算機程序產品,其包括有形地包含在機器可讀介質上的計算機程序,所述計算機程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實施例中,該計算機程序可以通過通信部分509從網絡上被下載和安裝,和/或從可拆卸介質511被安裝。
附圖中的流程圖和框圖,圖示了按照本申請各種實施例的系統(tǒng)、方法和計算機程序產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用于實現規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個接連地表示的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現,或者可以用專用硬件與計算機指令的組合來實現。
描述于本申請實施例中所涉及到的單元可以通過軟件的方式實現,也可以通過硬件的方式來實現。所描述的單元也可以設置在處理器中,例如,可以描述為:一種處理器包括視頻幀接收單元、緩沖幀序列生成單元、播放狀態(tài)監(jiān)測單元和緩沖幀序列發(fā)送單元。其中,這些單元的名稱在某種情況下并不構成對該單元本身的限定,例如,播放狀態(tài)監(jiān)測單元還可以被描述為“監(jiān)測播放狀態(tài)的單元”。
作為另一方面,本申請還提供了一種非易失性計算機存儲介質,該非易失性計算機存儲介質可以是上述實施例中所述裝置中所包含的非易失性計算機存儲介質;也可以是單獨存在,未裝配入終端中的非易失性計算機存儲介質。上述非易失性計算機存儲介質存儲有一個或者多個程序,當所述一個或者多個程序被一個設備執(zhí)行時,使得所述設備:接收視頻發(fā)布端發(fā)來的視頻幀;根據所述視頻幀的數據類型對所述視頻幀進行緩沖得到緩沖幀序列;監(jiān)測視頻播放端的視頻播放狀態(tài),所述視頻播放狀態(tài)包括開始播放狀態(tài)和正在播放狀態(tài);根據所述視頻播放狀態(tài)將所述緩沖幀序列發(fā)送給所述視頻播放端進行直播。
以上描述僅為本申請的較佳實施例以及對所運用技術原理的說明。本領域技術人員應當理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術特征的特定組合而成的技術方案,同時也應涵蓋在不脫離所述發(fā)明構思的情況下,由上述技術特征或其等同特征進行任意組合 而形成的其它技術方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術特征進行互相替換而形成的技術方案。