本文作者:kaifamei

直播流的字幕處理方法、裝置及直播流的播放方法、裝置與流程

更新時間:2025-12-25 15:49:30 0條評論

直播流的字幕處理方法、裝置及直播流的播放方法、裝置與流程



1.本技術涉及計算機技術領域,具體涉及一種直播流的字幕處理方法、裝置及直播流的播放方法、裝置。


背景技術:



2.隨著互聯網技術的不斷發展,視頻直播已經成為當下最受歡迎的信息傳播媒介之一。直播一向是實時內容,無法像點播視頻一般預先制作字幕。但大部分人由于觀看電影、電視劇、點播等有字幕視頻的習慣,以及一些主播口音、語言的原因,或者觀眾當前所處的環境無法聽到聲音時,字幕將會給觀眾帶來極大的便利和更高的觀看體驗。然而,現有的字幕處理技術有的無法精準對齊到幀級別、而且成本高,有的會增加延遲,降低了直播中的即時互動性。


技術實現要素:



3.本技術的目的是提供一種直播流的字幕處理方法、裝置及直播流的播放方法、裝置,以解決現有技術存在的由于字幕處理而增加的延遲,造成的劣化了直播中的即時互動體驗,導致用戶觀看直播體驗差等問題。
4.根據本技術實施例的一個方面,提供了一種直播流的字幕處理方法,包括:
5.獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定字幕信息對應的字幕時間戳;
6.根據字幕信息對應的字幕時間戳,確定目標視頻幀;
7.計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳偏移值,將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中;
8.將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流。
9.根據本技術實施例的另一方面,提供了一種直播流的播放方法,包括:
10.獲取直播流,對直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包,對視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息;
11.根據字幕時間戳偏移值及目標視頻幀的視頻幀時間戳確定字幕信息對應的字幕時間戳;
12.根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理,根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
13.根據本技術實施例的另一方面,提供了一種直播流的字幕處理裝置,包括:
14.語音轉寫處理模塊,適于獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定字幕信息對應的字幕時間戳;
15.確定模塊,適于根據字幕信息對應的字幕時間戳,確定目標視頻幀;
16.計算模塊,適于計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳
偏移值;
17.寫入模塊,適于將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中;
18.封包推流模塊,適于將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流。
19.根據本技術實施例的另一方面,提供了一種直播流的播放裝置,包括:
20.獲取模塊,適于獲取直播流;
21.分包模塊,適于對所述直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包;
22.解析模塊,適于對視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息;
23.第一確定模塊,適于根據字幕時間戳偏移值及目標視頻幀的視頻幀時間戳確定字幕信息對應的字幕時間戳;
24.對齊模塊,適于根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理;
25.播放模塊,適于根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
26.根據本技術實施例的又一方面,提供了一種計算設備,包括:處理器、存儲器、通信接口和通信總線,處理器、存儲器和通信接口通過通信總線完成相互間的通信;
27.存儲器用于存放至少一可執行指令,可執行指令使處理器執行上述直播流的字幕處理方法對應的操作或執行上述直播流的播放方法對應的操作。
28.根據本技術實施例的再一方面,提供了一種計算機存儲介質,存儲介質中存儲有至少一可執行指令,可執行指令使處理器執行如上述直播流的字幕處理方法對應的操作或執行上述直播流的播放方法對應的操作。
29.根據本技術實施例提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。
30.上述說明僅是本技術技術方案的概述,為了能夠更清楚了解本技術的技術手段,而可依照說明書的內容予以實施,并且為了讓本技術的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本技術的具體實施方式。
附圖說明
31.通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本技術的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
32.圖1示出了根據本技術中的一個實施例的直播流的字幕處理方法的流程示意圖;
33.圖2a示出了根據本技術中的另一個實施例的直播流的字幕處理方法的流程示意圖;
34.圖2b為直接從主播推流端工具采集音視頻數據進行字幕處理的示意圖;
35.圖2c為對第三方推流工具推送的直播流進行字幕處理的示意圖;
36.圖3示出了根據本技術中的一個實施例的直播流的播放方法的流程示意圖;
37.圖4a示出了根據本技術中的另一個實施例的直播流的播放方法的流程示意圖;
38.圖4b為直播流播放的示意圖;
39.圖4c為字幕信息的流動過程的信令圖一;
40.圖4d為字幕信息的流動過程的信令圖二;
41.圖5示出了根據本技術中的一個實施例的直播流的字幕處理裝置的結構示意圖;
42.圖6示出了根據本技術中的一個實施例的直播流的播放裝置的結構示意圖;
43.圖7示出了根據本技術中的一個實施例的計算設備的結構示意圖。
具體實施方式
44.下面將參照附圖更詳細地描述本技術的示例性實施例。雖然附圖中顯示了本技術的示例性實施例,然而應當理解,可以以各種形式實現本技術而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本技術,并且能夠將本技術的范圍完整的傳達給本領域的技術人員。
45.首先,對本技術一個或多個實施例涉及的名詞術語進行解釋。
46.分布式網絡:由分布在不同地點且具有多個終端的節點機互連而成。網中任一點均至少與兩條線路相連,當任意一條線路發生故障時,通信可轉經其他鏈路完成,具有較高的可靠性。同時,網絡易于擴充。
47.延遲:指從捕獲視頻到在觀看者設備上的顯示延遲。
48.字幕信息:指以文字形式顯示電視、電影、舞臺作品、直播中的對話等非影像內容。
49.sei:即補充增強字段(supplemental enhancement information),提供了向視頻碼流中加入額外信息的方法,是h.264/h.265視頻壓縮標準的特性之一。視頻編碼器在輸出視頻碼流的時候可以不提供sei信息。并且也可能在視頻傳輸、解封裝、解碼這些環節由于某種原因丟棄sei內容。包含sei信息的視頻內容可以經過傳輸鏈路到達消費端進行任意擴展。
50.實時語音轉寫服務:將不限時長的音頻流實時識別為文字,并返回帶有時間戳的文字流。
51.本技術的發明人發現,在直播流的字幕處理方面,現有技術主要是通過如下方法來實現的:
52.方法一:將字幕做一個單獨的服務部署給所有用戶連接訪問,像彈幕服務器一樣,通過實時語音轉寫服務,發送到字幕服務器,然后字幕服務器將該字幕轉發給所有用戶。這個方案雖然能實現一般的字幕功能,但有很多局限性。作為中心式的字幕服務器面對的問題有:1.網絡環境復雜:廣大地區眾多不同運營商網絡的用戶,單服務器網絡環境復雜,易丟失,到達率偏低;2.時間戳對齊復雜:不僅要考慮網絡緩沖、源視頻和彈幕時間戳以及轉碼視頻時間戳對齊較為復雜且無法精準對齊到幀級別;3.成本較高:高速的穩定的服務器帶寬出口價格昂貴,成本壓力大。
53.方法二:通過將字幕渲染至視頻畫面實現,做法是將采集好的音視頻數據緩存到內存中,將音頻數據送入實時語音轉寫服務,等待轉寫好的文字流,將文字流對齊時間戳硬
渲染到視頻畫面中,再編碼推流出去,達到直播中帶有字幕的效果。但此方案增加了延遲,降低了即時互動性,導致用戶在直播中最關鍵的互動環節體驗較差。
54.本技術的發明人為了有效解決上述問題,提出了直播流的字幕處理方案及直播流的播放方案。
55.圖1示出了根據本技術中的一個實施例的直播流的字幕處理方法的流程示意圖。如圖1所示,該方法包括以下步驟:
56.步驟s101,獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定字幕信息對應的字幕時間戳。
57.本實施例提供的直播流的字幕處理方法可以在直播過程中的任意時刻執行字幕處理。例如,設置有相應的字幕處理按鈕,用戶通過點擊該按鈕發送字幕處理請求;也可以通過語音控制方式來發送字幕處理請求,根據用戶(比如,主播)觸發的字幕處理請求進行直播流的字幕處理,這里不做具體限定。
58.其中,待處理音頻數據是指字幕處理開始后,存在語音轉寫需求的音頻數據,例如,待處理音頻數據可以是字幕處理開始后,在任意時刻從麥克風處采集到的聲音;或者是第三方推流的視頻中的聲音。
59.具體地,獲取直播流的待處理音頻數據,在獲取到直播流的待處理音頻數據之后,對該待處理音頻數據進行語音轉寫處理,例如,可以通過自然語音識別技術(automaticspeech recognition,asr)將音頻數據轉換成文字,所得到的文字稱為待處理音頻數據對應的字幕信息,當然,還可以通過其他技術手段,這里不做具體限定。并確定所得到的字幕信息對應的字幕時間戳,字幕時間戳是字幕信息開始顯示的時間。
60.步驟s102,根據字幕信息對應的字幕時間戳,確定目標視頻幀。
61.語音轉寫處理過程是存在耗時的,直播流是實時進行推流的,不需要等待語音轉寫的處理結果,因此,可能出現語音轉寫處理得到字幕信息后,與該字幕信息在時間戳上對齊的視頻幀及相關的音頻數據已經被推流。
62.為了保證用戶觀看的同步性,避免視頻流和字幕流的緩沖情況,本實施例是將字幕信息寫入到視頻幀的補充增強字段中,因此,就需要確定將字幕信息寫入到哪個視頻幀的補充增強字段中,具體是根據字幕信息對應的字幕時間戳,確定目標視頻幀。
63.步驟s103,計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳偏移值,將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中。
64.由于語音轉寫處理需要耗時,而直播流在實時推流時,并不需要等待語音轉寫出來的結果,從而導致字幕信息對應的字幕時間戳與目標視頻幀的視頻幀時間戳不一致,為了便于在視頻播放階段確定字幕信息應該與哪個視頻幀同時顯示,本步驟需要計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳偏移值,字幕時間戳偏移值是字幕信息相對于目標視頻幀偏移的時長,然后,將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中,通過將字幕時間戳偏移值寫入到目標視頻幀的補充增強字段中,便于后續直播流播放時,實現字幕信息在直播系統的幀對齊。
65.這里是將字幕時間戳偏移值寫入到補充增強字段(sei信息)中,而不是將絕對的字幕時間戳寫入到sei信息中,是為了簡單方便快捷的支持轉碼流確定字幕,由于寫入的是字幕時間戳偏移值,因此,在轉碼時只需要將源直播流的視頻幀中的sei信息直接拷貝到轉
碼后的直播流中視頻幀時間戳最接近的視頻幀中,即在轉碼后的直播流中仍舊可以實現幀級別對齊的字幕。轉碼后的直播流中的視頻幀的視頻幀時間戳可能與源直播流的視頻幀的視頻幀時間戳并不對應,如果將絕對的字幕時間戳寫入到源直播流的視頻幀中的sei信息,很可能出現在轉碼后,字幕信息對應的字幕時間戳與轉碼后的直播流中的視頻幀的視頻幀時間戳不對應,從而影響字幕信息的顯示。另外,轉碼時可能會出現視頻幀減少的情況,如果將絕對的字幕時間戳寫入到源直播流的視頻幀中的sei信息,很可能由于視頻幀的減少而影響字幕信息的顯示。
66.步驟s104,將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流。
67.在根據步驟s103對目標視頻幀進行處理后,將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流,其中,目標視頻幀對應的音頻數據是在時間戳上與目標視頻幀的視頻幀時間戳對齊的音頻數據。
68.本技術提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。
69.圖2a示出了根據本技術中的另一個實施例的直播流的字幕處理方法的流程示意圖。如圖2a所示,該方法包括以下步驟:
70.步驟s201,獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息。
71.本步驟與圖1所示實施例中的步驟s101中的部分步驟類似,這里不再贅述。
72.步驟s202,記錄字幕處理開始時音頻數據輸入至語音轉寫服務的輸入時間戳。
73.語音轉寫服務在進行語音轉寫處理時,可能會有其獨立的時間記錄方式,與音頻數據對應的時間戳并不相同,例如,語音轉寫服務可能從0開始計時,而輸入至語音轉寫服務的音頻數據的時間戳可能是從3秒開始,是兩個不同維度的計時方式。
74.因此,在字幕處理開始時,需要記錄首次將音頻數據輸入至語音轉寫服務的輸入時間戳,該輸入時間戳是以字幕處理開始時輸入至語音轉寫服務的音頻數據的時間戳來進行定義的,比如,在字幕處理開始時,將第3秒的音頻數據輸入至語音轉寫服務,那么輸入時間戳記為3秒,這里僅是舉例說明,不具有任何限定作用。
75.步驟s203,根據輸入時間戳及待處理音頻數據的語音轉寫時間戳確定字幕信息對應的字幕時間戳,以數據鍵值對形式將字幕信息及對應的字幕時間戳存儲至字幕隊列中。
76.在確定了待處理音頻數據對應的字幕信息后,需要確定字幕信息對應的字幕時間戳,具體地,可以根據輸入時間戳及待處理音頻數據的語音轉寫時間戳確定字幕信息對應的字幕時間戳,例如,將輸入時間戳與待處理音頻數據的語音轉寫時間戳求和,得到字幕信息對應的時間戳。其中,待處理音頻數據的語音轉寫時間戳為語音轉寫服務對待處理音頻數據開始進行語音轉寫處理的時間戳。比如,輸入時間戳為3秒,待處理音頻數據的語音轉寫時間戳為2秒,那么可以確定字幕信息對應的時間戳為5秒,也就是說,是對第5秒的音頻數據進行語音轉寫處理;待處理音頻數據的語音轉寫時間戳為5秒,那么可以確定字幕信息對應的時間戳為8秒,也就是說,是對第8秒的音頻數據進行語音轉寫處理。
77.在確定了字幕信息對應的字幕時間戳之后,以數據鍵值對(key-value)形式將字幕信息及對應的字幕時間戳存儲至字幕隊列中。其中,數據鍵值對中的數據鍵(key)為字幕
時間戳,數據鍵對應的數據值(value)為字幕信息。
78.步驟s204,將即將推流的視頻幀中視頻幀時間戳與字幕時間戳之間的差值最小的視頻幀確定為目標視頻幀。
79.語音轉寫處理過程是存在耗時的,直播流是實時進行推流的,不需要等待語音轉寫的處理結果,因此,可能出現語音轉寫處理得到字幕信息后,與該字幕信息在時間戳上對齊的視頻幀及相關的音頻數據已經被推流。
80.為了保證用戶觀看的同步性,避免視頻流和字幕流的緩沖情況,本實施例是將字幕信息寫入到視頻幀的補充增強字段中,因此,就需要確定將字幕信息寫入到哪個視頻幀的補充增強字段中,而為了在緩沖區較小時依舊能夠顯示字幕,則字幕信息應該盡快地寫入到編碼完成的視頻幀中,具體是通過計算即將推送的視頻幀的視頻幀時間戳與字幕時間戳之間的差值,將差值最小的視頻幀確定為目標視頻幀。差值最小的視頻幀就是字幕信息完成之后剛剛編碼完成的視頻幀,即所確定的目標視頻幀。其中,目標視頻幀為識別到字幕信息后的下一個編碼完成的視頻幀。
81.步驟s205,計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳偏移值,將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中。
82.本步驟與圖1所示實施例中的步驟s103類似,這里不再贅述。其中,目標視頻幀相對于字幕信息所對齊的視頻幀是靠后的,因此目標視頻幀的視頻幀時間戳大于字幕時間戳,字幕時間戳偏移值=字幕時間戳-目標視頻幀的視頻幀時間戳,字幕時間戳偏移值為負數。
83.通過將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中,可以有效降低延遲,在直播流播放時能夠盡快實現字幕顯示,而無需等待太長時間,保證了互動及時性。
84.需要說明的是,補充增強字段還可以包括:音頻數據標識、轉寫識別結果標識、字幕持續時間、用戶信息。
85.在寫入時,可以按照預設格式寫入目標視頻幀的sei信息中,其中,表1為sei包含的數據格式定義。
86.表1:
87.音頻數據標識轉寫識別結果標識字幕時間戳偏移值字幕信息字幕持續時間用戶信息
88.其中,音頻數據標識(id),用于標識一條音頻數據,同一句話具有相同的音頻數據標識,不同的音頻數據對應的音頻數據標識不同。
89.轉寫識別結果標識(type),用于對語音轉寫識別結果進行標識,主要分為中間轉寫結果標識或最終轉寫結果標識,中間轉寫結果標識用于說明對音頻數據進行語音轉寫,識別出了一句話的部分文字,而未完整地識別出該句話的全部文字,這里在識別出中間結果后也進行了字幕信息寫入sei信息的操作,可以提高字幕信息顯示的實時性,在播放的緩沖區較小時,通過顯示中間轉寫結果可以達到同步顯示的效果;最終轉寫結果標識用于說明對音頻數據進行語音轉寫,完整地識別出了一句話的全部文字,在播放的緩沖區較大時,通過顯示最終轉寫結果可以達到像平時看電影看點播視頻時的文字在說話時就顯示完整的效果。
90.字幕時間戳偏移值(offsettimems),當前音頻數據對應的字幕時間戳相較于目標
視頻幀的視頻幀時間戳的差值,這里寫入字幕時間戳偏移值,方便轉碼,而且便于在播放時計算顯示字幕的視頻幀時間戳。
91.字幕信息(text),語音轉寫識別出來的文字,字幕信息可以是中間轉寫結果或者是最終轉寫結果,無論是中間轉寫結果或者是最終轉寫結果,都是全量填充識別文字,方便每次中間結果的變更修正能及時顯示。
92.字幕持續時間(durationms),用于表示字幕信息的持續時間,字幕信息該于何時消失。
93.用戶信息,用于對識別用戶身份,比如可以提前錄制一段聲音用于記錄用戶的聲紋,在實時語音轉寫過程中,不僅轉換為文字,也可識別出用戶身份并在字幕中予以顯示。
94.此外,sei信息中還可以包含其他自定義的擴展信息,例如,字幕信息的翻譯文本,可以對轉換好的字幕信息提供翻譯,以滿足多語言字幕的功能,當然,還可以根據業務需求包含其他信息。
95.步驟s206,將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流。
96.在對目標視頻幀進行處理后,將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流,其中,目標視頻幀對應的音頻數據是在時間戳上與目標視頻幀的視頻幀時間戳對齊的音頻數據。在本實施例中,目標視頻幀是經過視頻編碼處理的視頻幀,目標視頻幀對應的音頻數據也是經過音頻編碼處理后的,其中,具體的編碼處理過程這里不做詳細贅述。
97.本實施例在語音轉寫時,隨即將該待處理音頻數據送入音效等其他流水線處理后進行編碼,不需要等待實時語音轉寫服務返回字幕信息,這是一個異步過程,只需要實時接收語音轉寫服務的回調即可,同樣地,將待處理音頻數據對應的視頻幀送入濾鏡等其他流水線處理后進行編碼,即,該方法還包括:對待處理音頻數據進行音頻編碼處理;對待處理音頻數據對應的視頻幀進行視頻編碼處理,其中,音頻編碼處理過程、視頻編碼處理過程、語音轉寫處理過程為異步過程。
98.圖2b為直接從主播推流端工具采集音視頻數據進行字幕處理的示意圖。在圖2b中,畫面即為從主播推流端工具采集的視頻數據,聲音為從主播推流端工具(例如,麥克風)采集的音頻數據,畫面和聲音對都應有各自的時間戳,方便進行對齊,針對采集到的畫面會進行濾鏡等處理,在處理后輸入至視頻編碼器中進行視頻編碼處理,針對采集到的聲音會進行音效等處理,例如,添加音效等,在處理后輸入至音頻編碼器進行音頻編碼處理,而采集到的聲音會按照規定格式送入至實時語音轉寫服務中,上述處理過程是異步處理過程,不需要等待實時語音轉寫服務返回結果,只需要實時接收語音轉寫服務的回調即可。對音頻數據進行轉寫后得到字幕信息,確定字幕信息對應的字幕時間戳,然后,計算字幕時間戳偏移值,將字幕時間戳偏移值及字幕信息寫入視頻幀(該視頻幀是視頻幀時間戳與字幕時間戳之間差值最小的即將推流的視頻幀)的sei中,然后進行封包推流。
99.圖2c為對第三方推流工具推送的直播流進行字幕處理的示意圖。針對第三方推送的直播流,可以在云端或者導播臺為其添加字幕,可以直接在云端或導播臺拉取主播使用第三方工具或者其他來源的直播流進行添加字幕。其基本流程和圖2b在流程上稍有不同,數據處理基本一致,具體處理過程不再贅述。如圖2c所示,會經過如下流程:1.將拉取到的直播流進行拆分,拆分為視頻包和音頻包。2.將音頻包送入音頻解碼器,將解碼后的音頻數
據送入實時語音轉寫服務,異步接受回調進行處理。3.同時重新進行封包,對字幕回調進行插入處理,然后重新推流。這里不需要將視頻數據進行解碼后再將字幕渲染至畫面然后重新編碼封包推流,不僅節省機器性能,也節省了編解碼時間,僅異步地將音頻包解碼進行識別。直播流在該場景中只是經歷了拆包封包,耗時幾乎可以忽略,達到了無新增直播延遲的目標。
100.本技術提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,且對齊方式簡單,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。由于不需要中心式的字幕服務器去轉發字幕消息,而是復用視頻流的分布式網絡傳輸鏈路,不僅不需要直接面對復雜多變的網絡環境,也不會額外增加中心服務器的帶寬成本,且字幕信息嵌在視頻流的擴展字段sei中,不需要分別考慮視頻流和字幕流的緩沖情況,確保了觀看的同步性,且能夠提供幀級別的字幕對齊,觀看體驗良好。直播流會在云端保存,以符合直播規范,也可以方便的進行二創、投稿等,提升主播影響力,此時,字幕無縫保存在錄像文件中,可以隨著錄像文件一起切割、剪輯、合并等,提供了極大的方便性。
101.圖3示出了根據本技術中的一個實施例的直播流的播放方法的流程示意圖。如圖3所示,該方法包括以下步驟:
102.步驟s301,獲取直播流,對直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包,對視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息。
103.具體地,用戶進入直播間觀看直播,即認為存在直播流播放需求,因此,需要獲取直播流,為了實現字幕信息的同步顯示,在獲取直播流后,對所獲取的直播流進行分包處理,通過分包處理,可以得到包含視頻幀的視頻包及包含音頻數據的音頻包。字幕信息是寫入到目標視頻幀中的補充增強字段中,因此,對視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息。這里的目標視頻幀是補充增強字段中寫有字幕時間戳偏移值及字幕信息的視頻幀。其中,字幕時間戳偏移值是字幕信息相對于目標視頻幀偏移的時長。
104.步驟s302,根據字幕時間戳偏移值及目標視頻幀的視頻幀時間戳確定字幕信息對應的字幕時間戳。
105.目標視頻幀對應有其視頻幀時間戳,用于標識目標視頻幀的顯示時間。因此,在確定了字幕時間戳偏移值之后,可以根據字幕時間戳偏移值及目標視頻幀的視頻幀時間戳確定字幕信息對應的字幕時間戳,其中,字幕時間戳指字幕信息的顯示時間。
106.步驟s303,根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理,根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
107.在確定了字幕信息對應的字幕時間戳之后,可以根據字幕時間戳確定字幕信息的顯示時間,通常情況下,字幕信息對應著相應的音頻數據和視頻幀,每條音頻數據對應有相應的音頻時間戳,每個視頻幀對應有相應的視頻幀時間戳,因此,可以根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理,對齊處理是查詢音頻時間戳、視頻幀時間戳與字幕時間戳最相近的音頻數據和視頻幀,在對齊處理后,根據字幕信
息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
108.本技術提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本,另外,字幕信息是外嵌渲染在播放的視頻幀上,因此,觀看用戶可以根據實際觀看需要而選擇顯示字幕信息或不顯示字幕信息,例如,設置了字幕開關控制字幕信息的顯示或不顯示。
109.圖4a示出了根據本技術中的另一個實施例的直播流的播放方法的流程示意圖。如圖4a所示,該方法包括以下步驟:
110.步驟s401,獲取直播流,根據緩沖區大小,動態將直播流緩存至緩沖區中,對緩沖區中的直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包。
111.具體地,用戶進入直播間觀看直播,即認為存在直播流播放需求,因此,需要獲取直播流,為了流暢的觀看體驗,通常會設置緩沖區,緩沖區動態存儲直播流,然后,對緩沖區中的直播流進行分包處理,通過分包處理,可以得到包含視頻幀的視頻包及包含音頻數據的音頻包。
112.步驟s402,對緩沖區中目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息。
113.字幕信息是寫入到目標視頻幀中的補充增強字段中,因此,需要對緩沖區中視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息。這里的目標視頻幀是補充增強字段中寫有字幕時間戳偏移值及字幕信息的視頻幀。其中,字幕時間戳偏移值是字幕信息相對于目標視頻幀偏移的時長。
114.步驟s403,將字幕時間戳偏移值與目標視頻幀的視頻幀時間戳進行求和計算,得到字幕信息對應的字幕時間戳,以數據鍵值對形式將字幕信息及對應的字幕時間戳存儲至字幕隊列中。
115.目標視頻幀對應有其視頻幀時間戳,用于標識目標視頻幀的顯示時間。字幕時間戳偏移值是負數,因此,在得到字幕時間戳偏移值之后,可以將字幕時間戳偏移值與目標視頻幀的視頻幀時間戳相加,求得字幕信息對應的字幕時間戳,其中,字幕時間戳指字幕信息的顯示時間。
116.在得到字幕信息對應的字幕時間戳之后,以數據鍵值對形式將字幕信息及對應的字幕時間戳存儲至字幕隊列中。其中,所述數據鍵值對中的數據鍵為字幕時間戳,所述數據鍵對應的數據值為字幕信息。
117.步驟s404,判斷字幕信息對應的字幕時間戳與待播放視頻幀的視頻幀時間戳之間的時間差值是否小于或等于預設時長;若是,則執行步驟s406。
118.具體地,可能存在字幕信息對應的字幕時間戳與視頻幀時間戳不是完全一致的情況,因此,預先設置了一間隔時長,例如,1000ms/幀數,計算字幕信息對應的字幕時間戳與待播放視頻幀的視頻幀時間戳之間的時間差值,將該時間差值與預設時長進行比較,以確定時間差值是否小于或等于預設時長。
119.步驟s405,根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理。
120.若時間差值小于或等于預設時長,可以確定字幕信息對應著待播放視頻幀,字幕
信息對應著相應的音頻數據和視頻幀,每條音頻數據對應有相應的音頻時間戳,每個視頻幀對應有相應的視頻幀時間戳,因此,可以根據字幕信息對應的字幕時間戳執行音頻數據與視頻幀的對齊處理,對齊處理是查詢音頻時間戳、視頻幀時間戳與字幕時間戳最相近的音頻數據和視頻幀。
121.步驟s406,根據字幕隊列中字幕時間戳對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
122.在對齊處理后,可以根據字幕時間戳查詢字幕隊列,查到字幕時間戳對應的字幕信息,根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
123.在本技術一種可選實施方式中,補充增強字段還包括:音頻數據標識;
124.在根據字幕時間戳偏移值及目標視頻幀的視頻幀時間戳確定字幕信息對應的字幕時間戳之后,方法還包括:
125.以數據鍵值對形式將具有相同音頻數據標識的字幕信息及對應的字幕時間戳存儲至字幕隊列中,其中,同一音頻數據標識的字幕信息對應的字幕時間戳相同;
126.根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放進一步包括:
127.若字幕隊列中的字幕時間戳對應著多個字幕信息,則從字幕隊列中選取最新存儲的字幕信息;
128.根據選取的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
129.針對音頻數據,可能是經過多次語音轉寫才完整識別到其字幕信息,而為了滿足同步性,會將中間識別出的字幕信息也寫入到目標視頻幀的補充增強字段中,因此,針對同一音頻數據,可能解析到多條字幕信息,因此,在識別出字幕信息后,是以數據鍵值對形式將具有相同音頻數據標識的字幕信息及對應的字幕時間戳存儲至字幕隊列中,其中,同一音頻數據標識的字幕信息對應的字幕時間戳相同,而在視頻播放時,從字幕隊列中選取最新存儲的字幕信息,根據選取的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
130.在本技術一種可選實施方式中,補充增強字段還包括:轉寫識別結果標識,轉寫識別結果標識包含中間轉寫結果標識或最終轉寫結果標識;
131.根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放進一步包括:
132.若解析到最終轉寫結果標識,則根據最終轉寫結果標識對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放;
133.若未解析到最終轉寫結果標識且解析到中間轉寫結果標識,則根據中間轉寫結果標識對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
134.轉寫識別結果標識用于對語音轉寫識別結果進行標識,主要分為中間轉寫結果標識或最終轉寫結果標識,中間轉寫結果標識用于說明對一條音頻數據進行語音轉寫,識別出了該音頻數據的部分文字,而未完整地識別出該音頻數據的全部文字;最終轉寫結果標識用于說明對一條音頻數據進行語音轉寫,完整地識別出了該音頻數據的全部文字。
135.因此,這里需要識別從補充增強字段中解析出的是最終轉寫結果標識還是中間轉
寫結果標識,若解析到最終轉寫結果標識,則在視頻播放時顯示最終轉寫結果標識對應的字幕信息;若未解析到最終轉寫結果標識且解析到中間轉寫結果標識,則在視頻播放時顯示中間轉寫結果標識對應的字幕信息。
136.若中間轉寫結果標識對應的多個字幕信息,則在視頻播放時顯示最新的中間結果。
137.其中,在視頻播放時,顯示最終結果還是中間結果,與緩沖區大小相關,緩沖區大時,緩沖區中的目標視頻幀的補充增強字段中寫入有最終轉寫結果標識,那么在視頻播放時顯示最終轉寫結果標識對應的字幕信息;緩沖區小時,緩沖區中的目標視頻幀的補充增強字段中寫入有中間轉寫結果標識且未解析到最終轉寫結果標識,則在視頻播放時顯示中間轉寫結果標識對應的字幕信息。
138.在本技術一種可選實施方式中,補充增強字段還包括:字幕持續時間,方法還包括:根據字幕持續時間確定視頻播放時字幕信息的消失時間。
139.具體地,字幕持續時間表示字幕信息的持續時間,字幕信息該于何時消失,在從補充增強字段中提取出字幕持續時間后,可以根據字幕持續時間來確定字幕信息的消失時間,從而在進行視頻播放時,可以確定該字幕信息應該在何時消失。
140.在本技術一種可選實施方式中,補充增強字段還包括:用戶信息;方法還包括:在視頻播放時顯示字幕信息對應的用戶信息。
141.具體地,用戶信息用于對識別用戶身份,比如可以是用戶聲紋或用戶名稱等,從補充增強字段中提取出用戶信息,在視頻播放時顯示字幕信息對應的用戶信息,從而便于分辨哪條字幕信息是哪個用戶說出的,這里的用戶主要是指主播,而用戶信息則對應的為主播信息。
142.圖4b為直播流播放的示意圖。在圖4b中,在視頻輸入后,先對視頻進行分包處理,得到視頻包和音頻包,從對視頻包中的視頻幀的sei進行解析,得到字幕信息及字幕時間戳偏移值,根據字幕時間戳偏移值計算字幕時間戳,字幕信息與對應的字幕時間戳存入字幕隊列,視頻解碼器對視頻幀進行解碼,音頻解碼器對音頻數據進行解碼,然后根據字幕時間戳進行音視頻對齊,在字幕隊列中根據字幕時間戳查對應的字幕信息,根據字幕信息與對齊的音視頻進行視頻播放。
143.圖4c為字幕信息的流動過程的信令圖一,在圖4c中,是以直接采集主播推流端工具的音視頻數據為例進行說明,以25fps為例,每次的采集到的均為1幀畫面和聲音,此處將1秒的音視頻數據做聚合以簡化流程,最上端為第一幀,最下端為第25幀,假定實時語音轉寫服務需要1s數據才能夠開始提供結果,假定緩沖區為2s來顯示直播內容,按此耗時來描述字幕信息的流動過程,其中,video為視頻幀,audio為音頻數據。在圖4c中,主要是按照時間以單個視頻幀為例進行說明,并涉及到如下模塊:音視頻采集模塊、實時語音轉寫服務、編碼模塊、cdn、用戶拉流模塊、用戶播放模塊。圖4c主要分為采集流程和播放回調查詢字幕流程。
144.采集流程如下:音視頻采集模塊采集到video1、audio1后,將video1、audio1發送至編碼模塊進行編碼處理,采集到的audio1輸入至實時語音轉寫服務進行語音轉寫處理,其中,編碼處理及語音轉寫處理是異步過程,編碼模塊會向實時語音轉寫服務發送識別結果查詢請求,以查詢是否存在識別結果,如果不存在,可以不做任何操作,編碼模塊會將
video1、audio1封包后推流至cdn。
145.實時語音轉寫服務回調(callback),得到audio1識別結果(audio1字幕)。
146.音視頻采集模塊采集到video2、audio2后,將video2、audio2發送至編碼模塊進行編碼處理,采集到的audio2輸入至實時語音轉寫服務進行語音轉寫處理,其中,編碼處理及語音轉寫處理是異步過程,編碼模塊會向實時語音轉寫服務發送識別結果查詢請求,以查詢是否存在識別結果,此時存在audio1識別結果(audio1字幕),向編碼模塊返回audio1字幕,計算video2和audio1識別結果的字幕時間戳偏移值,audio1字幕及對應的字幕時間戳偏移值寫入video2的sei中,將video2(audio1字幕)+audio2封包推流至cdn
147.實時語音轉寫服務回調(callback),得到audio2識別結果(audio2字幕)。
148.音視頻采集模塊采集到video3、audio3后,將video3、audio3發送至編碼模塊進行編碼處理,采集到的audio3輸入至實時語音轉寫服務進行語音轉寫處理,其中,編碼處理及語音轉寫處理是異步過程,編碼模塊會向實時語音轉寫服務發送識別結果查詢請求,以查詢是否存在識別結果,此時存在audio2識別結果(audio2字幕),向編碼模塊返回audio2字幕,計算video3和audio2識別結果的字幕時間戳偏移值,audio2字幕及對應的字幕時間戳偏移值寫入video3的sei中,將video3(audio2字幕)+audio3封包推流至cdn。
149.實時語音轉寫服務回調(callback),得到audio3識別結果(audio3字幕)。
150.音視頻采集模塊采集到video4、audio4后,將video4、audio4發送至編碼模塊進行編碼處理,采集到的audio4輸入至實時語音轉寫服務進行語音轉寫處理,其中,編碼處理及語音轉寫處理是異步過程,編碼模塊會向實時語音轉寫服務發送識別結果查詢請求,以查詢是否存在識別結果,此時存在audio3識別結果(audio3字幕),向編碼模塊返回audio3字幕,計算video4和audio3識別結果的字幕時間戳偏移值,audio3字幕及對應的字幕時間戳偏移值寫入video4的sei中,將video4(audio3字幕)+audio4封包推流至cdn。
151.同上,省略之后采集流程。
152.播放回調查詢字幕流程:用戶進入直播間后,用戶拉流模塊從cdn開始拉流,cdn向用戶拉流模塊返回video1+audio1,用戶播放模塊對video1、audio1進行解碼。用戶拉流模塊進行回調發現無sei字幕,用戶播放模塊開始播放video1+audio1,多次進行視頻幀更新回調,檢查是否存在字幕,如果對應時間戳無sei字幕,則不顯示字幕,進行解碼。
153.用戶拉流模塊回調發現audio1存在sei字幕,用戶播放模塊多次執行進行視頻幀更新回調,檢查是否存在字幕,如果對應時間戳有audio 1 sei字幕,則顯示字幕,進行解碼。
154.用戶拉流模塊回調發現audio2存在sei字幕,用戶播放模塊多次執行進行視頻幀更新回調,檢查是否存在字幕,如果對應時間戳有audio 1 sei字幕,則顯示字幕。
155.用戶播放模塊開始播放video2+audio2,多次進行視頻幀更新回調,檢查是否存在字幕,如果對應時間戳有audio 2 sei字幕,則顯示字幕,進行解碼。
156.用戶拉流模塊回調發現audio3存在sei字幕,用戶播放模塊多次執行進行視頻幀更新回調,檢查是否存在字幕,如果對應時間戳有audio 2 sei字幕,則顯示字幕,進行解碼。
157.同上,省略之后播放回調查詢字幕流程。
158.在圖4c中,由于是以視頻幀為例進行舉例說明,并未示出播放緩沖。
159.圖4d為字幕信息的流動過程的信令圖二,在圖4d中,主要是以音視頻片段為例進行說明,具體地,音視頻采集模塊采集音視頻片段1,將音視頻片段1發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段1中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,其中,編碼處理及語音轉寫處理是異步過程,而且不需要等待語音識別結果,語音識別存在耗時,編碼封裝模塊將音視頻片段1推流至cdn,cdn存在網絡延遲,為了流暢的觀看體驗,播放器通常存在播放緩沖,音視頻片段1被緩存至緩沖區中;
160.在完成音視頻片段1推流后,音視頻采集模塊采集音視頻片段2,將音視頻片段2發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段2中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,語音識別存在耗時,此時還未得到音視頻片段1中的音頻片段的字幕1,編碼封裝模塊將音視頻片段2推流至cdn,音視頻片段2被緩存至緩沖區中;
161.在完成音視頻片段2推流后,音視頻采集模塊采集音視頻片段3,將音視頻片段3發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段3中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,語音識別存在耗時,由于已經得到音視頻片段1中的音頻片段的字幕1,編碼封裝模塊將音視頻片段3+字幕1推流至cdn,播放器通常存在播放緩沖,音視頻片段音視頻片段3+字幕1被緩存至緩沖區中;
162.在完成音視頻片段3推流后,音視頻采集模塊采集音視頻片段4,將音視頻片段4發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段4中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,語音識別存在耗時,由于已經得到音視頻片段2中的音頻片段的字幕2,編碼封裝模塊將音視頻片段4+字幕2推流至cdn,播放器通常存在播放緩沖,音視頻片段音視頻片段4+字幕2被緩存至緩沖區中;
163.在完成音視頻片段4推流后,音視頻采集模塊采集音視頻片段5,將音視頻片段5發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段5中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,語音識別存在耗時,由于已經得到音視頻片段3中的音頻片段的字幕3,編碼封裝模塊將音視頻片段5+字幕3推流至cdn,播放器通常存在播放緩沖,音視頻片段音視頻片段5+字幕3被緩存至緩沖區中;
164.在完成音視頻片段5推流后,音視頻采集模塊采集音視頻片段6,將音視頻片段6發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段6中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,語音識別存在耗時,由于已經得到音視頻片段4中的音頻片段的字幕4,編碼封裝模塊將音視頻片段6+字幕4推流至cdn,播放器通常存在播放緩沖,音視頻片段音視頻片段6+字幕4被緩存至緩沖區中;
165.在完成音視頻片段6推流后,音視頻采集模塊采集音視頻片段7,將音視頻片段7發送至編碼封裝模塊進行編碼封裝處理,采集到的音視頻片段7中的音頻片段輸入至語音轉寫服務進行語音轉寫處理,語音識別存在耗時,由于已經得到音視頻片段5中的音頻片段的字幕5,編碼封裝模塊將音視頻片段7+字幕5推流至cdn,播放器通常存在播放緩沖,音視頻片段音視頻片段7+字幕5被緩存至緩沖區中;
166.由于緩沖區的存在,因此,解碼播放模塊可以從音視頻片段3的sei中提取出字幕1,在播放音視頻片段1時,同時播放字幕1;可以從音視頻片段4的sei中提取出字幕2,在播放音視頻片段2時,同時播放字幕2;可以從音視頻片段5的sei中提取出字幕3,在播放音視頻片段3時,同時播放字幕3;可以從音視頻片段6的sei中提取出字幕4,在播放音視頻片段4
時,同時播放字幕4。
167.在實際直播觀看過程中,一般為了流暢的觀看體驗,播放器會有3s左右緩沖時長。一般實時語音轉寫服務能在1-2s左右有識別結果出來。在播放器剛剛拉到流時將其中的sei字幕信息提取出來,該字幕信息正是之前幾秒的實時語音轉寫服務轉寫得到的字幕信息,因此只要用戶有1秒左右的緩沖區,就可以顯示中間結果的字幕。如果用戶緩沖區更大,則可以顯示最終結果。即正在播放的直播內容的音視頻,其字幕是在之后幾秒的直播流中的。因此,利用緩沖區實現字幕顯示,無新增延遲,無新增編解碼流程,且復用直播流的分布式傳播路徑,不僅未增加成本,卻仍舊大大提升了直播的觀看體驗。
168.本技術提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,且對齊方式簡單,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。由于不需要中心式的字幕服務器去轉發字幕消息,而是復用視頻流的分布式網絡傳輸鏈路,不僅不需要直接面對復雜多變的網絡環境,也不會額外增加中心服務器的帶寬成本,且字幕信息嵌在視頻流的擴展字段sei中,不需要分別考慮視頻流和字幕流的緩沖情況,確保了觀看的同步性,且能夠提供幀級別的字幕對齊,觀看體驗良好。直播流會在云端保存,以符合直播規范,也可以方便的進行二創、投稿等,提升主播影響力,此時,字幕無縫保存在錄像文件中,可以隨著錄像文件一起切割、剪輯、合并等,提供了極大的方便性。另外,字幕信息是外嵌渲染在播放的視頻幀上,因此,觀看用戶可以根據實際觀看需要而選擇顯示字幕信息或不顯示字幕信息,例如,設置了字幕開關控制字幕信息的顯示或不顯示。
169.圖5示出了根據本技術中的一個實施例的直播流的字幕處理裝置的結構示意圖。如圖5所示,該裝置包括:
170.語音轉寫處理模塊501,適于獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定字幕信息對應的字幕時間戳;
171.確定模塊502,適于根據字幕信息對應的字幕時間戳,確定目標視頻幀;
172.計算模塊503,適于計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳偏移值;
173.寫入模塊504,適于將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中;
174.封包推流模塊505,適于將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流。
175.可選地,確定模塊進一步適于:將即將推流的視頻幀中視頻幀時間戳與字幕時間戳之間的差值最小的視頻幀確定為目標視頻幀。
176.可選地,裝置還包括:記錄模塊,適于記錄字幕處理開始時音頻數據輸入至語音轉寫服務的輸入時間戳;
177.語音轉寫處理模塊進一步適于:根據輸入時間戳及待處理音頻數據的語音轉寫時間戳確定字幕信息對應的字幕時間戳。
178.可選地,裝置還包括:編碼模塊,適于對待處理音頻數據進行音頻編碼處理;對待處理音頻數據對應的視頻幀進行視頻編碼處理,其中,音頻編碼處理過程、視頻編碼處理過程、語音轉寫處理過程為異步過程。
179.可選地,裝置還包括:字幕隊列,適于以數據鍵值對形式存儲字幕信息及對應的字幕時間戳。
180.可選地,數據鍵值對中的數據鍵為字幕時間戳,數據鍵對應的數據值為字幕信息。
181.可選地,補充增強字段還包括:音頻數據標識、轉寫識別結果標識、字幕持續時間、用戶信息。
182.可選地,轉寫識別結果標識包含中間轉寫結果標識或最終轉寫結果標識。
183.可選地,裝置還包括:分包處理模塊,適于獲取直播流視頻,對直播流視頻進行分包處理,得到視頻包及音頻包;
184.解碼模塊,適于對音頻包進行解碼處理,得到音頻數據。
185.本技術提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。
186.圖6示出了根據本技術中的一個實施例的直播流的播放裝置的結構示意圖。如圖6所示,該裝置包括:
187.獲取模塊601,適于獲取直播流;
188.分包模塊602,適于對所述直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包;
189.解析模塊603,適于對視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息;
190.第一確定模塊604,適于根據字幕時間戳偏移值及目標視頻幀的視頻幀時間戳確定字幕信息對應的字幕時間戳;
191.對齊模塊605,適于根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理;
192.播放模塊606,適于根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
193.可選地,裝置還包括:緩存模塊,適于根據緩沖區大小,動態將直播流緩存至緩沖區中;
194.分包模塊進一步適于:對緩沖區中的直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包。
195.可選地,第一確定模塊進一步適于:將字幕時間戳偏移值與目標視頻幀的視頻幀時間戳進行求和計算,得到字幕信息對應的字幕時間戳。
196.可選地,對齊模塊進一步適于:判斷字幕信息對應的字幕時間戳與待播放視頻幀的視頻幀時間戳之間的時間差值是否小于或等于預設時長;
197.若是,則根據字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理。
198.可選地,補充增強字段還包括:音頻數據標識;
199.裝置還包括:字幕隊列,適于以數據鍵值對形式存儲具有相同音頻數據標識的字幕信息及對應的字幕時間戳,其中,同一音頻數據標識的字幕信息對應的字幕時間戳相同。
200.可選地,播放模塊進一步適于:若字幕隊列中的字幕時間戳對應著多個字幕信息,
則從字幕隊列中選取文字數量最長的字幕信息;
201.根據選取的文字數量最長的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
202.可選地,數據鍵值對中的數據鍵為字幕時間戳,數據鍵對應的數據值為字幕信息。
203.可選地,補充增強字段還包括:轉寫識別結果標識,轉寫識別結果標識包含中間轉寫結果標識或最終轉寫結果標識;
204.播放模塊進一步適于:若解析到最終轉寫結果標識,則根據最終轉寫結果標識對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放;
205.若未解析到最終轉寫結果標識且解析到中間轉寫結果標識,則根據中間轉寫結果標識對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
206.可選地,補充增強字段還包括:字幕持續時間;
207.裝置還包括:第二確定模塊,適于根據字幕持續時間確定視頻播放時字幕信息的消失時間。
208.可選地,補充增強字段還包括:用戶信息;
209.播放模塊還適于:在視頻播放時顯示字幕信息對應的用戶信息。
210.本技術提供的方案,在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。
211.本技術實施例還提供了一種非易失性計算機存儲介質,計算機存儲介質存儲有至少一可執行指令,該計算機可執行指令可執行上述任意方法實施例中的直播流的字幕處理方法。
212.圖7示出了根據本技術中的一個實施例的計算設備的結構示意圖,本技術具體實施例并不對計算設備的具體實現做限定。
213.如圖7所示,該計算設備可以包括:處理器(processor)702、通信接口(communications interface)704、存儲器(memory)706、以及通信總線708。
214.其中:處理器702、通信接口704、以及存儲器706通過通信總線708完成相互間的通信。
215.通信接口704,用于與其它設備比如客戶端或其它服務器等的網元通信。
216.處理器702,用于執行程序710,具體可以執行上述直播流的字幕處理方法實施例中的相關步驟。
217.具體地,程序710可以包括程序代碼,該程序代碼包括計算機操作指令。
218.處理器702可能是中央處理器cpu,或者是特定集成電路asic(application specific integrated circuit),或者是被配置成實施本技術實施例的一個或多個集成電路。計算設備包括的一個或多個處理器,可以是同一類型的處理器,如一個或多個cpu;也可以是不同類型的處理器,如一個或多個cpu以及一個或多個asic。
219.存儲器706,用于存放程序710。存儲器706可能包含高速ram存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。
220.程序710具體可以用于使得處理器702執行上述任意方法實施例中的直播流的字幕處理方法。程序710中各步驟的具體實現可以參見上述直播流的字幕處理實施例中的相
應步驟和單元中對應的描述,在此不贅述。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的設備和模塊的具體工作過程,可以參考前述方法實施例中的對應過程描述,在此不再贅述。
221.本發明實施例還提供了一種非易失性計算機存儲介質,計算機存儲介質存儲有至少一可執行指令,可執行指令可執行上述任意方法實施例中的直播流的播放方法。
222.本發明實施例還提供了一種計算設備,包括:處理器、存儲器、通信接口和通信總線,處理器、存儲器和通信接口通過通信總線完成相互間的通信;存儲器用于存放至少一可執行指令,可執行指令使處理器執行上述的直播流的播放方法對應的操作。該計算設備的結構示意圖與圖7所示的計算設備的結構示意圖相同,此處不再贅述。
223.在此提供的算法或顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本技術實施例也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本技術的內容,并且上面對特定語言所做的描述是為了披露本技術的最佳實施方式。
224.在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本技術的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
225.類似地,應當理解,為了精簡本技術并幫助理解各個發明方面中的一個或多個,在上面對本技術的示例性實施例的描述中,本技術實施例的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本技術要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本技術的單獨實施例。
226.本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
227.此外,本領域的技術人員能夠理解,盡管在此的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本技術的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
228.本技術的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(dsp)來實現根據本技術實施例的一些或者全部部件的一些
或者全部功能。本技術還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本技術的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
229.應該注意的是上述實施例對本技術進行說明而不是對本技術進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本技術可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。上述實施例中的步驟,除有特殊說明外,不應理解為對執行順序的限定。

