一種網絡直播重連方法及系統與流程
2023-09-19 15:41:40 1
本發明涉及網絡傳輸技術領域,更具體地,涉及一種網絡直播重連方法及系統。
背景技術:
目前,網絡視頻直播平臺是一種多媒體網絡平臺,是將音視頻信號採集成數位訊號,並經過網絡傳輸的一種流媒體應用。隨著intnet技術的不斷發展,網絡已成為發展速度最快而且越來越佔據主要地位的媒體。真正意義上的「網絡直播」為在現場架設獨立的信號採集設備(音頻+視頻)導入導播端(導播設備或平臺),再通過網絡上傳至伺服器,發布至網址供人觀看。當視頻直播發生異常斷線的時候,用戶終端需要和伺服器進行重連。
目前網絡視頻直播平臺為了實現平臺的快速用戶相應,都會有多個伺服器,例如php伺服器、c++伺服器。當直播視頻發生斷線情況下,需要重新連接伺服器,一個直播間需要重連伺服器的地方有很多,找出合理的連接伺服器的方案進行快速的伺服器重連。
然而,上述現有技術中的直播中,視頻信息及用戶彈幕信息都存儲於伺服器端,重連伺服器後雖然可以恢復視頻信息的連續播放,但通常導致了直播視頻中某些客戶個性化的消費信息,尤其是付費的特殊彈幕信息參數及房間的數據信息的丟失和不能及時恢復,使用戶特別是消費用戶不能繼續享受到先前直播房間給予其帶來的愉悅感受,十分不利於直播平臺的客戶體驗。
技術實現要素:
本發明為克服上述問題或者至少部分地解決上述問題,提供一種網絡直播重連方法及系統,解決了視頻直播伺服器斷線重連後彈幕等信息數據恢復的問題。
根據本發明的一個方面,提供一種網絡直播重連方法,包括:
步驟1,將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;
步驟2,確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;
步驟3,利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;
步驟4,將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
根據本發明另一個方面,提供一種網絡直播重連繫統,包括保存模塊、確認模塊、選擇模塊和恢復模塊:
所述保存模塊,與所述確認模塊相連,用於將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;
所述確認模塊,分別與所述保存模塊和選擇模塊相連,用於確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;
所述選擇模塊,分別與所述確認模塊和恢復模塊相連,用於利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;
所述恢復模塊,與所述選擇模塊相連,用於將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
本申請提出一種網絡直播重連方法及系統,所述方法在直播視頻斷線後將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端,確認存在至少兩個所述斷線直播視頻存在可以連接的伺服器,選擇至少一個伺服器進行連接,將先前存儲的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。本發明技術方案解決了現有技術中,直播視頻斷線重連後彈幕信息等客戶個性化參數信息及房間數據信息不能及時恢復的技術問題,從而帶來有效提高直播視頻平臺的用戶體驗的有益效果。
附圖說明
圖1為根據本發明實施例一種網絡直播重連方法的整體流程示意圖;
圖2為根據本發明實施例一種網絡直播重連繫統的整體框架示意圖;
圖3為根據本發明實施例一種網絡直播重連方法的裝置整體框架示意圖。
具體實施方式
下面結合附圖和實施例,對本發明的具體實施方式作進一步詳細描述。以下實施例用於說明本發明,但不用來限制本發明的範圍。
目前,網絡視頻直播平臺是一種多媒體網絡平臺,是將音視頻信號採集成數位訊號,並經過網絡傳輸的一種流媒體應用。隨著intnet技術的不斷發展,網絡已成為發展速度最快而且越來越佔據主要地位的媒體。真正意義上的「網絡直播」為在現場架設獨立的信號採集設備(音頻+視頻)導入導播端(導播設備或平臺),再通過網絡上傳至伺服器,發布至網址供人觀看。當視頻直播發生異常斷線的時候,用戶終端需要和伺服器進行重連。目前網絡視頻直播平臺為了實現平臺的快速用戶相應,都會有多個伺服器,例如php伺服器、c++伺服器。當直播視頻發生斷線情況下,需要重新連接伺服器,一個直播間需要重連伺服器的地方有很多,找出合理的連接伺服器的方案進行快速的伺服器重連。
然而,上述現有技術中的直播中,視頻信息及用戶彈幕信息都存儲於伺服器端,重連伺服器後雖然可以恢復視頻信息的連續播放,但通常導致了直播視頻中某些客戶個性化的消費信息,尤其是付費的特殊彈幕信息參數及房間的數據信息的丟失和不能及時恢復,使用戶特別是消費用戶不能繼續享受到先前直播房間給予其帶來的愉悅感受,十分不利於直播平臺的客戶體驗。
步驟1,將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;
步驟2,確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;
步驟3,利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;
步驟4,將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
本具體實施例中的直播視頻內彈幕信息參數可以為彈幕的顏色、字體、大小,所述上述信息能夠和彈幕相應的價格信息關聯。本發明上述具體實施例所述整體技術方案解決了現有技術中,直播視頻斷線重連後彈幕信息參數和所在直播房間的數據信息等個性化參數信息不能及時恢復的技術問題,從而帶來有效提高直播視頻平臺的用戶體驗的有益效果。
上述具體實施的保存能夠通過以下方式實現,其中直播屏幕可以為全屏或半屏:
使用函數self.playerportraitinputbar.nameofsort2th=self.roominfo.game_name;保存半屏直播間二級分類的名字;
使用函數self.playerview.nameofsort2th=self.roominfo.game_name;保存全屏直播間二級分類的名字;
使用函數[selfupdatecolordanmuprice];將彩色彈幕卡的價格保存起來。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟1前還包括:將斷線直播視頻內彈幕輸入框進行初始化。
上述具體實施的保存能夠通過以下方式實現:
使用函數[self.playerportraitinputbarreset];重新設置半屏直播間的彈幕輸入框的狀態;
使用函數語句[self.playerviewresetinputbar];重置全屏直播間的輸入框的狀態。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟2前還包括:在斷線直播視頻的視頻框內向用戶告知伺服器正在連接的信息。
上述具體實施的保存能夠通過以下方式實現:使用函數語句if(self.islandscape)判斷當前的屏幕是不是橫屏,如果是橫屏使用函數語句[selfshowmsglab:@"伺服器連接中..."];告訴用戶伺服器連接中。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟3還包括:獲取socket管理對象,將所述socket管理對象的代理設置為當前直播視頻所屬的應用程式。
上述具體實施的保存能夠通過以下方式實現:
使用函數dysocketmanager*instance=[dysocketmanagersharedinstance]獲得dysocketmanager的對象instance;
設置instance的代理為當前連接彈幕的控制器,設置語句是instance.delegate=self。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟3中伺服器選擇規則為:按照時延由小到大的順序,將所述能夠連接的伺服器進行1至n的優先級排序,每個伺服器被選擇的概率為1/n,其中n為所述能夠連接的伺服器的優先級別。
在上述本發明具體實施例中,所述伺服器選擇規則具體實施步驟為:首先依次連接各個所有能夠連接的伺服器並記錄所述斷線直播房間與各個伺服器的時延值,按照各個能夠連接伺服器各自實驗值由小到大的順序將所述能夠連接的伺服器按照優先級別由高到低1至n的排序,其中n為所述能夠連接伺服器的數量。每個伺服器被選擇的概率為1/n,其中n為所述能夠連接的伺服器的優先級別。例如:存在5能夠連接的伺服器,那麼優先級排第1的伺服器被選擇連接的概率是100%(1/1),優先級排第2的伺服器路被選擇的概率是50%(1/2),優先級排第3的被選擇的概率是33.33%(1/3),依照這樣的規則第n條線路的概率為1/n。這裡通過上述伺服器選擇算法可以保證每個伺服器被選擇的概率為1/n。這樣斷線直播房間返回至少兩個伺服器並連接完成,提高伺服器的利用效率,同時用隨機算法,每個伺服器被選擇的概率均衡合理,保證了伺服器的負載均衡,避免某個伺服器承載的負荷過大。
上述具體實施的保存能夠通過以下方式實現:使用隨機數獲得self.roominfo.servers數組中的隨便一個伺服器模型對象dyserversmodel*server。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述斷線直播視頻內的彈幕信息參數為所述斷線直播視頻內彈幕顏色和字體信息,所述斷線直播視頻所在直播房間的數據信息為所述直播房間的等級分類信息。
上述具體實施的保存能夠通過以下方式實現:在本發明另一個具體實施例中,一種網絡直播重連方法,所述確認存在至少兩個所述斷線直播視頻能夠連接的伺服器還包括:確認存在至少兩個所述斷線直播視頻所屬房間的數據信息內是否包含可用伺服器;確認所述可用伺服器是否存在;確認所述可用伺服器數量大於0。進行連接伺服器之前,判斷伺服器地址是否存在,roominfo接口數據是否存在等這些必須的條件是否滿足,這些條件滿足了才去連接伺服器,有效的避免出現bug。
上述具體實施的保存能夠通過以下方式實現:
使用函數if(self.roominfo&&self.roominfo.servers&&self.roominfo.servers.count)判斷loadroom接口返回的數據roominfo是否有數據,且roominfo的伺服器的是否存在,roominfo的伺服器的個數大於0,這些條件都具備了,才能執行重連伺服器的操作。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟4進一步包括:
當檢測到重連後的直播視頻中存在彈幕信息時,確認所述彈幕信息有存在於用戶終端中的對應彈幕信息參數,將所述彈幕信息參數賦值到所述彈幕信息中;
將所述斷線直播視頻所在直播房間的數據信息賦值到所述重連後的直播視頻所在的房間中。
在本具體實施例中,上述彈幕信息參數與所述所述斷線直播視頻所在直播房間的數據信息賦值的兩個步驟沒有現有時序的限制。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述伺服器為php和/或c++伺服器。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟斷開所述斷線直播視頻的所有伺服器連接,能夠通過以下方式實現:使用語句[instancedisconnect]讓伺服器先斷開,再連接,這個函數底層會判斷,是否存在連接的伺服器,如果存在連接的伺服器,就先將伺服器斷開。連接伺服器之前,先斷開連接,避免建立多個伺服器連接,浪費資源。
在本發明另一個具體實施例中,一種網絡直播重連方法,所述步驟連接伺服器通過以下具體步驟實現:使用函數[instancelogintohostwithip:server.ipport:[server.portintvalue]roomid:self.roominfo.room_iddanmutype:dydanmutypelive];對伺服器進行重連。
在本發明另一個具體實施例中,一種網絡直播重連繫統,包括保存模塊a1、確認模塊a2、選擇模塊a3和恢復模塊a4:
所述保存模塊a1,與所述確認模塊a2相連,用於將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;
所述確認模塊a2,分別與所述保存模塊a1和選擇模塊a3相連,用於確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;
所述選擇模塊a3,分別與所述確認模塊a2和恢復模塊a4相連,用於利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;
所述恢復模塊a4,與所述選擇模塊a3相連,用於將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
本發明上述具體實施例所述整體技術方案解決了現有技術中,直播視頻斷線重連後彈幕信息等客戶個性化參數信息不能及時恢復的技術問題,從而帶來有效提高直播視頻平臺的用戶體驗的有益效果。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述斷線直播視頻內的數據信息包括所述直播視頻內彈幕信息參數和所述直播視頻所在直播房間的數據信息。本具體實施例中的直播視頻內彈幕信息參數可以為彈幕的顏色、字體、大小,所述上述信息能夠和彈幕相應的價格信息關聯。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述保存模塊還用於將斷線直播視頻內彈幕輸入框進行初始化。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述確認模塊還用於在斷線直播視頻的視頻框內向用戶告知伺服器正在連接的信息。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述選擇模塊還用於獲取socket管理對象,將所述socket管理對象的代理設置為當前直播視頻所屬的應用程式。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述伺服器選擇規則為隨機獲取至少一個伺服器或選擇待選伺服器中當前負載值最低的一個伺服器。所有的異常處理完畢之後,從伺服器的地址模型中隨機獲取一個地址重連,讓幾個伺服器的負載均衡,對於直播高並發的情況,因為有很多伺服器地址,使用本實施例中的兩個選擇規則連接一個,保證多個伺服器隨機的,比較平均的被連接。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述直播視頻內彈幕信息參數為所述直播視頻內彈幕顏色和字體信息,所述直播視頻所在直播房間的數據信息為所述直播房間的等級分類信息。
在本發明另一個具體實施例中,一種網絡直播重連繫統,所述所述伺服器為php和/或c++伺服器。
圖3是示出本申請實施例的直播重連方法的測試設備的結構框圖。
參照圖3,所述直播重連方法的設備,包括:處理器(processor)301、存儲器(memory)302、通信接口(communicationsinterface)303和總線304;
其中,
所述處理器301、存儲器302、通信接口303通過所述總線304完成相互間的通信;
所述通信接口303用於該測試設備與直播重連方法的通信設備之間的信息傳輸;
所述處理器301用於調用所述存儲器302中的程序指令,以執行上述各方法實施例所提供的方法,例如包括:將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
本實施例公開一種電腦程式產品,所述電腦程式產品包括存儲在非暫態計算機可讀存儲介質上的電腦程式,所述電腦程式包括程序指令,當所述程序指令被計算機執行時,計算機能夠執行上述各方法實施例所提供的方法,例如包括:將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
本實施例提供一種非暫態計算機可讀存儲介質,所述非暫態計算機可讀存儲介質存儲計算機指令,所述計算機指令使所述計算機執行上述各方法實施例所提供的方法,例如包括:將斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息存儲在客戶終端;確認存在至少兩個所述斷線直播視頻能夠連接的伺服器;確認所述直播視頻斷線故障已經排除;斷開所述斷線直播視頻的所有伺服器連接;利用伺服器選擇規則從所述斷線直播視頻能夠連接的伺服器中獲取至少一個伺服器並連接;將所述存儲在客戶終端的斷線直播視頻內的彈幕信息參數和所述斷線直播視頻所在直播房間的數據信息恢復到重連後的直播視頻中。
本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬體來完成,前述的程序可以存儲於一計算機可讀取存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光碟等各種可以存儲程序代碼的介質。
以上所描述的直播重連方法的設備等實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解並實施。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體。基於這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在計算機可讀存儲介質中,如rom/ram、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
最後,本申請的方法僅為較佳的實施方案,並非用於限定本發明的保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。