快手QoE指标设计的分析初探
全鏈路的數據收集,分析,才能精準的定位問題,并制定方案改進。本文來自快手流媒體大數據平臺架構師羅喆在LiveVideoStackCon熱身分享上的分享,他會在10月19-20日的LiveVideoStackCon上分享更詳細和完整的內容。
文 / 羅喆
整理 / LiveVideoStack
直播回放:
https://www.baijiayun.com/web/playback/index?classid=18073150147056&session_id=201808020&token=GqnbiUX1y4lt681rrJ0J_RVM5yFl6dFS4sB52SAekvWq3jsp5ES4O8ykX8qRNLttvr5OwSoF9BcKp0fXMnVKLQ
今天的主要內容分為以下幾個部分:
1,快手業務簡介
2,用戶體驗(QoE)監測指標簡介
3,直播質量(QoS)指標介紹
4,直播QoE-QoS指標聯合分析
5,短視頻大數據體系簡介和預告
一,?快手業務簡介
快手的主要業務就是短視頻和直播,上圖是一些快手的直播截圖,從這些圖片中可以看出快手平臺的內容比較具有生活氣息,場景十分豐富,有室內有戶外,有游戲有吃播,因此從技術的角度來看,我們主要需要解決用戶地域分布廣、網絡環境復雜、手機機型復雜、業務場景豐富等挑戰。面對海量的用戶,復雜的場景,我們選擇通過建立全面的數據監測體系,實時感知用戶的體驗問題,從而提出有針對性的優化策略,并且評估優化的收益。在實踐中,我們總結了一系列用戶體驗(QoE)、服務質量(QoS)相關指標,研究了它們之間的區別和聯系,對于體驗優化有指導性作用,在此分享一下我們的相關經驗,希望對從事相關工作的同學們能有幫助。
二,?直播的用戶體驗(QoE,Quality of Experience)監測指標簡介
簡單介紹一下QoE(Quality of Experience)用戶體驗指標,QoE指標的設計理念是為了更貼近用戶的真實感受,收集的是用戶的行為數據,主要是用來衡量用戶的主觀體驗,比如直播卡頓了,多少用戶會選擇離開當前直播間。與之對應,技術服務質量指標(QoS,Quality of Service),主要反映的是客觀指標,如發生了多少次卡頓。如上圖所示,是四個典型QoE指標的示例。
首先,次均觀看時長和在線人數會反映用戶的行為,從圖中可以看出,次均觀看時長和在線人數兩條曲線在晚高峰時段的時候會迅速達到峰值,而在白天一直處于一個比較平穩的增長狀態。這個增長趨勢是用戶行為導致的,因為用戶在晚上的時候更有時間刷短視頻和觀看直播,所以次均觀看時長和在線人數都會上漲。這個跟服務質量也會有關系,在晚高峰的時候如果卡頓嚴重,可能會引起曲線下行,但總體上來說,服務質量指標在這里所占的權重并不是決定性的。
下面來看完播率和用戶評論卡頓數,完播率的定義是完整的觀看完一個短視頻的比例,用戶評論卡頓數的定義是直播間里觀眾給主播發送內容是”卡”或同義評論的數量。完播率評價的是,用戶是否看完一個短視頻。用戶評論卡頓數是用戶很直觀的一個真實反饋,當他覺得這個直播間卡了,他會要強烈的抱怨一下,這反應了用戶的真實體驗。在影響這兩個指標的因素中,技術服務質量的權重就會比較大。完播率涉及到因素主要包括推薦給用戶的視頻是不是他喜歡看的,以及整個播放過程是不是流暢,這些與具體的技術服務指標都有較強相關性。用戶評論卡頓數的波動有可能因為直播的過程中有某些因素影響到了直播,比如說網絡抖動,主播機器卡了或者商業CDN的服務質量下滑等等,這些都會導致用戶觀看卡頓,而這些都是技術服務質量。這四個QoE指標,能比較完整的說明QoE指標和用戶體驗相關,也和QoS相關,但是QoS在不同的QoE指標所占的權重是不一樣的,有的指標用戶行為的權重會大一些,有的指標QoS權重會大一些。
對于快手來說,QoE是重要的監測指標,但如果要找到影響QoE的因素,還需要通過QoS來監測。
三,?直播技術服務質量(QoS,Quality of Service)指標介紹
QoS指標用于衡量系統中,客觀發生的質量相關事件,是技術優化的主要目標。從技術角度出發的優化,均以QoS為目標,如卡頓率,首屏時間等。下面介紹一下快手的QoS指標設計思路。
1, 直播完整流程
首先一起看一下直播業務的完整流程,可以分為三塊:推流端,傳輸CDN和播放端。
2, 主播端采集數據
?
制訂QoS指標之前,需要先采集比較詳細的打點數據,在主播端,采集架構圖從左往右,首先是攝像頭和麥克風的采集,之后是去噪,美顏和特效等前處理算法,這些技術模塊非常消耗CPU和機器的內存,為了監控性能,需要對這個過程中的幀率、CPU和內存占用做詳細的上報。之后進入編碼環節,這里我們同樣會監控幀率,除此之外,我們也會采樣上報編碼器的客觀質量數據,便于線上做大規模質量調優。在傳輸環節,我們會統計主播端的卡頓次數,記錄收流源站服務器的IP、地理位置等詳細信息。
3, 播放端采集數據
播放端的采集數據,采集過程是主播端的逆序過程。我們會詳細記錄拉流節點信息,細分的首屏時間,接收緩沖區信息,卡頓,碼率、解碼幀率等,在播放失敗的時候,也會上報錯誤信息和原因。?
?
4, 直播QoS指標
采集到了數據之后,怎么把它轉換成一個監測指標呢?數據必須匯聚成一些對用戶體驗有關鍵影響的指標才能進行觀測,下面按照直播的流程介紹每個核心QoS指標。
首先,在主播端,評價主播端的推流性能是通過直接計算主播的推流卡頓,主播端最容易發生問題就是網絡抖動導致卡頓。在觀眾端,首先是通過計算黑屏率評估拉流可用性,黑屏指用戶完全看不到直播的畫面,即整個直播觀看不可用。
當用戶看到畫面后,需要評估開播過程的性能,整個開播過程是否是流暢的,這里主要用首幀時間來評估。
拉流開播之后,用戶可能會持續觀看一段時間,通過在拉流端上報卡頓次數和卡頓時長來計算整體的卡頓率,作為穩定播放期間性能的評估指標。卡頓率的定義就是給定時間窗口內,發生過卡頓的觀看行為數量除以總的觀看行為數量。
除了性能之外還有穩定性,拉流端還有一種場景是可能它因為某些原因導致斷線了,斷了之后用戶會自動重連,通過統計重連次數觀測穩定性。
從推流端到拉流端的整個全流程都用這五個核心的指標來監控大盤的情況。
5, 分析維度
有了核心的QoS指標,還需要了解從哪些維度上來分析這些指標,下面介紹一下分析這些指標的維度。
首先,第一個維度是省份,即地域,也就是空間的維度,因為推流和拉流CDN服務商的資源分布是按大省或者大區來部署的,所以選擇省份作為關鍵的地域上的維度來觀測QoS至標。
運營商ISP,CDN,終端類型,網絡類型,客戶端版本都是在分析問題時常見的維度。
有一個特殊的維度是直播房間,單個房間的觀看卡頓率,主播有沒有推流卡頓也是經常需要用到的QoS信息。
剩下的還有很多細分的維度都是業務相關的,這里就不一一列舉了。這么多的維度之后,如果不進行聚合,用于數據分析和監控很不方便。必須通過OLAP維度聚合模塊,將維度進行一定程度上的聚合。
目前智能監控主要是看省份,ISP和CDN三個維度聚合的結果,用這個來做線上的報警,參考歷史同期的數據,做同比和環比的監測。此外,這些維度聚合之后進入到數據可視化模塊,數據可以很方便的做多樣的可視化和多維度的分析,這里主要是離線的業務分析。
四,?直播QoE-QoS指標聯合分析
剛才介紹直播的QoE和QoS指標的數據采集,計算方法和觀測的維度。接下來舉例介紹,QoE和QoS指標到底是有什么關聯?
這個截圖是快手真實的業務數據的截圖,橫軸是卡頓率,縱軸是播放時長,可以明顯的看到這個曲線的趨勢是隨著卡頓率的上漲,播放時長快速的下降。實際情況中,只要數據規模足夠大,不管從任何維度觀測,這兩個指標的關系,基本上都符合這樣的規律。這個規律也很容易理解,當直播觀看變得很卡的時候,用戶繼續觀看的動力下降,很多人會選擇退出直播間。?
接下來,看一個具體例子,這是一個單房間的卡頓監控數據:
上圖的第一條曲線,這個是某直播房間的用戶評論中出現卡頓的數量,剛才在介紹QoE指標的時候也專門提到過這個指標,是用戶主觀感受的直接反饋。在17點58分的時間點上,這個指標突然的上漲,應該是在這個時候用戶大量的感覺到卡頓了,這個時候需要立刻去查和它相關的QoS指標:單個房間的拉流卡頓率。
首先要判斷是不是由于QoS指標出現了問題導致的QoE指標波動。比如說主播在直播打王者榮耀,但他的手機連接王者榮耀的服務器卡了會使整個游戲畫面變得比較卡,從而導致直播看上去比較卡,這個時候用戶的QoE指標會發生變化,但直播的QoS指標都是正常的,所以在發生QoE指標變化的時候,一般是先看和它直接相關的QoS指標是不是真的有問題。這個例子,在同樣時間點,這個房間的拉流卡頓率也大幅度的上漲,可以判斷是服務質量出了問題。
進一步分析,由于有大量用戶拉流卡頓,我們推測,很有可能是跟主播推流卡頓有關,那么我們看下第三張圖,主播端推流監控數據,這兩條曲線分別是推流的幀率和碼率,在同樣的時間點,可以看到是主播推流碼率大幅度下降了,此時,觀眾端卡頓率上升且QoE指標評論卡頓數也大幅度的上升。這個時候,就已經定位問題應該是主播的網絡發生了一些抖動,推流碼率大幅度的下降,觀眾端感受到的卡頓大幅度上升。
這是一個QoE指標和QoS指標關聯的例子,也展示了平時跟進具體問題的方法:重點監控QoE和核心的QoS指標,在QoE的指標發生問題的時候,立刻快速的找到和它直接相關的QoS的指標,判斷是不是服務質量真的出現問題。
但是這個例子還有一個很有意思的地方,這個直播同樣的時間點,觀察另外一個QoE指標:觀看人數
圖中的第一條曲線,是觀看人數曲線,對比下面的兩條曲線,和上圖一樣,是兩個QoS指標。可以看到,在主播推流發生卡頓的時刻,觀看人數這個QoE直播只是略有下降,并沒有像評論卡頓數指標那樣出現大幅的變化。
這個現象說明,用戶雖然紛紛抱怨直播卡,但是他們并沒有離開直播房間,還是繼續停留在直播房間里面。這個情況完全違背了之前介紹的,卡頓率影響觀看時長的規律。卡頓率高了,但是大部分觀眾還是愿意繼續觀看。
QoE與QoS指標之間的關系,在大規模數據集下,規律是非常穩定的,但是在分析具體問題的時候,情況往往會發生變化,因為實際會影響QoE指標的因素太多,QoS指標只是其中一個因素,在QoS指標在短時間下降,沒有差到無法忍受的情況下,直播間的內容和氛圍,粉絲群體區別,主播個人號召力,都會更顯著影響QoE。
五,?短視頻業務
接下來簡單介紹一下快手的短視頻業務,也為十月份的LVS大會做一個預告。這里主要是簡單講下短視頻業務和直播到底有什么不一樣?主要從內容生產,傳輸,觀看來對比:
首先,短視頻會涉及到比較復雜的內容生產流程,導入、拍攝、剪輯,可以疊加魔法表情、特效濾鏡,比直播要復雜很多。其次是在分發過程中,短視頻可以做更靈活的策略,如多CDN調度,預加載,CDN預熱之類的策略,監控起來也會有很多不一樣的QoS、QoE指標,如慢速比、播放完成率等。
在觀看端,短視頻的特點是觀看時長、下載時長很短,高頻,快手一個短視頻默認只有7秒,下載時長可能只有1-2秒,而且是一下到底的體驗。用戶對于偶爾出現的卡頓,會更加敏感。
?
正因為短視頻的業務,比直播要更復雜一些,因此我們在制訂QoE和QoS指標時候,遇到了很多困難。第一,短視頻的功能繁多,流程復雜;第二,涉及模塊多,包括上傳模塊,轉碼模塊,CDN的各種復雜策略,全鏈路的監控難度比較大;第三,要平衡清晰度和流暢度,成本之間的矛盾關系,因此QoE和QoS的指標制定起來,挑戰更大。
在十月份LVS大會正式的演講中,我將會給大家詳細分享,快手團隊是如何解決這些困難,制定出符合短視頻業務需求的QoE和QoS指標,并利用這些指標指導體驗優化的。希望感興趣的同學能夠積極報名參會。
六,?Q&A
Q1: 碼率自適應做在編碼之后,如何實現自適應過程?
A: 我們實現碼率自適應,主要是通過預測可用發送帶寬,并且在帶寬發生變化時,反向反饋給編碼器,使之及時調整輸出碼率,從而實現碼率自適應。
Q2: 發送端到接收端的延時是如何統計的?
A: 這個是我們的一個技術特性,可以大概提一下是將一些特殊信息寫在視頻流里面,通過這些特殊信息,在播放端就可以判斷,它和主播之間的延遲是多少。
Q3: 主播端和拉流端的Buffer長度是怎樣確定的?
A: 其實主播端沒有一個buffer的強行限制,直播端會在buffer到一定長度進行丟幀,在拉流端,我們將Buffer長度限制在5秒,為了控制延時的大小。
Q4: 卡頓時長的過濾是在服務器端,還是在客戶端?
A: 這些值的過濾都是在服務器端做。
Q5: 那么主播推流端的GoP大小恒定的,還是個動態變化的?
A: 動態變化,根據場景設置,但不會超過一個限定值。
總結
以上是生活随笔為你收集整理的快手QoE指标设计的分析初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 音视频技术开发周刊 63期
- 下一篇: 走进武汉,探索多媒体开发最佳实践