技術特征:


1.一種直播流的字幕處理方法,包括:獲取直播流的待處理音頻數據,對所述待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定所述字幕信息對應的字幕時間戳;根據所述字幕信息對應的字幕時間戳,確定目標視頻幀;計算所述字幕時間戳相對于所述目標視頻幀的視頻幀時間戳的字幕時間戳偏移值,將所述字幕時間戳偏移值及所述字幕信息寫入所述目標視頻幀的補充增強字段中;將處理后的目標視頻幀與所述目標視頻幀對應的音頻數據進行封包推流。2.根據權利要求1所述的方法,其中,根據所述字幕信息對應的字幕時間戳,確定目標視頻幀進一步包括:將即將推流的視頻幀中視頻幀時間戳與字幕時間戳之間的差值最小的視頻幀確定為目標視頻幀。3.根據權利要求1或2所述的方法,其中,所述方法還包括:記錄字幕處理開始時音頻數據輸入至語音轉寫服務的輸入時間戳;所述確定所述字幕信息對應的字幕時間戳進一步包括:根據所述輸入時間戳及待處理音頻數據的語音轉寫時間戳確定所述字幕信息對應的字幕時間戳。4.根據權利要求1-3中任一項所述的方法,其中,所述方法還包括:對所述待處理音頻數據進行音頻編碼處理;對所述待處理音頻數據對應的視頻幀進行視頻編碼處理,其中,音頻編碼處理過程、視頻編碼處理過程、語音轉寫處理過程為異步過程。5.根據權利要求1-4中任一項所述的方法,其中,在確定所述字幕信息對應的字幕時間戳之后,所述方法還包括:以數據鍵值對形式將字幕信息及對應的字幕時間戳存儲至字幕隊列中。6.根據權利要求5所述的方法,其中,所述數據鍵值對中的數據鍵為字幕時間戳,所述數據鍵對應的數據值為字幕信息。7.根據權利要求1-6中任一項所述的方法,其中,所述補充增強字段還包括:音頻數據標識、轉寫識別結果標識、字幕持續時間、用戶信息。8.根據權利要求7所述的方法,其中,所述轉寫識別結果標識包含中間轉寫結果標識或最終轉寫結果標識。9.根據權利要求1-8中任一項所述的方法,其中,所述方法還包括:獲取直播流視頻;對所述直播流視頻進行分包處理,得到視頻包及音頻包;對音頻包進行解碼處理,得到音頻數據。10.一種直播流的播放方法,包括:獲取直播流,對所述直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包,對所述視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息;根據所述字幕時間戳偏移值及所述目標視頻幀的視頻幀時間戳確定所述字幕信息對應的字幕時間戳;根據所述字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理,根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。
11.根據權利要求10所述的方法,其中,所述方法還包括:根據緩沖區大小,動態將直播流緩存至緩沖區中;對所述直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包進一步包括:對緩沖區中的直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包。12.根據權利要求10或11所述的方法,其中,根據所述字幕時間戳偏移值及所述目標視頻幀的視頻幀時間戳確定所述字幕信息對應的字幕時間戳進一步包括:將所述字幕時間戳偏移值與所述目標視頻幀的視頻幀時間戳進行求和計算,得到所述字幕信息對應的字幕時間戳。13.根據權利要求10-12中任一項所述的方法,其中,所述根據所述字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理進一步包括:判斷所述字幕信息對應的字幕時間戳與待播放視頻幀的視頻幀時間戳之間的時間差值是否小于或等于預設時長;若是,則根據所述字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理。14.根據權利要求10-13中任一項所述的方法,其中,所述補充增強字段還包括:音頻數據標識;在根據所述字幕時間戳偏移值及所述目標視頻幀的視頻幀時間戳確定所述字幕信息對應的字幕時間戳之后,所述方法還包括:以數據鍵值對形式將具有相同音頻數據標識的字幕信息及對應的字幕時間戳存儲至字幕隊列中,其中,同一音頻數據標識的字幕信息對應的字幕時間戳相同。15.根據權利要求14所述的方法,其中,所述根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放進一步包括:若字幕隊列中的字幕時間戳對應著多個字幕信息,則從所述字幕隊列中選取最新存儲的字幕信息;根據選取的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。16.根據權利要求14或15所述的方法,其中,所述數據鍵值對中的數據鍵為字幕時間戳,所述數據鍵對應的數據值為字幕信息。17.根據權利要求10-16中任一項所述的方法,其中,所述補充增強字段還包括:轉寫識別結果標識,所述轉寫識別結果標識包含中間轉寫結果標識或最終轉寫結果標識;所述根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放進一步包括:若解析到最終轉寫結果標識,則根據最終轉寫結果標識對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放;若未解析到最終轉寫結果標識且解析到中間轉寫結果標識,則根據中間轉寫結果標識對應的字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。18.根據權利要求10-17中任一項所述的方法,其中,所述補充增強字段還包括:字幕持
續時間;所述方法還包括:根據所述字幕持續時間確定視頻播放時字幕信息的消失時間。19.根據權利要求10-18中任一項所述的方法,其中,所述補充增強字段還包括:用戶信息;所述方法還包括:在視頻播放時顯示所述字幕信息對應的用戶信息。20.一種直播流的字幕處理裝置,包括:語音轉寫處理模塊,適于獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定所述字幕信息對應的字幕時間戳;確定模塊,適于根據所述字幕信息對應的字幕時間戳,確定目標視頻幀;計算模塊,適于計算所述字幕時間戳相對于所述目標視頻幀的視頻幀時間戳的字幕時間戳偏移值;寫入模塊,適于將所述字幕時間戳偏移值及所述字幕信息寫入所述目標視頻幀的補充增強字段中;封包推流模塊,適于將處理后的目標視頻幀與所述目標視頻幀對應的音頻數據進行封包推流。21.一種直播流的播放裝置,包括:獲取模塊,適于獲取直播流;分包模塊,適于對所述直播流進行分包處理得到包含視頻幀的視頻包及包含音頻數據的音頻包;解析模塊,適于對所述視頻包的目標視頻幀中的補充增強字段進行解析處理,得到字幕時間戳偏移值及字幕信息;第一確定模塊,適于根據所述字幕時間戳偏移值及所述目標視頻幀的視頻幀時間戳確定所述字幕信息對應的字幕時間戳;對齊模塊,適于根據所述字幕信息對應的字幕時間戳執行待播放音頻數據與待播放視頻幀的對齊處理;播放模塊,適于根據字幕信息、對齊后的待播放音頻數據及對齊后的待播放視頻幀進行視頻播放。22.一種計算設備,包括:處理器、存儲器、通信接口和通信總線,所述處理器、所述存儲器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲器用于存放至少一可執行指令,所述可執行指令使所述處理器執行如權利要求1-9中任一項所述的直播流的字幕處理方法對應的操作或執行如權利要求10-19中任一項所述的直播流的播放方法對應的操作。23.一種計算機存儲介質,所述存儲介質中存儲有至少一可執行指令,所述可執行指令使處理器執行如權利要求1-9中任一項所述的直播流的字幕處理方法對應的操作或執行如權利要求10-19中任一項所述的直播流的播放方法對應的操作。

