短視訊行業目前比較火熱,但是如何快速的實作海量短視訊的極速分發,對于短視訊業務提供方來講是一個比較棘手的問題。阿裡雲技術專家将帶領大家從視訊的上傳、采集、存儲和CDN分發等方面為我們介紹阿裡雲的整體方案,并且重點講解短視訊加速的注意事項和使用者體驗優化要點。本文将首先介紹短視訊相關的業務應用 ;其次針對短視訊的業務應用場景,介紹阿裡雲所提供的整體解決方案和技術産品;最後針對短視訊的業務場景,介紹阿裡雲所做的使用者體驗優化措施。
推廣:數十款阿裡雲産品限時折扣中, 趕緊點選這裡 ,領劵開始雲上實踐吧! 本場視訊回顧連結: 海量短視訊的極速分發 演講嘉賓簡介:周哲,花名士豪,阿裡雲進階技術專家 。
以下内容根據演講嘉賓視訊分享以及PPT 整理而成。本次的分享主要分為三部分:
一、短視訊應用場景:該部分主要介紹一些短視訊相關的業務應用 。
二、阿裡雲短視訊解決方案: 該部分主要介紹針對短視訊的業務應用場景,阿裡雲所提供的一些整體的解決方案和技術産品。
三、阿裡雲對短視訊媒體體驗優化:該部分主要介紹阿裡雲針對短視訊的業務場景之下所做的使用者體驗優化措施。
一、短 視訊應 用 場 景本次主題的第一部分是短視訊的應用場景有哪些,短視訊比圖檔和文字要包含更多的資訊,在目前移動網際網路非常普及的時代,短視訊的應用場景非常廣泛,首先在社群視訊内容分享場景中,我們可以看到使用者可以在本地錄制視訊,然後進行編輯,比如說做一些特效處理,然後再上傳到伺服器,最後通過社群分享的方式分享給好友。那麼在電商場景中,商家可以通過快速拍攝、制作商品短片,然後把商品的介紹視訊發送給消費者,這樣可以有效的提升購買的轉化率。短視訊還有一些其他的應用場景,比如說聊天場景、新媒體的場景,
二、阿裡雲短 視訊 解決方案第二部分,我們針對上面介紹的短視訊應用場景介紹一下阿裡雲短視訊的解決方案。阿裡雲針對短視訊的各種應用場景提供了一整套解決方案,首先我們可以看到在使用者的主播段提供自動SDK、短視訊上傳的SDK,在視訊播放端提供視訊播放的SDK,然後在視訊的播放端提供視訊的點播服務、OSS存儲服務和CDN加速服務。
接下來大概介紹一下阿裡雲短視訊解決方案提供的使用流程:首先對于開發者來說可以在主播端使用短視訊的SDK對短視訊進行錄制,然後對錄制好的視訊通過做一些特效處理,然後通過短視訊的上傳SDK上傳到伺服器端,然後在伺服器端可以先通過點播服務來進行轉碼,以及做一些視訊的處理,然後把處理好的視訊通過OSS存儲服務存儲到OSS中進行持久化的儲存,然後開發者可以在觀衆端內建視訊播放的SDK,然後通過視訊播放的SDK通路CDN進行加速,CDN如果會有這些資源的話,它會對視訊資源進行緩存,然後把緩存的内容發給視訊播放端,那CDN沒有這部分資源的話,它會去OSS中去拉取并進行儲存。開發者就可以基于這些基礎的技術元件來快速的開發自己的短視訊業務平台。

