一種視頻傳輸方法及系統與流程
2023-04-25 20:58:31 4

本發明涉及網際網路技術領域,特別涉及一種視頻傳輸方法及系統。
背景技術:
經過近幾年的網際網路技術的飛速發展,網際網路的業務不斷增加,人們基於網際網路可以接觸到各種各樣的信息,網絡也成為人們日常工作和生活中不可或缺的一部分。比如,用戶可以利用網際網路收發工作郵件、進行視頻會議等;或者,利用網際網路瀏覽新聞、聽音樂、購物、訂餐、觀看視頻等。且隨著網際網路的不斷發展進步,用戶通過實時傳輸視頻進行播放視頻的情況也越來越多,但目前視頻傳輸通常採用TCP協議(Transmission Control Protocol:傳輸控制協議),但TCP協議傳輸的數據包比較大,且其有嚴格的傳輸檢測,也即,如果在傳輸過程中丟失數據包則必須重傳;因此如果在網絡帶寬不好,或者終端的解析度不高的情況下,並不能支持大數據包。
技術實現要素:
本發明實施例提供一種視頻傳輸方法及系統,將視頻的各個視頻幀拆分為多個小數據包進行傳輸,且在視頻的傳輸過程中允許丟失部分數據包而不要求重新傳輸,進而保證了視頻傳輸的穩定和流暢,提升了用戶體驗。
本發明實施例提供一種視頻傳輸方法,包括:
獲取視頻文件的視頻幀,並將各所述視頻幀拆分為多個數據包;
通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位置;
在所述視頻幀的所有所述數據包傳輸完畢之後,檢測未傳輸成功的所述數據包數量是否超過預設閾值;
在未傳輸成功的所述數據包數量並未超過預設閾值時,將所有傳輸成功的所述數據包合併為視頻幀。
在一個實施例中,所述傳輸協議為HTTP傳輸協議。
在一個實施例中,所述方法還包括:
在未傳輸成功的所述數據包數量超過預設閾值時,重新傳輸所述視頻幀中未傳輸成功的所述數據包或所述視頻幀的所有所述數據包。
在一個實施例中,所述通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位之前,包括:
根據當前的網絡帶寬手動調整每次傳輸數據包的數量和/或數據包的大小。
在一個實施例中,所述通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位之前,還包括:
根據當前網絡帶寬以及預設的數據傳輸表自動配置每次傳輸數據包的數量和/或數據包的大小。
對應於以上實施例所提供的一種視頻傳輸方法,本發明實施例還提供了一種視頻傳輸系統,包括:
拆分模塊,用於獲取視頻文件的視頻幀,並將各所述視頻幀拆分為多個數據包;
傳輸模塊,用於通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位置;
檢測模塊,用於在所述視頻幀的所有所述數據包傳輸完畢之後,檢測未傳輸成功的所述數據包數量是否超過預設閾值;
合併模塊,用於在未傳輸成功的所述數據包數量並未超過預設閾值時,將所有傳輸成功的所述數據包合併為視頻幀。
在一個實施例中,所述傳輸協議為HTTP傳輸協議。
在一個實施例中,所述系統還包括:
重傳模塊,用於在未傳輸成功的所述數據包數量超過預設閾值時,重新傳輸所述視頻幀中未傳輸成功的所述數據包或所述視頻幀的所有所述數據包。
在一個實施例中,所述系統還包括:
手動調整模塊,用於根據當前的網絡帶寬手動調整每次傳輸數據包的數量和/或數據包的大小。
在一個實施例中,所述系統還包括:
自動配置模塊,用於根據當前網絡帶寬以及預設的數據傳輸表自動配置每次傳輸數據包的數量和/或數據包的大小。
以上實施例所描述的一種視頻傳輸方法及系統,可以達到如下有益效果:獲取視頻文件的視頻幀,並將各所述視頻幀拆分為多個數據包;通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位置;在所述視頻幀的所有所述數據包傳輸完畢之後,檢測未傳輸成功的所述數據包數量是否超過預設閾值;在未傳輸成功的所述數據包數量並未超過預設閾值時,將所有傳輸成功的所述數據包合併為視頻幀。該方案將視頻的各個視頻幀拆分為多個小數據包進行傳輸,且在視頻的傳輸過程中允許丟失部分數據包而不要求重新傳輸,進而保證了視頻傳輸的穩定和流暢,提升了用戶體驗。
本發明的其它特徵和優點將在隨後的說明書中闡述,並且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
附圖說明
附圖用來提供對本發明的進一步理解,並且構成說明書的一部分,與本發明的實施例一起用於解釋本發明,並不構成對本發明的限制。在附圖中:
圖1為本發明根據一示例性實施例示出的一種視頻傳輸方法的一種實施例的流程圖;
圖2為本發明根據一示例性實施例示出的一種視頻傳輸方法的另一種實施例的流程圖;
圖3為本發明根據一示例性實施例示出的一種視頻傳輸方法的又一種實施例的流程圖;
圖4為本發明根據一示例性實施例示出的一種視頻傳輸方法的再一種實施例的流程圖;
圖5為本發明根據一示例性實施例示出的一種視頻傳輸系統的一種實施例的框圖;
圖6為本發明根據一示例性實施例示出的一種視頻傳輸系統的另一種實施例的框圖;
圖7為本發明根據一示例性實施例示出的一種視頻傳輸系統的又一種實施例的框圖;
圖8為本發明根據一示例性實施例示出的一種視頻傳輸系統的再一種實施例的框圖。
具體實施方式
以下結合附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用於說明和解釋本發明,並不用於限定本發明。
本發明公開的一實施例中提供了一種視頻傳輸方法,用以將視頻的各個視頻幀拆分為多個小數據包進行傳輸,且在視頻的傳輸過程中允許丟失部分數據包而不要求重新傳輸,進而保證了視頻傳輸的穩定和流暢,提升了用戶體驗。如圖1所示,圖1為本發明根據一示例性實施例示出的一種視頻傳輸方法的一種實施例的流程圖;本發明實施例中一種視頻傳輸方法包括步驟S10-S40:
在步驟S10中,獲取視頻文件的視頻幀,並將各所述視頻幀拆分為多個數據包;也即,在該實施例中,首先需要將將要進行視頻傳輸的視頻文件獲取到並將該視頻的每一幀視頻均分解為多個小數據包,該數據包的大小和每次傳輸的所述數據包的數量可以根據預先設定的條件進行調整,比如,在網絡帶寬允許時,可以調大所述數據包的大小,而在網絡帶寬不允許時,可以調小所述數據包的大小,從而令所述數據包在各種情況下均被允許進行傳輸,且可以保證其傳輸速度可以流暢,從而在視頻播放時令觀眾觀看到的實時傳輸的視頻是穩定的。可理解的,在該視頻幀全部傳輸完成後,傳輸成功的所述數據包中,所有數據包可以合成一個高清視頻幀,而丟失了部分數據包(在預設閾值內)之後的數據包可以合成一個標清視頻幀。
在步驟S20中,通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位置;也即,在該實施例中,所述傳輸協議可以根據需要進行設定,比如,在通常情況下,觀眾需要看到的是穩定流暢的視頻播放,因此,在一個實施例中,所述傳輸協議為HTTP傳輸協議(Hyper Text Transfer Protocol:超文本傳輸協議);可理解的,HTTP傳輸協議更通用,其適合於更多的播放器和瀏覽器,且在本實施例中,HTTP傳輸協議當發生數據包丟失的情況時,可以允許不再重傳而直接在該狀態下默認該幀視頻已經完成傳輸,由於丟失的部分數據包只是一幀視頻中數據的一部分,因此丟失的數據包的數量在預設閾值之內時,只是會使得視頻播放的清晰度下降,而不影響觀看,也即,優先保證實時流暢,畫質可以其次保證。可理解的,在一些實施例中,在網絡帶寬允許且觀眾要求播放高清視頻時,此時可以切換為採用TCP傳輸協議亦可。
在步驟S30中,在所述視頻幀的所有所述數據包傳輸完畢之後,檢測未傳輸成功的所述數據包數量是否超過預設閾值;也即,在數據包丟失超過預設閾值,比如全部丟失的情況下,此時肯定需要進行重傳,因此首先需要檢測丟失的數據包數量有多少,是否超過預設閾值,可理解的,所述預設閾值可以根據觀看視頻的對象進行設置;如果丟失的數據包數量並未超過預設閾值,則可以將傳輸成功的多個數據包合併為視頻幀進行播放;而如果丟失的數據包數量超過預設閾值,則說明丟失的數據包過多,此時依舊需要進行重傳以保證視頻播放。
在步驟S40中,在未傳輸成功的所述數據包數量並未超過預設閾值時,將所有傳輸成功的所述數據包合併為視頻幀。也即,當丟失的數據包並未影響到視頻播放時,可以直接在該情況下直接將數據包合成視頻幀進行播放,以優先保證視頻的播放流暢。
在一個實施例中,如圖2所示,圖2為本發明根據一示例性實施例示出的一種視頻傳輸方法的另一種實施例的流程圖;所述方法的步驟S30之後還包括步驟S50:
在步驟S50中,在未傳輸成功的所述數據包數量超過預設閾值時,重新傳輸所述視頻幀中未傳輸成功的所述數據包或所述視頻幀的所有所述數據包。也即,當丟失的數據包以及超出預設閾值影響到視頻播放時,在該情況下,需要進行重傳以保證視頻播放,而重傳的方式可以有兩種,一種是只重傳丟失的那部分數據包,另一種方式是將該視頻幀的所有拆分的數據包全部重傳。
在一個實施例中,如圖3所示,圖3為本發明根據一示例性實施例示出的一種視頻傳輸方法的又一種實施例的流程圖;所述方法的步驟S20之前還包括步驟S60:
在步驟S60中,根據當前的網絡帶寬手動調整每次傳輸數據包的數量和/或數據包的大小。也即,本實施例中,手動調節的過程是採用了node(node.js)技術來進行的,可以利用node技術來根據網絡帶寬情況來調整每次傳輸的數據包的數量和/或每個所述數據包的大小,node在本實施例中作為一個微型伺服器,且其更新時不用安裝,可以運用node實現p2p傳輸和繞開防火牆,運用它來進行調整每次傳輸數據包的數量和/或數據包的大小,高效穩定,簡單快捷。
在一個實施例中,如圖4所示,圖4為本發明根據一示例性實施例示出的一種視頻傳輸方法的再一種實施例的流程圖;所述方法的步驟S20之前還包括步驟S70:
在步驟S70中,根據當前網絡帶寬以及預設的數據傳輸表自動配置每次傳輸數據包的數量和/或數據包的大小。也即,本實施例中,自動配置的過程是採用了node(node.js)技術來進行的,可以利用node技術來根據網絡帶寬情況來調整每次傳輸的數據包的數量和/或每個所述數據包的大小,node在本實施例中作為一個微型伺服器,且其更新時不用安裝,可以運用node實現p2p傳輸和繞開防火牆,運用它來進行調整每次傳輸數據包的數量和/或數據包的大小,高效穩定,簡單快捷。
以上實施例所描述的一種視頻傳輸方法及系統,可以達到如下有益效果:獲取視頻文件的視頻幀,並將各所述視頻幀拆分為多個數據包;通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位置;在所述視頻幀的所有所述數據包傳輸完畢之後,檢測未傳輸成功的所述數據包數量是否超過預設閾值;在未傳輸成功的所述數據包數量並未超過預設閾值時,將所有傳輸成功的所述數據包合併為視頻幀。該方案將視頻的各個視頻幀拆分為多個小數據包進行傳輸,且在視頻的傳輸過程中允許丟失部分數據包而不要求重新傳輸,進而保證了視頻傳輸的穩定和流暢,提升了用戶體驗。
對應本發明實施例提供的一種視頻傳輸方法,本發明還提供了一種視頻傳輸系統;如圖5所示,圖5為本發明根據一示例性實施例示出的一種視頻傳輸系統的一種實施例的框圖;所述一種視頻傳輸系統,包括:
拆分模塊61,用於獲取視頻文件的視頻幀,並將各所述視頻幀拆分為多個數據包;也即,在該實施例中,首先需要將將要進行視頻傳輸的視頻文件獲取到並將該視頻的每一幀視頻均分解為多個小數據包,該數據包的大小和每次傳輸的所述數據包的數量可以根據預先設定的條件進行調整,比如,在網絡帶寬允許時,可以調大所述數據包的大小,而在網絡帶寬不允許時,可以調小所述數據包的大小,從而令所述數據包在各種情況下均被允許進行傳輸,且可以保證其傳輸速度可以流暢,從而在視頻播放時令觀眾觀看到的實時傳輸的視頻是穩定的。可理解的,在該視頻幀全部傳輸完成後,傳輸成功的所述數據包中,所有數據包可以合成一個高清視頻幀,而丟失了部分數據包(在預設閾值內)之後的數據包可以合成一個標清視頻幀。
傳輸模塊62,用於通過預設的傳輸協議將所述視頻幀的所有所述數據包傳輸至預設位置;也即,在該實施例中,所述傳輸協議可以根據需要進行設定,比如,在通常情況下,觀眾需要看到的是穩定流暢的視頻播放,因此,在一個實施例中,所述傳輸協議為HTTP傳輸協議(Hyper Text Transfer Protocol:超文本傳輸協議);可理解的,HTTP傳輸協議更通用,其適合於更多的播放器和瀏覽器,且在本實施例中,HTTP傳輸協議當發生數據包丟失的情況時,可以允許不再重傳而直接在該狀態下默認該幀視頻已經完成傳輸,由於丟失的部分數據包只是一幀視頻中數據的一部分,因此丟失的數據包的數量在預設閾值之內時,只是會使得視頻播放的清晰度下降,而不影響觀看,也即,優先保證實時流暢,畫質可以其次保證。可理解的,在一些實施例中,在網絡帶寬允許且觀眾要求播放高清視頻時,此時可以切換為採用TCP傳輸協議亦可。
檢測模塊63,用於在所述視頻幀的所有所述數據包傳輸完畢之後,檢測未傳輸成功的所述數據包數量是否超過預設閾值;也即,在數據包丟失超過預設閾值,比如全部丟失的情況下,此時肯定需要進行重傳,因此首先需要檢測丟失的數據包數量有多少,是否超過預設閾值,可理解的,所述預設閾值可以根據觀看視頻的對象進行設置;如果丟失的數據包數量並未超過預設閾值,則可以將傳輸成功的多個數據包合併為視頻幀進行播放;而如果丟失的數據包數量超過預設閾值,則說明丟失的數據包過多,此時依舊需要進行重傳以保證視頻播放。
合併模塊64,用於在未傳輸成功的所述數據包數量並未超過預設閾值時,將所有傳輸成功的所述數據包合併為視頻幀。也即,當丟失的數據包並未影響到視頻播放時,可以直接在該情況下直接將數據包合成視頻幀進行播放,以優先保證視頻的播放流暢。
在一個實施例中,如圖6所示,圖6為本發明根據一示例性實施例示出的一種視頻傳輸系統的另一種實施例的框圖;所述系統還包括:
重傳模塊65,用於在未傳輸成功的所述數據包數量超過預設閾值時,重新傳輸所述視頻幀中未傳輸成功的所述數據包或所述視頻幀的所有所述數據包。也即,當丟失的數據包以及超出預設閾值影響到視頻播放時,在該情況下,需要進行重傳以保證視頻播放,而重傳的方式可以有兩種,一種是只重傳丟失的那部分數據包,另一種方式是將該視頻幀的所有拆分的數據包全部重傳。
在一個實施例中,如圖7所示,圖7為本發明根據一示例性實施例示出的一種視頻傳輸系統的又一種實施例的框圖;所述系統還包括:
手動調整模塊66,用於根據當前的網絡帶寬手動調整每次傳輸數據包的數量和/或數據包的大小。也即,本實施例中,手動調節的過程是採用了node(node.js)技術來進行的,可以利用node技術來根據網絡帶寬情況來調整每次傳輸的數據包的數量和/或每個所述數據包的大小,node在本實施例中作為一個微型伺服器,且其更新時不用安裝,可以運用node實現p2p傳輸和繞開防火牆,運用它來進行調整每次傳輸數據包的數量和/或數據包的大小,高效穩定,簡單快捷。
在一個實施例中,如圖8所示,圖8為本發明根據一示例性實施例示出的一種視頻傳輸系統的再一種實施例的框圖;所述系統還包括:
自動配置模塊67,用於根據當前網絡帶寬以及預設的數據傳輸表自動配置每次傳輸數據包的數量和/或數據包的大小。也即,本實施例中,自動配置的過程是採用了node(node.js)技術來進行的,可以利用node技術來根據網絡帶寬情況來調整每次傳輸的數據包的數量和/或每個所述數據包的大小,node在本實施例中作為一個微型伺服器,且其更新時不用安裝,可以運用node實現p2p傳輸和繞開防火牆,運用它來進行調整每次傳輸數據包的數量和/或數據包的大小,高效穩定,簡單快捷。
以上實施例所描述的一種視頻傳輸系統,可以達到如下有益效果:將視頻的各個視頻幀拆分為多個小數據包進行傳輸,且在視頻的傳輸過程中允許丟失部分數據包而不要求重新傳輸,進而保證了視頻傳輸的穩定和流暢,提升了用戶體驗。
本領域內的技術人員應明白,本發明的實施例可提供為方法、系統、或電腦程式產品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本發明可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器和光學存儲器等)上實施的電腦程式產品的形式。
本發明是參照根據本發明實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。