技術總結


本申請公開了一種直播流的字幕處理方法、裝置及直播流的播放方法、裝置。其中,直播流的字幕處理方法包括:獲取直播流的待處理音頻數據,對待處理音頻數據進行語音轉寫處理得到對應的字幕信息,并確定字幕信息對應的字幕時間戳;根據字幕信息對應的字幕時間戳,確定目標視頻幀;計算字幕時間戳相對于目標視頻幀的視頻幀時間戳的字幕時間戳偏移值,將字幕時間戳偏移值及字幕信息寫入目標視頻幀的補充增強字段中;將處理后的目標視頻幀與目標視頻幀對應的音頻數據進行封包推流。由此在無新增直播延遲的情況下,實現了字幕在直播系統中的幀對齊,確保了觀看的同步性,有效提升了直播中的互動性,使得用戶觀看直播的體驗良好,而且有效降低了成本。效降低了成本。效降低了成本。


技術研發人員:

秦永芳 姜軍 朱俊煒

受保護的技術使用者:

上海嗶哩嗶哩科技有限公司

技術研發日:

2022.10.20

技術公布日:

2023/1/17


文章投稿或轉載聲明

本文鏈接:http://m.newhan.cn/zhuanli/patent-1-84209-0.html

來源:專利查詢檢索下載-實用文體寫作網版權所有,轉載請保留出處。本站文章發布于 2023-01-28 09:09:12

發表評論

驗證碼:
用戶名: 密碼: 匿名發表
評論列表 (有 條評論
,2人圍觀
參與討論