接下來介紹一下視訊SDK包含的具體功能,視訊SDK主要有以下三個部分功能組成:短視訊SDK、上傳SDK和播放器SDK。
1. 第一個功能是
短視訊 SDK,短視訊SDK主要是提供短視訊的錄制以及一些特效處理,如人臉貼圖、進階美顔。這樣在短視訊錄制之後先做一個本地美顔,然後再進行上傳;然後短視訊SDK同時還提供專業濾鏡以及MV特效功能;再有就是裁剪壓縮和背景音樂等相關的功能
2. 第二個功能是
上傳,上傳SDK通過快速通道可以把視訊傳輸到伺服器端,上傳SDK支援斷點續傳、背景上傳以及多檔案管理等和多平台支援
3. 第三個功能是
播放器,播放器SDK支援多個平台,包括安卓、ios、flash和html5,播放器SDK支援倍數播放、加密播放、安全下載下傳、視訊截圖、傾斜度切換、邊播放邊緩存和多平台支援。
下面介紹一下剛才講到的點播和存儲服務。
1. 點播服務提供視訊管理相關的一些服務,比如說視訊轉碼,視訊轉碼支援窄帶高清,窄帶高清可以使得使用者在相同的光感體驗下視訊播放的帶寬降低百分之三十,第二個功能是雲剪輯的功能,雲剪輯指的是線上的對視訊進行剪輯的功能,同時點播服務提供豐富的資料統計功能,開發者可以使用阿裡雲提供的API通路一些與視訊統計相關的資料。
2. 同時阿裡雲對視訊内容開放視訊AI的技術服務,其中内容稽核服務是可以利用阿裡雲提供内容稽核服務來對視訊内容進行稽核,進而規避視訊違規的風險;智能封面功能是通過分析視訊資料來做結構化的處理,通過結合圖像美顔功能和計算視訊幀來選取視訊的封面;标簽預測功能是通過AI技術來識别視訊中的文字、圖像以及聲音等資訊, 對這些資訊進行輸出,然後自動生成視訊的标簽。
3. 為了應對海量的視訊資料,阿裡雲提供了海量資料存儲服務,來提供高可靠、強安全并且低成本的視訊存儲服務。
為了應對短視訊大規模的自動場景的需求,阿裡雲CDN建設了大量的基礎設施,首先,阿裡雲CDN在全球有超過1200個CDN節點,這些節點分布在全球各個國家和地區的大中小城市,這些節點貼近使用者部署,能夠使得使用者更加快速的通路視訊内容,使用者體驗更好;同時為了面對業務的突發流量,阿裡雲提供80TB的帶寬儲備,為持續增長的業務保駕護航;并且有單機緩存容量超過PB級别的緩存節點,通過提供更大的緩存來提升緩存使用率,進而有效提升使用者的通路速度。
介紹完阿裡雲針對短視訊提供的解決方案之後,接下來介紹一下阿裡雲針對短視訊做的一些優化的技術。
短視訊關鍵的名額有首屏時間,播放卡頓和播放錯誤。
1)首屏時間是使用者點選播放的時候,當使用者看到視訊開始播放的時間與使用者點選播放的時間間隔。首屏時間越長,越容易導緻使用者提前結束播放。
2) 播放卡頓指的是視訊播放是否流暢,播放過程中出現卡頓會很大地影響使用者體驗。
3) 播放錯誤指的是使用者在視訊播放過程中沒有成功播放,或者出現一些異常導緻視訊播放提前中斷。
為了解決這些問題,我們對整個使用者體驗優化架構進行了剖析。首先看一下阿裡雲CDN和相關的一些服務對于使用者在對短視訊播放場景的整個過程。終端使用者首先通過阿裡雲提供的視訊SDK來請求排程伺服器,排程伺服器傳回對應的CDN節點IP,然後播放器根據傳回的CDN節點IP來請求資源,CDN資源節點即我們所謂的一級節點,它如果有緩存的話就會從本地緩存把視訊發送給播放器,如果沒有緩存會通路二級節點,如果二級節點同時也沒有緩存,則會去OSS或使用者原站拉取原本的資料。
二級節點的處理和一級節點處理邏輯是相似的,阿裡雲使用兩級節點的架構,二級節點的作用主要是首先可以對資源進行彙聚,因為有很多的邊緣節點,如果每個邊緣節點都去原站進行資源擷取,那麼會造成原站的帶寬壓力特别大,而二級節點通過對資源進行彙聚,然後再去原站請求資源,這樣會大大減少原站的帶寬壓力;其次二級節點更貼近一級節點,使得一級節點有更快的下載下傳速度。
同時我們對整個播放過程進行針對使用者體驗相關的資料打點,針對這些資料打點來進行分析,分析之後得到相關的優化點。
第一點優化是針對播放器,播放器有沒有針對視訊體驗做一些相關的優化很影響視訊通路的品質。阿裡雲對播放器SDK做了很多相關的優化,比如說針對首屏時間通過減少首屏緩存時間來降低首屏時間;針對卡頓率通過提供動态緩存大小的方式,能夠在出現網絡抖動的時候可以動态的增加緩存大小,對資料進行預加載,通過這種方式來應對網絡抖動導緻的播放卡頓;針對播放錯誤,播放器SDK内部實作了網絡從适功能來提高播放成功率。
第二點優化是針對排程,使用者在通路節點的時候,通路排程伺服器,排程伺服器傳回的IP位址是不是使用者通路最優的網絡鍊路,它很大程度上影響使用者的視訊下載下傳速度。針對這個問題,阿裡雲做了很多優化,開發了智能排程系統,排程系統會選擇使用者到邊緣節點的最優鍊路來傳回給用戶端。
第三點優化是阿裡雲目前提供更多的節點覆寫,使得這些節點更貼近使用者,來提高使用者的下載下傳速度。
第四點優化是使用者向CDN伺服器傳輸資料時,當出現網絡抖動的時候,會造成下載下傳速速降低的情況,為了解決這個問題,阿裡雲CDN針對TCP協定棧做了很多優化,通過
更高效的協定棧算法來提升下載下傳速度。
第五點優化是阿裡雲提供
更高效的窄帶高清功能來降低播放視訊的帶寬。
第六點優化是針對緩存伺服器的性能。使用者在通路邊緣節點的時候,如果資源不存在會回原,如果使用者的請求資源在邊緣節點命中的時候,使用者的下載下傳速度和緩存伺服器處理性能将會有很大的關聯性,阿裡雲針對緩存伺服器的性能做了很多優化,如通過增大邊緣節點的存儲空間以及I/O性能的優化,來提升使用者的視訊通路速度。
第七點優化是阿裡雲采用
全鍊路監控的方式來保證整個播放鍊路中的使用者體驗,能夠提早的發現體驗相關的問題,以便提前做一些性能優化。
下面詳細介紹一下阿裡雲針對智能排程所做的一些優化,針對智能排程系統,做了以下五個方面的優化:
1.
提供精準的 IP 庫資料,對IP庫資料進行持續更新,同時會基于一些第三方IP庫資料、淘寶使用者在通路CDN時所在的一些經緯度資訊,以及對IP庫所做的主動的資料探測所得到的資料等這些次元的資料進行計算,生成IP庫的具體位置。IP庫資料的準确度為排程系統的精準排程提供資料支撐。
2.
提供高性能的 httpdns 服務。httpdns指的是通過http請求的方式來查詢域名對應的伺服器IP位址。它解決的問題是當使用local dns來進行查詢排程伺服器的時候,第一個問題是會出現使用者IP位址和dns伺服器所在的區域不一緻,那麼會導緻排程伺服器看到的使用者IP的位址和真實的使用者通路的IP位址不一緻的問題,繼而導緻排程出現偏差;第二個問題是在使用者查詢dns的時候,會出現dns被篡改的情況,在dns被篡改之後就會導緻此時伺服器的IP位址不一定是CDN的IP位址。為了解決這兩個問題,可以使用阿裡雲提供的httpdns服務。
3.
提供基于使用者體驗的自動化排程,基于使用者的用戶端IP以及使用者到每個節點的網絡資料情況來進行計算,計算還包含目前的各個節點的狀态,通過一些機器學習的方式來進行預測使用者到哪個節點的網絡鍊路是最優的。通過這種方式來提供給排程系統對使用者的IP位址來傳回最優的網絡鍊路結果,來提升網絡鍊路的品質。
4.
通過大資料分析來選擇最優的節點。會對目前節點覆寫情況以及使用者通路流量的趨勢做一個資料預測,來去選擇在哪裡建點,并計算這些節點覆寫的哪些網絡鍊路是最優的,為排程系統提供排程資料支撐。
5.
使用内容排程提升命中率。通過使用302的排程方式進行内容粒度的排程,進而提高命中率。
阿裡雲CDN針對緩存系統做了很多優化。阿裡雲緩存系統通過資源的緩存系統開發基于裸盤的檔案系統,使用記憶體、SSD加SATA的三級緩存架構,會把最熱的資源存儲到記憶體中,把次熱的資源存儲到SSD中,然後把冷的資源存儲到SATA盤中;通過熱點遷移的方式将SATA盤中熱的資源遷移到SSD和記憶體中,然後通過淘汰算法對記憶體和SSD中的冷的資源淘汰到SATA盤中,記憶體和SSD中熱的資源仍然儲存在記憶體和SSD中,通過這種方式來提升記憶體和SSD中的命中率,降低SATA盤中I/O讀寫的情況,通過SATA存儲冷的資源來提高邊緣節點的命中率。同時檔案系統對IO做了很多優化,比如說合并IO對齊寫入的功能來避免磁盤碎片的産生,磁盤碎片會導緻IO性能嚴重下降;然後對大檔案進行切片存儲,把每個大檔案切成很多分片,每個分片存儲到不同的磁盤中,這樣可以避免單個檔案過熱,導緻磁盤IO性能下降的問題。通過以上這些優化,可以實作緩存的平均命中率達到95%以上,首位元組時間低于10ms。
接下來介紹一下基于使用者體驗的TCP協定棧優化。針對TCP協定做了以下優化:
基于時間序的丢包發現機制,主要是在TCP協定棧中分析TCP發包的時間序列,識别出哪些包在發送過程中丢失。通過這種方式能夠發現丢包,然後進行快速重傳.
主動丢包發現機制,主要是在發送包的時候增加主動探測的機制,通過主動探測的方式來對丢包更提早的發現,避免通過逾時發現丢包,減少丢包的發現時間,通過這種方式提早進行丢包重傳。
3.
自适應初始視窗,會根據不同業務場景使用不同的初始化視窗大小。
更激進的擁塞避免算法,針對網絡不好的情況,會在協定棧中識别網絡不好的狀态,針對網絡不好的狀态使用更激進的發包政策,通過這種方式來解決由于網絡不好導緻的下載下傳速度慢的問題。
更小的連接配接逾時時間,通過設定更小的連接配接逾時時間使得發現丢包的實際更短。
基于以上的這些優化,在某個短視訊的業務場景下,對于一個1.2M資料檔案的下載下傳,和其他的視訊廠商進行對比,可以發現使用阿裡雲的下載下傳時間可以加快2%到6%。
本文由雲栖志願小組李杉杉整理。