天天看點

優酷智能檔的設計、實作和應用

作者| 阿裡文娛進階無線開發工程師 去疾

一、背景與簡介

如果你用優酷用戶端追劇,會發現現在選擇清晰度沒那麼麻煩了。以前在地鐵上為了“不 卡”用低清晰度,在家裡的 Wi-Fi 環境為了看得更舒服再手動換 1080P。現在清晰度選擇那麼 多,有的時候網絡不好還得糾結下用哪個能夠剛剛合适。優酷“智能檔”,随時随地實時地提供 最合适的清晰度給你。

優酷智能檔的設計、實作和應用

“智能檔”要解決的關鍵問題就是“高清、不卡”。這背後需要自适應碼率技術的支援,按 一般流程,首先在視訊生産端對同一視訊源使用不同的配置編碼成不同碼率/清晰度的視訊流, 按同樣的播放時長(一般 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. 網絡預測和逾時機制

人們常說“天道無常”,其實網絡也是如此。在網絡條件比較差的情況下,通常下載下傳速度波 動非常大,而且可以是毫無規律任意幅度的變化,這對清晰度決策帶來了很大風險 , 除 了 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% 的卡頓發生;

主觀體驗變化,随着半年來的疊代優化,從使用者的回報上來看,也從最初的不太認同,到逐漸接受,甚至缺“智能檔”不可;

最後,再以幾個點對本文做一個小結。 優酷“智能檔”最終展現給使用者的是用戶端上的一個功能點,但從技術角度上來說,這是貫穿了從視訊生産到播放服務,整合了資料的收集、監控、分析,配置的實時下發和模型的動态更新的體系化工程,“智能檔”需要這樣的平台上,才能做到真正有效的快速試錯和優化疊代;

在智能檔碼率選擇的算法政策上,學術界已經有非常多的基礎理論,但由于實際播放場景 的多方面體驗要求、每個平台的自身的特點等原因,這些理論到直接應用還存在距離,需要通 過實踐來填補和改進;

以上是對優酷智能檔技術實踐的介紹,目前智能檔也在持續優化當中,相信随着場景的豐富、新技術的應用,将來會為使用者帶來更好的播放體驗。

繼續閱讀