在視頻串流中實現的交互式應用程式的製作方法
2023-10-10 18:59:34 1

本發明涉及一種交互式應用程式的方法。
背景技術:
交互式應用程式,如遊戲,可以是計算密集的。特別是對於某些種類的互動是應用程式,如交互式多媒體應用,這種高運算負載的主要組成是需要產生視頻或音頻以響應用戶的輸入。此外,負載會隨著用戶數量加成,因為相同的影像和聲音可能需要針對給定應用的每個多個用戶中分別產生。
當這樣的應用程式設置於伺服器,例如基於雲的伺服器,結果可能需要大量的伺服器,而其取得、更新和維持都是昂貴的。
在託管(hosting)計算密集的交互式應用程式,如遊戲,需要較佳的解決方案。
技術實現要素:
本發明的實施例將多媒體電腦程式轉換輸出為一系列的串流視頻剪輯,其可以通過由網絡數據中心(IDCs)和內容發送網絡(CDN)組成的視頻串流基礎設施在全球分發。
此外,在一些實施例中,視頻剪輯以元數據標記方便播放,元數據可以包括,例如,標識符和觸發信息。標識符可以是每個視頻剪輯的唯一標識符,觸發信息可以指定標識符下個播放的剪輯,可能是當前用戶輸入或其他條件的函數。
一般來說,本發明的實施例包括視頻剪輯產生過程和交互式播放程序。
在產生過程中,用戶(或者在一些變形,仿真的,機器人用戶)與傳統的交互式電腦程式互動。在響應用戶的互動,電腦程式產生原始視頻和音頻數據,儲存用戶輸入或其他事件觸發產生的特定視頻和音頻數據,與觸發條件相關的特定視頻和音頻數據之後轉換為串流視頻剪輯。該剪輯以元數據標記,包括例如ID、觸發條件或播放事件,以及長度。在一些實施例,該剪輯之後經由內容發送網絡傳送到選定的網絡數據中心以支持一個或多個交互式應用程式。
在播放過程中,在某些實施例,例如支持交互式遊戲播放的實施例,播放第一個視頻剪輯。在第一視頻剪輯播放結束時(或在一些實施例,在第一視頻剪輯播放期間的任何時間),參考元數據以識別觸發條件或將觸發下個視頻剪輯播放的條件。在偵測到觸發條件(例如用戶按下某個按鈕)時,播放下個視頻剪輯。以這種方式繼續播放直到基於最後的觸發條件播放最後的視頻剪輯。
在一些實施例中,播放發生在伺服器中,如基於雲的串流伺服器,而內容從伺服器串流到用戶。在其他的實施例,在播放時,內容經由CDN和IDC串流到用戶。
以下結合附圖和具體實施例對本發明進行詳細描述,但不作為對本發明的限定。
附圖說明
圖1是根據本發明實施例的分布式主從式計算機系統支持交互式實時多媒體應用程式的方框圖;
圖2是視頻串流基礎設施包括內容發送網絡(CDN)和多個網絡數據中心(IDCs)的方框圖,通過本發明的實施例來分發視頻剪輯;
圖3是其根據本發明實施例,描述交互式視頻剪輯產生和播放系統的圖;
圖4是根據本發明實施例的視頻剪輯產生和播放程序的流程圖;
圖5是根據本發明實施例,描述視頻剪輯的圖結構組;
圖6根據本發明實施例,描述用於從線性視頻連結到交互式視頻腳本的系統;
圖7根據本發明實施例,描述用於從線性視頻連結到交互式視頻腳本的方法。
具體實施方式
本發明實施例提供多媒體信息的產生和播放,如用於交互式實時媒體應用程式的串流視頻剪輯。
圖1是根據本發明實施例,分布式主從式計算機系統1000支持交互式實時多媒體應用程式的方框圖。計算機系統1000包括一個或多個伺服器計算機101和一個或多個用戶設備103通過電腦程式產品131配置。電腦程式131可以在暫時性的或非暫時性的計算機可讀取介質提供;然而,在特定實施例中,他是在非暫時性計算機可讀取介質中提供,如持續性的(如,非揮發性)儲存,揮發性內存(如,隨機存取內存),或各種其他已知的非暫時性計算機可讀取介質。
用戶設備103包括中央處理器單元(CPU)120、內存122和儲存空間121.用戶設備103也包括輸入和輸出(I/O)子系統(圖中未單獨示出)(包括如顯示器或觸控顯示器、鍵盤、d-pad、軌跡球、觸摸板、操作杆、麥克風、和/或其他用戶接口設備和相關聯的控制器電路和/或軟體)。用戶設備103可以包括任何類型,可以提供媒體內容的電子設備。一些例子包括桌面計算機和可攜式電子設備如行動電話、智能型手機、多媒體播放器、電子閱讀器、平板/觸摸板、筆記本電腦或膝上型PCs、智能電視、智能手錶、頭戴式顯示器和其他通訊設備。
伺服器計算機101包括中央處理單元CPU110、儲存空間111和內存112(並可包括I/O子系統,未單獨示出)。伺服器計算機101可以是能夠託管計算機產品131的任何計算機設備,用來與一個或多個客戶端計算機通訊,例如,用戶設備103,通過網絡,例如網絡102(如,網絡)。伺服器計算機101經由網絡與一個或多個客戶端計算機通訊,並且可以採用協議如網絡協議組(TCP/IP)、超文本傳送協議(HTTP)或HTTPS、實時協議,或其他協議。
內存112和122可以包括任何已知的計算機內存設備。儲存空間111和121可以包括任何已知的儲存空間設備。
儘管未示出,內存112和122和/或儲存空間111和121也可以包括任何可通過伺服器計算機101和用戶設備103存取的數據儲存設備,諸如,可移動或可攜式的任何內存(如,快閃記憶體或外接硬碟),或任何由第三方託管的數據儲存空間(如雲端儲存空間),並且不限於此。
用戶設備103和伺服器計算機101經由網絡102存取和通訊。網絡102包括有線和無線連接,包括廣域網(WANs)和蜂巢式網絡或任何其他類型作為設備間通訊使用的計算機網絡。
在所示實施例中,電腦程式產品131實際上代表電腦程式產品或電腦程式產品部分組成,用來在個別的伺服器101和用戶設備103上執行。電腦程式產品131的部分裝入內存112組成伺服器101,遵照本文進一步描述的發明要求,記錄並播放交互式串流視頻剪輯。串流視頻剪輯播放到,例如,用戶設備103,其支持接收串流視頻,例如經由具有HTML5功能的瀏覽器。
圖2顯示視頻串流基礎設施的一個例子,通過本發明的實施例使用以分發視頻剪輯。如圖所示,視頻串流基礎設施2000包括內容發送網絡(CDN)200和網絡數據中心(IDCs)210-260。
媒體文件201最初儲存在文件儲存空間202,媒體文件201之後經由CDN200分發到IDCs 210-260。在文件分發後,每個個別的IDC具有分發媒體文件的本地副本。個別的本地副本之後儲存為媒體文件副本211-261。每個IDC 210-260之後服務串流媒體,如視頻,到個別IDC地理鄰近區域的用戶,以響應用戶的請求。媒體文件副本211-261可以周期性的更新。
在本發明的一些實施例,使用視頻串流基礎設施2000分發由本文公開的發明過程產生的視頻剪輯。也就是說,例如,本發明的視頻剪輯作為媒體文件201儲存在文件儲存空間202,之後經由CDN 200分發到IDCs 210-260,在那裡他們可以用於作為串流視頻播放給用戶。
在其他實施例,本發明視頻剪輯直接從,例如,一個或多個伺服器,如基於雲的伺服器分發,而不使用視頻串流基礎設施2000。
圖3是一個系統3000的高階方框圖,其用來產生和儲存用元數據標記的交互式視頻剪輯,並用來分發交互式視頻到用戶設備,根據本發明的實施例。系統3000可以被實現為硬體模塊或軟體模塊,或硬體和軟體模塊的組合。在部分實施例,系統3000的至少一部分包括在伺服器運行的軟體,如伺服器101。
在所示的實施例中,除了產生和儲存以元數據標記的交互式視頻剪輯,系統3000執行附加的相關功能。例如,在該實施例系統3000還能夠回放預先儲存的視頻剪輯,並且能夠響應用戶的互動傳輸串流視頻給用戶,而不需要將視頻首次儲存如視頻剪輯。在替代實施例中,這些一個或多個功能可以通過單獨或多個系統提供。
在圖3,電腦程式310可以是,例如,交互式多媒體應用程式。例如,電腦程式310可以是遊戲應用程式。電腦程式310產生輸出程序320響應輸入程序330。
在一些實施例,輸出程序320包括原始視頻和音頻輸出,在一些實施例,輸出程序320包括視頻渲染結果。
在一些實施例,輸入程序330包括基於用戶輸入互動指示的控制訊息,如用戶按下按鈕,選擇列表上的項目或鍵入命令。這樣的用戶輸入互動可以源自輸入接口設備350,輸入接口設備可以是與用戶設備相關的接口設備,如用戶設備103。特定用戶設備相關的接口設備可以包括操作杆、滑鼠、觸控屏幕等。在一些實施例,輸入接口設備350可以與遠程用戶設備103並列,並與其他系統的組件經由網絡通訊。雖然標記為「接口設備」,但是本領域技術人員將了解輸入設備/組件如接口設備350可以,在特定實施例中,包括輸入組件被建置於,即,部分的,用戶設備103中(例如觸控屏幕、按鈕等),而不是從用戶設備103分離並插入用戶設備103中。
在一些實施例中,輸入接口設備350是「機器人」實體,產生一連串仿真真實使用者行為的輸入序列。這樣的機器人實體可以用來「訓練」系統,並且使其產生許多(或甚至全部)輸出程序320可能的情況。以這種方式「訓練」系統3000的目的可以是,例如,使其產生並儲存每個與輸出程序320相關視頻剪輯的至少一個副本。
應用程式互動容器340提供運行環境運行電腦程式310。在本發明的實施例中,應用程式互動容器340偵測並截取通過輸入接口設備350產生的用戶輸入,並以輸入程序330的形式,傳遞攔截的用戶輸入到電腦程式310。
應用程式互動容器340還截取原始視頻和音頻產生為輸出程序320,並且利用電腦程式視頻處理平臺360的服務將原始視頻和音頻轉換串流視頻格式,然後將轉換的視頻和音頻作為一個或多個視頻片段或剪輯370儲存在資料庫390。每個剪輯代表響應特定觸發條件的音頻和視頻輸出程序(或播放事件),其中一組可能的觸發條件包括,例如,輸入程序330的特定項目。在一些實施例,原始視頻和音頻轉換為多媒體封裝格式,在一些實施例,原始視頻和音頻被轉換為稱為MPEG2-傳輸串流(MPEG2-TS)的格式。
隨著視頻剪輯370的產生,他們也以一組屬性380標記(這裡也稱作「元數據」),組成,例如,剪輯ID、播放事件和長度。元數據380中的屬性與相關聯的對應的視頻剪輯370儲存於資料庫390。儲存的剪輯370可以用於將來的播放,儲存的、標記視頻剪輯370可以由相同或不同的用戶再次使用。潛在地,給定的剪輯370可以通過數千個用戶以電腦程式310在共享伺服器或伺服器組上互動而被再次使用。
例如,下一次出現給定的播放事件(基於,例如,來自特定用戶輸入的偵測,從相同用戶或不同用戶),可以播放以該事件標記的儲存的視頻剪輯370,從而避免需要重新產生對應的原始視頻和音頻。對於一些應用程式,這可以導致計算機處理能力的顯著節省。見下面的播放過程說明,以得到進一步的細節。
如上所述,在所示實施例中,系統3000也可以回放預先儲存的視頻剪輯。例如,基於用戶經由輸入接口設備350的互動,使輸入程序330、電腦程式310可以確定特定具有對應到用戶互動的元數據380的預先儲存剪輯370,其是有效的並且適合響應用戶的互動。然後匹配的剪輯370可以從儲存空間和串流中擷取,例如,根據多媒體封存格式,如MPEG2-TS,到用戶設備103。
如上所述,在所示實施例中,系統3000也可以串流視頻給用戶以響應用戶互動,即使視頻當前未被儲存為串流視頻剪輯370,例如,基於用戶經由輸入接口設備350互動使輸入程序330、電腦程式310可以確定特定視頻輸出是適合響應用戶互動,但沒有對應的剪輯370可以使用。所需的視頻可以之後通過電腦程式310產出作為原始輸出視頻320。應用程式互動容器340之後截取輸出程序320並且,利用電腦程式視頻處理平臺360的服務,將原始視頻轉換為流格式,根據,例如,多媒體封裝格式,如MPEG2-TS,並將串流視頻發送給用戶設備103。有利地,串流視頻可以同時被記錄、封裝為視頻剪輯370,並與適當的元數據380儲存以作為將來使用。
圖4顯示產出、儲存和播放互動視頻剪輯及相關的元數據的過程4000,根據本發明的實施例。在一些實施例,過程4000也支持其他相關的功能,如,例如,在沒有首次儲存視頻作為視頻剪輯下,串流視頻給用戶。
在步驟410,電腦程式在伺服器,如伺服器101啟動。伺服器可以是,例如,基於雲的伺服器。伺服器可以是,例如,遊戲伺服器。電腦程式可以是,例如,交互式多媒體應用程式,如,例如,遊戲應用程式。
在步驟420,該過程監控用戶輸入。
在決策框430,如果沒有偵測到用戶輸入,過程返回到步驟420並繼續監控用戶輸入。若偵測到用戶輸入,則控制移轉到決策框440。
在決策框440,若具有匹配元數據的預先儲存視頻剪輯存在(即,元數據對應用戶輸入),控制移轉到步驟450,預先儲存視頻剪輯串流到用戶。然後控制返回到步驟420,並且該過程繼續監控用戶輸入。
如果,在決策框440,沒有發現具匹配元數據的預先儲存剪輯,控制移轉到步驟460。在步驟460,來自輸出程序響應用戶輸入的視頻片段串流到用戶。同時,視頻片段被記錄用來作為對應視頻剪輯的創建準備。在步驟470,記錄的視頻以串流形式被封裝到視頻剪輯。例如,流格式可以是多媒體封裝格式如MPEG2-TS。
在步驟480,產生與視頻剪輯相關的元數據(例如,剪輯ID,播放事件或觸發、長度)。
在步驟490,視頻剪輯和相關的元數據儲存作為將來使用,例如,當遇到與對應剪輯儲存元數據的啟動裝置時,視頻剪輯可以通過播放程序在將來使用。通過使用儲存的視頻剪輯,播放程序可以避免電腦程式需要重新產生對應儲存視頻剪輯的視頻片段。
視頻片段可以繼續被記錄,封裝到流格式的片段中,並與相關的元數據儲存直到,例如,遊戲結束。
注意,程序4000在伺服器運行的情況下,例如基於雲的伺服器,其實際上可以同時處理多個用戶,可能許多用戶。在這樣的情況下,完全可能的是,給定的視頻片段已經被記錄、封裝並儲存為視頻剪輯370,與對應的元數據380在先前用戶與程序4000的交互過程中。在這種情況下,不應該需要再次記錄對應的片段,相反地,視頻剪輯可以從先前儲存的剪輯系列中擷取,基於元數據,其可以包括唯一的ID。
圖5顯示視頻剪輯和相關元數據的圖形結構化例子組5000,根據本發明實施例使用在播放程序。這些剪輯可以是,例如,從圖3的系統3000和/或通過圖4的程序4000產生的視頻剪輯370和相關的元數據380。在播放程序,視頻剪輯370從伺服器串流,如伺服器計算機101或與網絡數據中心相關的伺服器,如IDC210。視頻剪輯370在用戶設備接收並觀看,如用戶設備103,其具有適當的功能,如支持HTML5的瀏覽器。
每個交互式多媒體應用程式或應用程式的部分,可能與相似於視頻剪輯組5000形式的播放視頻剪輯組相關,也稱作元數據播放列表,例如,多級別遊戲的每個級別可以有他自己的元數據播放列表。如上所述,關於每個視頻剪輯370的元數據被學習作為響應真實或「機器人」用戶輸入的執行應用程式,因此,同時,元數據播放列表也學習,這是因為元數據播放列表是視頻剪輯370的集合,根據元數據380連接,針對特定的應用程式或應用程式的部分。
在圖5的例子中,視頻剪輯由圓圈表示,每個具有一個ID。例如,視頻剪輯510以ID=A標記。箭頭表示「播放事件」或觸發條件使播放程序5000依箭頭方向前進,例如,若視頻剪輯520正在播放而按鈕X被按下,視頻剪輯520的播放停止而視頻剪輯530開始。若,另一方面,當視頻剪輯520正在播放,用戶選擇「項目2」,程序轉而改變到視頻剪輯540。若視頻剪輯530正在播放而按鈕Y被按下,程序轉換並播放視頻剪輯550。若視頻剪輯540正在播放而用戶滑動到「目標Z」,則程序轉換並播放視頻剪輯560。若視頻剪輯560或550任一個正在播放而從麥克風(「MIC」)接收到音頻命令「提交」,程序轉換並開始播放視頻剪輯570。說明稍微不同種類的觸發,當視頻剪輯510完成播放時,程序自動前進到標記A』的視頻剪輯,即視頻剪輯520。
可選地,可以採用快取機制幫助視頻剪輯的平滑播放。
在本發明的部分實施例,從伺服器傳送到用戶設備的視頻,是混合預先計算的視頻(儲存和再次播放的視頻剪輯)和實時產生的視頻串流(尚未儲存為具有元數據的視頻剪輯的視頻)。
在上面的描述中,參考串流多媒體封裝格式,如MPEG2-TS。應當理解,本發明的實施例不限於MPEG2-TS,而是可以採用各種各樣串流封裝格式的任何一種,包含但不限於3GP、ASF、AVI、DVR-MS、Flash Video(FLV,F4V)、IFF、Matroska(MKV)、MJ2、QuickTime文件格式、MPEG節目串流、MP4、Ogg和RM(RealMedia封裝)。實施例在沒有標準化封裝格式下的運作也是被預期的。
從線性視頻連結到交互式視頻腳本
元數據播放列表如元數據播放列表5000也可以被認為代表「交互式視頻腳本」。也就是說,元數據播放列表5000表示確定,作為用戶輸入的功能,視頻「腳本」將採取的方向。因此,在圖5的例子裡,在步驟520,若選擇項目2,視頻腳本繼續視頻剪輯ID=B』的內容,而如果按下按鈕X,視頻腳本繼續視頻剪輯ID=B的內容。這與傳統的「線性」視頻相反(或「線性播放」視頻)。「線性視頻」或「線性播放視頻」在本文定義為傳統視頻,只從開始播放到結束,可能受到典型媒體播放器用戶的控制,如快速前進或倒帶能力在相同的線性視頻來回移動。
有時可能需要利用線性播放視頻和交互式視頻腳本的組合。例如,可能期望從線性視頻連結到交互式視頻腳本,或在線性播放和交互式視頻腳本間切換(可能在之間來回切換)。此外,在一些情況下,可能期望從線性視頻連結到交互式視頻腳本中的特定位置,例如為了播放交互式視頻腳本的特定部分。
作為一個例子,考慮通過雲遊戲伺服器提供的一組遊戲的廣告,廣告的播放可以通過用戶點擊網站上作為服務的視頻廣告連接啟動。視頻廣告接著開始如傳統線性播放視頻播放。然而,在線性視頻的一個或多個點,用戶被邀請體驗玩實際的遊戲,然後用戶執行觸發動作經由交互式視頻腳本啟動遊戲的進行。根據,例如,觸發動作,播放可以從交互式視頻腳本的開始而啟動,或從在交互式視頻腳本中的一些其他位置。再次參考圖5,播放可能在510視頻剪輯ID=A的播放開始,但是備選地可能在530視頻剪輯ID=B的播放開始。在遊戲結束時(或在進一步的特定用戶輸入)交互式腳本終止,可選地,線性視頻播放可以在視頻腳本終止後恢復。
在上述情況下,一個重要的挑戰是識別基於用戶輸入觸發動作啟動的特定遊戲(或遊戲的部分、或遊戲內的位置)。這個問題的一個解決方案是提供與用戶互動觸發發送的當前播放的時間戳。時間戳標識在用戶互動時正被觀看的線性視頻部分。然後要求的遊戲在線性視頻播放時被辨認為被特徵化的遊戲。
圖6顯示一個示例系統,用於根據本發明的一些實施例從線性視頻連結到交互式視頻腳本。在圖6的系統,例如,用戶操作用戶設備606可以啟動線性視頻的播放,例如通過點擊屏幕607上顯示網頁的連結。用戶設備606可以是,例如,膝上型計算機、平板或智能型手機。在一些實施例,線性視頻可以經由視頻串流基礎設施602提供。視頻串流基礎設施602可以對應到,例如,視頻串流基礎設施2000,包括CDN200和網絡數據中心210-260,如圖2所示。
在線性視頻播放的任何時間,用戶可以觸發交互式視頻腳本的播放。可選地,用戶可以從腳本內的任何位置開始觸發交互式視頻腳本的播放。多種用戶動作的任一種可以用作觸發機制,包括例如選擇選單項目、點擊連結、按壓實體按鈕或說出語音命令。作為一個示例,用戶可以通過觸碰屏幕位置608(在圖中標識為「T」用作觸發)觸發交互式視頻腳本的播放。在線性視頻播放期間觸碰屏幕位置608,將觸髮腳本請求的發送。在一些實施例,腳本請求包括時間戳。
時間戳的目的是識別基於當線性視頻開始播放,已經消逝的時間量而被請求的特定視頻腳本。例如,在上述廣告場景中,在T1秒的請求可以識別對應到多媒體互動遊戲G1的腳本,因為線性廣告在時間T1呈現該遊戲的特徵。在其他實施例,特定視頻腳本通過另一個機制識別。在一些實施例,特定視頻腳本通過點擊選單項目識別,在一些實施例,特定視頻腳本通過按壓實體按鈕識別,或經由語音命令。在一些實施例,時間戳或其他機制用於不僅是識別特定視頻腳本,而且識別視頻腳本內的特定開始位置。
一旦從時間戳識別特定的腳本,對應到選擇腳本的遊戲播放可以開始。播放將根據如上述的過程進行,例如結合圖5。也就是說,對應遊戲的視頻剪輯將以儲存元數據和當前用戶互動確定的順序播放。雖然已經描述遊戲的例子,應當理解互動內容的其他形式可以用類似的方式傳送。
在圖6,顯示交互式視頻腳本傳送通過交互式視頻分配基礎設施604。如上面結合圖2討論的,這是可能並想要的,傳送視頻剪輯通過存在的視頻串流基礎設施2000。在這種情況下,視頻串流基礎設施602和交互式視頻分配基礎設施604都對應到存在的視頻串流基礎設施2000。在其他實施例中,對應到選擇的交互式視頻腳本的視頻剪輯通過網絡直接串流到用戶設備606,如網際網路,而不使用視頻串流基礎設施或交互式視頻分配基礎設施。
圖7是描述從線性視頻連結到交互式視頻腳本示例過程的流程圖,例如,視頻廣告。
在步驟710,用戶點擊在網頁上對應到線性視頻廣告的連結。在步驟720,線性視頻廣告經由視頻串流基礎設施播放。在決策框730,若線性視頻廣告已經結束,控制移轉到決策框790並且處理結束。如果尚未結束並繼續播放,在決策框740,系統監控觸發。如果沒有偵測到觸發,繼續線性播放。
如果偵測到觸發,在步驟750在觸發動作的視頻播放時間從與該觸發傳送的時間戳計算。在步驟760基於計算的播放時間選擇特定的交互式視頻腳本。如上所述,可以替代地採用其他機制來選擇特定的交互式視頻腳本。此外,如上所述,時間戳或其他機制可以選擇地使用來識別在特定交互式視頻腳本內的特定開始位置。
在步驟770播放選擇的交互式視頻腳本,交互式視頻腳本的播放可以,例如,通常以在結合上面圖5討論的元數據播放列表實施例的方法進行。在決策框780,如果腳本尚未結束,繼續播放。如果腳本已經結束,控制移轉到決策框790,並且進程結束。
儘管,在圖7的實施例,當交互式視頻腳本結束,進程終止,其他的實施例構想線性視頻可以在交互式視頻腳本結束後繼續觀看。還構想了其他實施例,用戶可以在線性視頻和交互式視頻間任意次數切換觀看。其他實施例構想用戶可以在多個線性視頻的任何一個和第二個多個交互式視頻腳本的任何一個間切換觀看。
儘管上面已經描述了一些示例性實施例,但本技術領域人員將了解,在不脫離本發明的精神和範圍的情況下,許多修改和變化是可能的。因此,所有這些修改和變化是預期包含在發明請求的範圍內。