本發明涉及流媒體點播直播技術領域,特別是一種流媒體播放質量的預測方法。
背景技術:
隨著中國網絡數字電視和視頻直播點播產業的飛快發展,基于有線網絡的數字電視用戶規模在近幾年持續增長,網絡帶寬的增長也促進了高清網絡電視的發展,數字高清電視和可交互網絡電視等業務的覆蓋面也越來越廣。由于用戶的快速增長和播放媒體的碼率的提升,給媒體服務器和傳輸網絡都帶來相當大的挑戰。
由于互聯網流媒體播放技術的復雜性,需要服務器端、傳輸網絡和客戶端共同合作完成流媒體的播放功能,任何一方出現問題都會影響播放質量。播放質量最直觀的表現就是是否發生卡頓,而卡頓發生對于用戶觀看體驗有極大的影響,容易導致用戶的流失。故對于流媒體播放質量的檢測和預測,對服務提供商有極大的參考價值,有利于服務提供商及時調整優化服務,提升用戶體驗。
目前對流媒體播放質量檢測的主要方法是在終端中集成軟探針軟件,一類軟探針是集成在播放器中,對播放器的工作狀態進行檢測從而得出播放質量;另一類軟探針是工作于系統底層,通過分析網絡數據包來評判網絡質量,從而推斷播放質量。這兩種技術能部分判斷播放質量,但缺乏自學習的能力,不能根據終端自身情況進行自適應的改變,同時缺乏對播放質量預測的能力,只能在故障發生后提供數據,不具備故障的前瞻性。
技術實現要素:
本發明的目的在于提供一種工作于系統底層,能實時判斷流媒體播放質量并對未來一段時間的播放質量進行預測的方法。
實現本發明目的的技術解決方案為:一種流媒體播放質量的預測方法,包括以下步驟:
步驟1,使用網絡監聽技術收集和本機系統相關的網絡數據包,通過IP地址、端口過濾技術保留流媒體播放相關的數據包;
步驟2,根據相應協議重新構建協議棧,獲取該協議棧中傳輸的媒體數據和網絡性能數據,并記錄主機的性能數據;
步驟3,解碼媒體數據,結合系統時間綜合判斷當前播放質量,結合上一階段的網絡和主機性能數據訓練機器學習模型;
步驟4,使用機器學習模型,通過當前網絡和主機性能數據,預測下一階段時間的流媒體播放質量。
進一步地,步驟1中所述通過IP地址、端口過濾技術保留流媒體播放相關的數據包,具體為:
使用電子節目指南服務器、調度服務器和內容分發網絡服務器的IP地址和端口對網絡數據包進行過濾,僅保留流媒體播放相關的數據包。
進一步地,步驟2所述根據相應協議重新構建協議棧,獲取該協議棧中傳輸的媒體數據和網絡性能數據,并記錄主機的性能數據,具體如下:
A)針對傳輸層是TCP協議的,使用對幀技術,獲取TCP中傳輸的流數據,同時記錄時延、亂序率、丟包率、低窗口率;
B)針對應用層是HTTP協議的,對包頭進行重新構建,獲取請求信息和響應信息,同時記錄各階段時延;
C)針對應用層是HLS協議的,記錄媒體碼率;
D)針對傳輸層是UDP組播協議的,記錄組播控制信息和媒體數據,同時記錄網絡時延、抖動;
E)記錄播放流媒體時的CPU使用率、內存占用率和IO性能。
進一步地,步驟3中所述的解碼媒體數據,結合系統時間綜合判斷當前播放質量,包括以下步驟:
步驟3.1.1,根據已下載的媒體片段,快速解碼獲取片段時長;
步驟3.1.2,通過媒體片段下載時間和媒體時長求出目前還可以播放的時長;
步驟3.1.3,通過積累的可播放時長和系統流逝的時間,判斷當前流媒體播放質量,并根據緩存時長進行播放質量評級。
進一步地,步驟3中所述的結合上一階段的網絡和主機性能數據訓練機器學習模型,步驟如下:
步驟3.2.1,選擇網絡性能數據中能夠體現網絡狀態的參數,加上反映主機工作狀態的性能數據參數,進行預處理和數據融合,最后得到特征向量;
步驟3.2.2,將當前狀態10秒前的由步驟3.2.1中得出的特征向量作為輸入,將當前流媒體播放質量評級作為輸出,訓練具有分類功能的機器學習模型。
進一步地,步驟4中所述的使用機器學習模型,通過當前網絡和主機性能數據,預測下一階段時間的流媒體播放質量,具體為:
將當前狀態的由步驟3.2.1得出的特征向量作為輸入,機器學習模型的輸出作為10秒后流媒體播放質量的預測。
本發明與現有技術相比,其顯著優點為:(1)通過歷史數據預測未來的播放質量,能及時通知服務提供商,特殊情況下能在故障發生之前發現故障、排除故障或采取針對性措施,提升服務質量;(2)由于流媒體播放終端的網絡環境和主機環境各不相同,使用機器學習算法能使預測功能在各種工作環境下都能自動適應;(3)具有實時性,能在占用少量CPU時間和內存的前提下,判斷當前流媒體的播放質量,并學習分析采集的數據和流媒體播放質量之間的潛在聯系,機器學習算法能不斷自動調優,使預測準確性不斷提升。
附圖說明
圖1是本發明中流媒體播放質量預測的機器學習模型訓練流程圖。
圖2是本發明中機器學習模型預測流媒體播放質量的流程圖。
圖3是本發明的整體系統數據流圖。
具體實施方法
下面對本發明方案進行詳細說明。
本發明在對流媒體播放質量進行預測的時候,主要分為兩個部分,第一個部分是利用歷史數據對預測模型進行訓練,第二部分是用當前性能數據輸入預測模型并對未來播放質量進行預測。
本發明流媒體播放質量的預測方法,包括以下步驟:
步驟1,使用網絡監聽技術收集所有和本機系統相關的網絡數據包,并通過網絡協議(Internet Protocol,IP)地址、端口過濾技術保留流媒體播放相關的數據包。
所述通過IP地址、端口過濾技術保留流媒體播放相關的數據包,具體為:
使用具體的電子節目指南(Electronic Program Guide,EPG)服務器、調度服務器和內容分發網絡(Content Delivery Network,CDN)服務器的IP地址和端口對網絡數據包進行過濾,僅保留流媒體播放相關的數據包,減少后續流程的數據量,提升了性能。
步驟2,根據相應協議重新構建協議棧,獲取該協議棧中傳輸的媒體數據和網絡性能數據,并記錄主機的性能數據。
所述根據相應協議重新構建協議棧,獲取該協議棧中傳輸的媒體數據和網絡性能數據,并記錄主機的性能數據,具體如下:
A)針對傳輸層是傳輸控制協議(Transmission Control Protocol,TCP)的,使用TCP對幀技術,將亂序到達的TCP數據包以包序號排序,將排序完成的數據包中的負載數據連接,最后獲取TCP中傳輸的流數據,同時記錄包時延、亂序率、丟包率、低窗口率等性能參數。
B)針對應用層是超文本傳送協議(HyperText Transfer Protocol,HTTP)的,對請求和響應包頭進行重組,獲取請求信息和響應信息,同時記錄各階段時延。
C)針對應用層是HTTP流直播(HTTP Live Streaming,HLS)協議的,通過分析請求響應包,獲取媒體碼率等相關信息。
D)針對傳輸層是用戶數據報協議(User Datagram Protocol,UDP)組播協議的,記錄因特網組管理協議(Internet Group Management Protocol,IGMP)控制信息和媒體數據,同時記錄網絡時延、抖動、包間隔等性能數據。
E)記錄播放流媒體時的中央處理器(Central Processing Unit,CPU)使用率、內存占用率和輸入輸出(Input/Output,IO)性能等主機性能數據。
步驟3,解碼媒體數據,結合系統時間綜合判斷當前播放質量,結合上一階段的網絡和主機性能數據訓練機器學習模型。
所述的解碼媒體數據,結合系統時間綜合判斷當前播放質量,包括以下步驟:
步驟3.1.1,根據已下載的媒體片段,快速解碼獲取片段時長。
步驟3.1.2,通過媒體片段下載時間和媒體時長求出目前還可以播放的時長。
步驟3.1.3,通過積累的可播放時長和系統流逝的時間判斷當前播放是否發生卡頓,即當前流媒體播放質量,并根據緩存時長等參數進行播放質量評級。
所述的結合上一階段的網絡和主機性能數據訓練機器學習模型,步驟如下:
步驟3.2.1,選擇網絡性能數據中能夠體現網絡狀態的參數,加上反映主機工作狀態的性能數據參數,并對部分參數進行預處理和數據融合,最后得到特征向量;
步驟3.2.2,將當前狀態10秒前的由步驟3.2.1中得出的特征向量作為輸入,將當前流媒體播放質量評級作為輸出,訓練具有分類功能的機器學習模型。
步驟4,使用機器學習模型,通過當前網絡和主機性能數據,預測下一階段時間的流媒體播放質量,具體為:
將當前狀態的由步驟3.2.1得出的特征向量作為輸入,機器學習模型的輸出作為10秒后流媒體播放質量的預測。
該方法能夠在不更改播放器和系統的情況下,對當前流媒體播放質量進行準確判斷,并通過機器學習算法對一段時間后的播放質量進行預測。本方法穩定高效,能通過不斷在線學習,針對網絡和主機環境不斷優化,使預測準確度不斷提高,對于服務方提高流媒體播放質量有重要的參考意義。
下面將通過具體的實施例來說明本發明的具體實施方法。
實施例1
本發明中利用歷史數據對機器學習模型的訓練的流程圖如圖1所示。具體過程分為以下步驟:
步驟1,創建原始套接字在鏈路層進行旁路監聽。服務提供商的流媒體服務器地址和協議在短時間內不會發生變化,故可以通過下載配置文件的方法,獲取所有和流媒體播放相關的服務器地址和端口等信息(包括EPG服務器、調度服務器和CDN服務器的IP地址及其域名規則等),進而選擇預編譯的BPF過濾器并將其直接載入內核。
步驟2,根據數據包所屬的協議類型,對上層協議進行還原,并取得其中的數據內容以供后續分析,同時記錄網絡性能數據。本發明需要處理的協議主要有以下幾種:1)TCP協議數據包,讀取包頭標志位,獲取當前TCP流的狀態,當遇到TCP握手包,則初始化一個狀態機和緩沖內存用于記錄該TCP流的工作狀況和傳輸的數據,同時讀取包頭的源IP地址、源端口、目標IP地址、目標端口、順序號(Sequence number)、確認號(Acknowledgement number)和窗口(Window)等協議信息和數據包到達的絕對時間,記錄在結構體中,用于后續性能數據計算;當遇到其他TCP包,根據源IP地址、源端口、目標IP地址和目標端口查找已有的TCP流,如果找到則根據包頭標志位、順序號和應答號更新狀態機狀態,在傳輸數據時把數據按順序號進行排序并記錄到緩沖中,并根據數據包到達時間、包頭信息和傳輸數據量,計算上行速率、下行速率、各階段包時延、最大包間隔、最大抖動、丟包率、亂序率、低窗口率等TCP協議相關的性能數據,如果沒找到所屬的TCP流則丟棄該數據包。2)IGMP協議數據包,直接對包進行解析,獲取當前加入或退出的組播組信息,維護一個當前所屬組播組的集合。3)UDP數據包,根據所屬組播組的集合過濾出有效組播數據包,提取包中的流媒體信息,以供后續分析。4)HTTP協議數據,該數據是在TCP流傳輸的數據中獲取的,通過HTTP協議本身的結束標記判斷請求或響應是否完整,根據請求地址或響應信息中的數據類型判斷是否為流媒體數據,如果是則在數據傳輸過程中提取各種中間信息,以供后續分析;如果不是,則刪除該TCP流的所有記錄,減輕TCP協議分析壓力。5)HLS協議數據,該數據是在HTTP協議傳輸的數據中提取的,主要獲取流媒體碼率和媒體長度等信息。在統計網絡性能數據時,以一定時間間隔調用系統工具計算當前CPU使用率、內存使用率和IO速率,并記錄。
步驟3,通過之前協議中獲取的媒體數據,快速解碼流媒體數據求出當前下載的媒體可播放時長,減去當前時間和下載開始時間的差,即為目前可播放時長,并對可播放時長做求和操作,即為總可播放時長。若時長大于5秒,則認為當前播放質量好;若時長處于2-5秒,則認為當前播放質量中等;若小于2秒,則認為當前播放質量差;若小于0秒,則認為當前播放質量極差(已有卡頓產生)。對于播放質量差及卡頓的情況,上報監控服務器本次故障發生的信息。
步驟4,提取能夠主要反映當前環境狀況的性能數據,例如,網絡層面的最大包延遲、丟包率、亂序率、低窗口率、最大抖動、上行速率和下行速率等;協議層面的RTP序列丟失、HTTP返回錯誤碼、HLS協議不完整、HLS序列丟失等;媒體層面的媒體分辨率、媒體平均碼率、媒體類型等;直觀反映主機工作情況的主機性能數據,例如,CPU使用率、內存使用率和IO速率等。將這些數據合并為一個一維向量,做歸一化處理后,存入循環隊列中。
步驟5,取出循環隊列中10秒前記錄的性能數據向量,和當前的流媒體播放質量作為輸入和輸出,訓練Softmax分類器,使用在線更新的方式更新權重。
本發明中利用現在性能數據對未來一段時間的流媒體播放質量進行預測的流程圖如圖2所示。
具體過程是:讀取循環隊列中現在的性能數據向量,輸入之前訓練的Softmax分類器中,取Softmax分類器的輸出作為10秒后的流媒體播放質量預測結果。如果預測未來的播放質量會變差,則觸發播放器內部機制,增加緩沖長度或其他主動策略避免卡頓的發生。
綜上所述,本發明利用終端設備所在的網絡環境和本機性能的歷史數據作為訓練數據,用現在的性能數據預測一段時間后的流媒體播放質量,整體數據流圖如圖3所示。本發明不僅僅提供當前播放質量的準確判斷,更能對未來進行預測,這對于提升服務質量和用戶體驗有極大的作用;其次本發明充分考慮每臺設備的獨特性,方法具有普適性,且能隨著工作時間的增長不斷自我優化;并且本發明方法簡單高效,易于實現。