优酷智能档的设计、实现和应用
簡介:?如果你用優酷客戶端追劇,會發現現在選擇清晰度沒那么麻煩了。以前在地鐵上為了“不 卡”用低清晰度,在家里的 Wi-Fi 環境為了看得更舒服再手動換 1080P?,F在清晰度選擇那么 多,有的時候網絡不好還得糾結下用哪個能夠剛剛合適。優酷“智能檔”,隨時隨地實時地提供 最合適的清晰度給你。
作者| 阿里文娛高級無線開發工程師 去疾
一、背景與簡介
如果你用優酷客戶端追劇,會發現現在選擇清晰度沒那么麻煩了。以前在地鐵上為了“不 卡”用低清晰度,在家里的 Wi-Fi 環境為了看得更舒服再手動換 1080P?,F在清晰度選擇那么 多,有的時候網絡不好還得糾結下用哪個能夠剛剛合適。優酷“智能檔”,隨時隨地實時地提供 最合適的清晰度給你。
“智能檔”要解決的關鍵問題就是“高清、不卡”。這背后需要自適應碼率技術的支持,按 一般流程,首先在視頻生產端對同一視頻源使用不同的配置編碼成不同碼率/清晰度的視頻流, 按同樣的播放時長(一般 10s 以內)對齊地切分成視頻分片,并以 metadata 的形式組織起來(如 HLS 的 m3u8) ,然后結合視頻播放的環境和狀態,不斷選擇和切換最合適的清晰度。
但這樣的技術在實際應用中面臨著諸多挑戰,國內其它主要的視頻平臺目前都還在探索階 段,沒有實際上線的同類產品功能。接下來就介紹下優酷智能檔的技術實踐。
二、運行環境和整體設計
智能檔要解決的問題是播放體驗問題,就一定是和播放器有關,為了支持豐富的業務場景, 優酷播放器有多層封裝,最內層的部分使用自研的播放器內核(Ali Player)。
如上圖所示,優酷的播放器內核支持多個播放實例,每個實例在播放鏈路上由三個主要部 分構成:
數據源處理模塊(Source Module):負責理解播放服務傳遞下來的視頻信息,都有哪些清晰度,多少個分片,去哪里下載;解復用(demuxing)拿到需要進一步處理的音頻、視頻數據包;
解碼模塊(Decoder Module):對音頻、視頻等流的數據包進行解碼,得到一幀幀的圖像數據 和聲音數據;
消費者模塊(Consumer Module):同步音頻、視頻流,通過對應設備渲染出來。
智能檔和播放器內核最主要的交互就在數據源處理部分,因此也就有了下面這張圖。
需要著重介紹的有這么幾個點: 智能檔控制器與數據源及其他模塊的交互和控制:收集視頻元數據和播放狀態信息(比如緩沖區時長 buffer )、網絡信息,分片級別的碼率/清晰度選擇,清晰度切換控制,還有其它數據源鏈路上的事件響應和超時控制等;
策略引擎框架:支持多種策略實現運行的一個接口/環境/容器,每種算法策略實現根據從播 放器內核和網絡環境信息等輸入,給定一個清晰度選擇的輸出;
數據鏈路閉環:客戶端決策信息埋點上報,云端數據分析處理,優化后的配置更新或模型 下發;
其中,策略框架及各種清晰度選擇算法策略實現是整個智能檔的核心靈魂,策略框架提供 了一個平臺,目前優酷的智能檔使用 ABTest 的方式支持了從基于各項離散規則到基于強化學 習神經網絡模型的多種算法策略的實現,這些算法可以根據配置或模型下發動態調整算法參數, 互相對比優化,互相補充。
三、理論基礎 vs. 實際應用
說起算法策略,從 2002 年碼率自適應這項技術被定義開始,學術界的相關論文就層出不窮。這些論文中主要討論了幾大類決策算法:
如上描述,每一類算法都有其優勢和缺點,這些算法思想為我們提供了理論基礎,使得我 們能夠站在前人的肩膀。但與此同時更需要注意的是,這些學術性的理論很多是停留在實驗室 階段,在實際播放場景應用時會面臨諸多挑戰。
1. 播放體驗的衡量
很多論文在說到播放體驗的時候,都提到一個概念 QoE (Quality of Experience),然而不 同的算法里似乎計算方式都不完全相同。更重要的是,這是一個絕對值,在一個特定的網絡環 境下我們其實更關心用戶的相對體驗,比方說用戶明明在一個網絡較差的環境下,他的 QoE 不 可能非常高,但有可能已經是最好的選擇了,因而我們需要衡量的是一個海量用戶下的總體統 計值。此外,QoE 的結果是一個冷冰冰的值,可解釋性并不好。結合我們的業務指標情況,我們為了更直觀說明體驗好不好,使用了更為直接的卡頓率 & 清晰度時長占比 等數據,但光有 這些還不夠。一次播放體驗好還是不好,在很大程度上用戶是有共同認知的,比如用戶明明知 道家里網很差,對清晰度預期就不會太高,如果“智能檔”在這種情況下還要勉強用高清晰度, 造成的卡頓都是可以預期的,這就是一種反認知的情況,因此我們也針對一些主觀上反常的 bad case 進行定義和統計,多角度來評價體驗情況。
2. 起播清晰度處理
按照學術界的理論,避免卡頓非常重要,在沒有緩沖和沒有分片下載速度的條件下,選擇 最低的清晰度開始起播。然而,在實際應用中,這完全是不現實的,很多對播放體驗要求比較高的用戶,尤其在認為網絡狀況非常好的環境中,無法忍受第一個分片(一般長達 10s)的模 糊畫面,會考慮直接放棄使用“智能檔”。尤其作為國內視頻播放場景下的一個新生產品,在絕 大多數用戶從來沒有使用過自動切換清晰度的情況下,不利于讓這個體驗得到認可。
因此,智能檔在起播階段就盡力收集影響數據下載和可能造成卡頓的所有因素,在起播第 一片就給用戶最合適的清晰度、最優的播放體驗。目前,作為起播參考的因素有網絡信號強度、 連續播放場景下的上一次播放清晰度、到服務端的請求耗時等。一段簡單的偽代碼描述如下:
3. 網絡預測和超時機制
人們常說“天道無?!?#xff0c;其實網絡也是如此。在網絡條件比較差的情況下,通常下載速度波 動非常大,而且可以是毫無規律任意幅度的變化,這對清晰度決策帶來了很大風險 , 除 了 Robust 方案(即考慮預測誤差)之外,超時處理機制是非常重要的,而這一點卻很少在學術 論文中提到。當預期時間內視頻文件沒有下載完成,則我們可以認為網絡變化超出了預期,需 要緊急降級。這里需要注意的是,編碼后視頻幀的信息是以 GOP(Group of Pictures) 為單位 的形式存在,為了能夠不間斷不跳幀的連續播放,不能在一個 GOP 內部切換數據流。 超時機 制的引入帶來的一個問題就是,為了能夠超時中斷,數據無法在部分完成下載的情況下提前傳 遞給播放鏈路,一定程度上提高了解碼及后續渲染鏈路上數據斷流導致的卡頓風險,因此超時 機制是需要精心設計調試的。智能檔的做法是按需設定超時,像 buffer 本身已較小這類情況,直接放棄超時設置。 其實除了上述三點以外,出于實際問題考慮,優酷平臺存在著一些其它的業務特點,也帶來了一些新的挑戰:學術界的論文中,涉及到的實驗視頻文件,一般是 4s 以內,而優酷的生產端從成本考慮出發,一般一個 GOP 持續 10s,一個分片一個 GOP,這無形中增加了下載失敗 的風險,也拉長了每次統計速度的時間間隔;還有,為了視頻壓縮的足夠小,同一清晰度的視 頻文件的編碼碼率波動也非常大,而且正片流里也會從業務角度考慮中插一些碼率不同的廣告; 非 Wi-Fi 網絡下,怎么協調播放體驗和流量消耗等。這些都是在實際應用場景當中需要面對的問題,由于篇幅原因不在此一一詳述。
四、其它技術實踐
除了上文提到的整體結構和算法策略方面的理論與實踐之外,一些新的新技術和應用場景 也在智能檔上得到了應用。
1. 機器學習技術的應用。
目前智能檔內采用的是基于 A3C(Asynchronous Advantage Actor-critic) 的強化學習神經網 絡模型,離線訓練后,通過 MNN(Mobile Neural Network,阿里集團開源的移動端神經網絡引擎) 在移動端上動態更新部署。隨著整個“采集-分析-優化-更新”的數據鏈路不斷完善,智能檔歷史 決策數據的收集積累,基于強化學習等策略的模型將進一步得到增強。
下面是客戶端運行神經網絡模型來進行決策的一個示意圖。
2. 大型直播場景
在“天貓雙 11 狂歡夜”晚會上,智能檔也在直播中得到了應用。在直播場景下,除了上述 提到的播放體驗優化外,智能檔也可以做到分鐘級的帶寬和流量控制,同時在某一路流出現問 題時,能夠靈活避開,為流控與降級等提供了重要保障手段。
五、小結
優酷的智能檔策略最初的雛形是根據一些已知理論和不同條件下的播放場景定制了一些離 散規則,隨著策略框架的逐步迭代,逐漸衍生出了基于 MPC 思路和基于強化學習的多套算法 策略,并且在對比中不斷互補和優化。經過這些優化,智能檔的今天有了非常不錯的播放體驗, 成為優酷播放器默認的清晰度選擇。
從統計數據上看,與傳統的清晰度相比,在卡頓率(卡頓頻次與播放次數的比值)穩定低于 720P 的前提下,720P 及以上的播放時長占比不低于 80%;在移動蜂窩網絡條件下,智能檔和傳統清晰度相比,能夠避免掉近 50% 的卡頓發生;
主觀體驗變化,隨著半年來的迭代優化,從用戶的反饋上來看,也從最初的不太認同,到逐步接受,甚至缺“智能檔”不可;
最后,再以幾個點對本文做一個小結。 優酷“智能檔”最終展現給用戶的是客戶端上的一個功能點,但從技術角度上來說,這是貫穿了從視頻生產到播放服務,整合了數據的收集、監控、分析,配置的實時下發和模型的動態更新的體系化工程,“智能檔”需要這樣的平臺上,才能做到真正有效的快速試錯和優化迭代;
在智能檔碼率選擇的算法策略上,學術界已經有非常多的基礎理論,但由于實際播放場景 的多方面體驗要求、每個平臺的自身的特點等原因,這些理論到直接應用還存在距離,需要通 過實踐來填補和改進;
以上是對優酷智能檔技術實踐的介紹,目前智能檔也在持續優化當中,相信隨著場景的豐富、新技術的應用,將來會為用戶帶來更好的播放體驗。
總結
以上是生活随笔為你收集整理的优酷智能档的设计、实现和应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特稿 | OceanBase 连破纪录:
- 下一篇: 5个杰出的商业机器学习用例