新聞中心
一、背景
當(dāng)談?wù)撊绾翁嵘曨l的體驗時,我們需要明確互聯(lián)網(wǎng)視頻市場的背景和現(xiàn)狀,并分析用戶對于視頻體驗的期望和挑戰(zhàn)。

創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,先為太湖等服務(wù)建站,太湖等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為太湖企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
首先,隨著移動網(wǎng)絡(luò)的普及和互聯(lián)網(wǎng)帶寬的不斷提升,視頻觀看已成為互聯(lián)網(wǎng)的主要應(yīng)用之一,視頻內(nèi)容也涉及更多的領(lǐng)域,例如教育、電商、社交等。同時,視頻流量的份額也逐漸擴(kuò)大,占據(jù)著互聯(lián)網(wǎng)流量的重要部分??墒牵鎸A康囊曨l內(nèi)容,用戶們提出了越來越高的要求,如需要更快的加載速度、更流暢的播放體驗、更高的畫質(zhì)和分辨率等,這些要求又產(chǎn)生了一系列挑戰(zhàn)。
其次,不良的網(wǎng)絡(luò)環(huán)境和設(shè)備所帶來的影響也是視頻體驗不理想的重要原因之一,例如網(wǎng)絡(luò)延遲、帶寬瓶頸、設(shè)備性能等,這些因素都可能導(dǎo)致視頻的卡頓、畫面模糊、下載速度慢等質(zhì)量問題。此外,由于網(wǎng)絡(luò)環(huán)境的差異和視頻內(nèi)容的多樣性,保障用戶體驗變得更加復(fù)雜,需要針對不同的用戶需求和設(shè)備特性,采用不同的優(yōu)化方案和技術(shù)手段。
針對這些問題,我們需要梳理出優(yōu)化視頻體驗的技術(shù)手段和測試角度,以提高視頻的質(zhì)量和用戶的滿意度。并通過不斷的優(yōu)化落地,最終來提升視頻體驗并提高市場競爭力。
上半年我們針對得物視頻場景做了數(shù)據(jù)摸底,主要涉及的場景包含視頻流和沉浸視頻流,收集的指標(biāo)包括卡頓率,秒開數(shù)據(jù),CPU,內(nèi)存及主客觀質(zhì)量。從結(jié)果來看,我們在內(nèi)容質(zhì)量、秒開、卡頓上都有一定的提升空間。
二、視頻體驗技術(shù)優(yōu)化
為了優(yōu)化以上存在的痛點問題,我們針對視頻規(guī)劃了一系列的優(yōu)化項目,主要從視頻質(zhì)量提升、視頻卡頓率優(yōu)化、視頻秒開優(yōu)化這 3 方面進(jìn)行整改。
視頻質(zhì)量提升
圖片
視頻卡頓率優(yōu)化
圖片
視頻秒開優(yōu)化
圖片
其他
圖片
三、視頻從發(fā)布到消費(fèi)
發(fā)布
發(fā)布入口
- App發(fā)布
- 創(chuàng)作者后臺發(fā)布
- 達(dá)人后臺發(fā)布
發(fā)布流程
- 視頻素材選擇
圖片
- 視頻封面設(shè)置
圖片
發(fā)布上傳
- 獲取 Oss 上傳地址和 Token
- 將 URL 上傳給社區(qū)服務(wù)端
編碼
我們前面講到視頻體驗優(yōu)化的 3 個方向,第一點就是視頻質(zhì)量提升,那么如何能夠讓我們的視頻有所提升,其實重點就是在編碼這一塊下功夫。這里我們主要介紹得物社區(qū)編碼處理。
圖片
圖片
云廠商
- 原視頻 720P-H264 窄帶高清轉(zhuǎn)碼工作流(基礎(chǔ)轉(zhuǎn)碼)。
- 轉(zhuǎn)碼完成后調(diào)用【算法服務(wù)】去水印&加水印。
- 觸發(fā)時機(jī):視頻發(fā)布完成自動觸發(fā)。
社區(qū)服務(wù)
- 動態(tài)發(fā)布接口:
保存原視頻鏈接到內(nèi)容媒體庫。
轉(zhuǎn)碼檢查,增加云廠商轉(zhuǎn)碼視頻檢查記錄,待檢查轉(zhuǎn)碼狀態(tài)。
- 轉(zhuǎn)碼檢查處理腳本:
- 檢查云廠商轉(zhuǎn)碼是否完成,完成后保存到內(nèi)容媒體庫,同時請求算法去水印。
- 檢查內(nèi)容媒體中心轉(zhuǎn)碼是否完成,完成后保存到內(nèi)容媒體庫。
- 媒體中心回調(diào):
- 接收媒體中心轉(zhuǎn)碼回調(diào),更新內(nèi)容媒體庫原視頻寬高、時長等信息。
- 往轉(zhuǎn)碼檢查表增加媒體中心轉(zhuǎn)碼的多種轉(zhuǎn)碼視頻記錄待檢查轉(zhuǎn)碼狀態(tài)。
- 寬和高同時大于 720 會觸發(fā) 2 路轉(zhuǎn)碼(720P-H265和1080P-H265),否則一路轉(zhuǎn)碼(720P-H265)。
- 算法處理回調(diào):
- 接收算法去水印、生成封面圖等處理回調(diào),保存處理后內(nèi)容文件到內(nèi)容媒體庫。
- 去水印類型,MQ 通知中后臺視頻轉(zhuǎn)碼已完成,中后臺開始審核流程。
媒體中心
轉(zhuǎn)碼服務(wù):
圖片
私有化微幀轉(zhuǎn)碼服務(wù):
- 接收服務(wù)端原視頻轉(zhuǎn)碼請求,云廠商轉(zhuǎn)碼。
- 監(jiān)聽二審二審?fù)ㄟ^、熱門視頻、高幀率處理微幀轉(zhuǎn)碼。
- 監(jiān)聽打標(biāo)結(jié)果、籃球美妝類視頻,視頻增強(qiáng)轉(zhuǎn)碼。
- 視頻首幀截取處理。
- 回調(diào)社區(qū)服務(wù)媒體中心,回傳轉(zhuǎn)碼完成后視頻相關(guān)信息。
算法服務(wù):
- 去原視頻水印。
- 生成封面圖。
- 加品宣水印。
- 策略算法商品封面圖。
解碼
這里我們主要介紹解碼,從解碼到播放,這一塊的工作重點就是客戶端的各種優(yōu)化了,如秒開、卡頓等各種體驗都是非常直觀的,也是直接面向用戶,讓用戶去檢驗視頻體驗好與不好最簡單粗暴的方法。從業(yè)務(wù)層到播放器我們都做了很多努力,這里大致介紹一下。
業(yè)務(wù)播放流程
前面我們在轉(zhuǎn)碼時介紹了很多種不同的轉(zhuǎn)碼類型、同時針對不同的轉(zhuǎn)碼定義了 Type 的多個枚舉值,作用就在于業(yè)務(wù)這邊的播放優(yōu)先級策略。
- 冷啟動讀取視頻切換策略。
- 視頻動態(tài)下發(fā)兜底播放 URL、轉(zhuǎn)碼播放 URL、類型 Type。
圖片
總結(jié):
- 每次冷啟動會拉取配置中心配置的視頻播放策略。
- 播放視頻時,根據(jù)配置中心配置優(yōu)先級,讀取實際下發(fā)的 Type,選對應(yīng)的 Type 進(jìn)行播放。
- 解碼器選擇:配置中心中配置了 264 解碼器播放類型和 265 解碼器播放類型,我們會根據(jù)對應(yīng)優(yōu)先級選中對應(yīng) Type 的 URL 進(jìn)行播放,然后再選中對應(yīng)的解碼器進(jìn)行解碼。
- 預(yù)下載大?。号渲弥行闹信渲昧瞬煌愋皖A(yù)下載大小,那么我們會根據(jù)播放類型進(jìn)行預(yù)下載。
如果 Video 下發(fā)為空,那么我們會使用兜底鏈接播放。
首幀加載邏輯
- 可以先看一下下面的例子:
- 為了防止有人惡意將我們服務(wù)當(dāng)做視頻存儲地址,同時出于規(guī)避黑灰產(chǎn)的非法資源的合規(guī)風(fēng)險,我們針對視頻做了防盜鏈技術(shù),即視頻地址是有有效期的,超過配置的有效時間,地址會失效,播放時,需要進(jìn)行換鏈請求。這里帶來的一個問題就是存在一些場景在進(jìn)入視頻詳情頁時無法加載首幀圖,只有黑底圖到視頻播放的過渡,影響秒開。
- 同時,視頻是可以設(shè)置封面的,封面可能是算法識別、也可能是用戶自己選擇,這就造成了很大的不確定性,即封面很有可能不是視頻首幀,甚至和視頻毫無關(guān)聯(lián)。這類視頻,我們在進(jìn)入視頻詳情頁先用封面填充,但到播放時會感覺明顯跳幀,畫面不連貫,也非常影響視頻觀看的體驗。
因此,雖然我們有預(yù)下載首幀邏輯,但如果視頻地址過期,首幀下載是會失敗的,就存在了如上進(jìn)入視頻先出現(xiàn)黑底圖的現(xiàn)象?;诖?,我們做了首幀加載邏輯的優(yōu)化。
- 首幀獲取邏輯
圖片
圖片
- 播放邏輯策略
取得新的視頻首幀圖片后需要自行拼接裁剪參數(shù),目前統(tǒng)一轉(zhuǎn) Heic 格式圖片,裁剪寬度最大 360(和線上邏輯一致),高度自適配。轉(zhuǎn)成 Heic 可以有效降低文件大小,減少網(wǎng)絡(luò)傳輸成本,提升首幀加載速度。
圖片
優(yōu)先級:視頻首幀的圖片緩存 > 雙列卡片的封面圖片緩存 > 加載首幀網(wǎng)絡(luò)圖并以黑底圖兜底。
沉浸流冷啟優(yōu)化
圖片
最終展示的數(shù)據(jù)情況:
- 之前某次啟動的緩存數(shù)據(jù) 1 條 + 本次啟動沉浸流請求的后續(xù)數(shù)據(jù) 6 條。
- 本次啟動社區(qū)首頁請求的數(shù)據(jù) 1 條 + 本次啟動沉浸流請求的后續(xù)數(shù)據(jù) 6 條。
- 本次啟動沉浸流請求的數(shù)據(jù) 6 條。
播放器復(fù)用
優(yōu)化前:
優(yōu)化后:
這里我們可以明顯看到優(yōu)化前,關(guān)注流進(jìn)入到視頻詳情頁會黑一下,優(yōu)化后就更加絲滑了,肉眼看不出有黑屏的情況。這里我們主要就是使用了播放器復(fù)用來解決這個問題,節(jié)省創(chuàng)建播放器內(nèi)核等待時間。
- 創(chuàng)建 View 的時機(jī)
每次點擊提前創(chuàng)建 View 開始解碼。
跳轉(zhuǎn)后將 View add 到屏幕上。
復(fù)用過程就是 A 頁面解綁 -B 頁面綁定 -B 頁面解綁 -A 頁面重新綁定。
當(dāng)然這里,推薦流是比較特殊的,有個共享的播放器實例。
四、過程中典型案例分析
沉浸流冷啟優(yōu)化內(nèi)存泄漏
沉浸流冷啟優(yōu)化功能測試完成后,沒有發(fā)現(xiàn)什么問題,但是在我們性能的每日 DailyRun 報告中發(fā)現(xiàn)有一處內(nèi)存泄漏,并且每一個腳本都報了這個泄漏,查看堆棧信息關(guān)鍵字 ImmersiveVideoInitManager preRenderVideoView,大致猜測是首頁沉浸流預(yù)渲染導(dǎo)致靜態(tài)變量沒釋放的問題,聯(lián)想到這個技改需求,進(jìn)一步和開發(fā)確認(rèn),發(fā)現(xiàn)的確是這個需求引入的。通過這個例子,進(jìn)一步驗證功能測試和自動化是相輔相成、相互兜底的,多方組合手段才能提升線上的穩(wěn)定性。
圖片
Tips:針對端上的一些大需求、模塊技改、底層邏輯重構(gòu)等等,我們可以結(jié)合自動化來驗證 App 的穩(wěn)定性,業(yè)務(wù)邏輯測試 + 探索性測試 + 自動化測試 + 灰度驗證,在整個版本周期都能通過一些手段去有效發(fā)現(xiàn)問題,左移前置的越多,線上暴露的問題就會越少。
當(dāng)然往往這些都伴隨了一些 AB,因此我們在跑自動化時要把 AB 打開。讓這些功能能提前得到一些驗證。
高幀率倍速播放音畫不同步
- 原因:在回歸時,發(fā)現(xiàn)部分視頻倍速播放出現(xiàn)音畫不同步的現(xiàn)象,排查發(fā)現(xiàn),該視頻是 60fps,2 倍速的話會變成 120fps,播放器渲染不過來了。因此當(dāng)倍速 *幀率 >60,雙端都存在這個問題。
- 解決:在業(yè)務(wù)方面,我們是沒有 60fps 轉(zhuǎn)碼的,因此播放器僅支持 60fps 播放,60+ 倍速沒有支持,這類視頻是百度超分轉(zhuǎn)碼沒有限制幀率,導(dǎo)致會有部分視頻出現(xiàn)60fps,最終雙端播放器支持 60+fps 播放解決該問題,同時我們這邊其他轉(zhuǎn)碼也支持高幀率視頻了。
Tips:倍速播放我們這邊采用的是:沒有跳幀的變速播放,在不跳幀的情況下改變視頻的播放速度,從而實現(xiàn)加快或減慢視頻播放的效果。音頻采用變速不變調(diào),能夠改變音頻播放速度,同時不改變其音調(diào)的技術(shù)。
針對視頻各種各樣的問題,首要原則是不給自己設(shè)限,多了解總沒錯,比如不同分辨率視頻播放(480P、720P、1080P、4k......)、不同比例視頻播放(1:1、3:4、4:3、16:9......),不同幀率視頻播放(24fps、30fps、60fps、120fps)、HDR 和 SDR(目前端上播放器不支持 HDR,導(dǎo)致播放 HDR 視頻有色差,轉(zhuǎn)碼時需要兼容支持HDR轉(zhuǎn)SDR)、Livephoto、直播切片有水印類視頻播放、外接設(shè)備如藍(lán)牙耳機(jī)播放等等。
了解的越多,覆蓋的場景就會越全面,同時也是一個很好的知識積累機(jī)會。
關(guān)注流進(jìn)入視頻詳情頁,再返回關(guān)注流沒有續(xù)播
原因:這個問題是當(dāng)時一個技改 Https 轉(zhuǎn) Http 播放時出現(xiàn)的一個問題,從關(guān)注流到視頻詳情頁我們會切換成 Http 的地址進(jìn)行播放,當(dāng)返回時又變成了 Https,播放器接受到的播放地址發(fā)生發(fā)生變化,導(dǎo)致播放器進(jìn)行重播了,而不是續(xù)播。
解決:外部有播放器,涉及場景切換時兼容這種邏輯。
Tips:這個問題我將其放到經(jīng)典案例分析,原因很簡單,因為在視頻測試過程中,碰到過視頻播放的很多問題,視覺呈現(xiàn)的問題效果都不一樣,比如這里的沒有續(xù)播,還有穿搭精選九宮格點擊視頻到視頻詳情頁視頻跳幀、播放不流暢、黑屏,防盜鏈過期換鏈播放等等,深究原因都是播放地址發(fā)生變化而導(dǎo)致的問題。只不過造成地址不一樣的原因不一樣,有的是緩存數(shù)據(jù)過期,有的是外部數(shù)據(jù)和里面數(shù)據(jù)下發(fā)不一致、有的是內(nèi)部域名轉(zhuǎn)換等等。
因此碰到類似問題,可以先嘗試自己排查,逐一排除,同時對于一些技改保持對問題的敏感度,提前評估一些影響點。
五、視頻體驗我們做了什么
性能
- 安卓性能基線
圖片
- iOS性能基線
圖片
- 左移發(fā)現(xiàn)問題雙端累計發(fā)現(xiàn)了一些問題,其中有個別問題是版本技改引入,成功左移攔截。
性能分析
圖片
發(fā)熱分析
- 發(fā)熱壓測分析報告
昨當(dāng)前報告共包含視頻詳情頁面共 1 個場景。視頻詳情頁面:該場景包含多個性能指標(biāo),其中,得物在 Android 端的部分指標(biāo)上取得 Top。
圖片
總結(jié)
性能
- 建立性能基線,覆蓋當(dāng)前業(yè)務(wù)核心頁面,雙端性能 Case 穩(wěn)定運(yùn)行。
- 針對 Debug 包進(jìn)行 APM 平臺打通,性能異常指標(biāo)通知提醒,累計發(fā)現(xiàn)多個性能問題。
- 針對 Debug 包進(jìn)行 Crash 攔截,并打通 Crash 平臺和 Crash 異常通知提醒 ,累計發(fā)現(xiàn)多個 Crash。
- 性能問題歸類。
分析
- 針對雙端圖文、視頻、沉浸式、推薦流 4 個場景摸底排查并建立性能基線。
- 針對視頻做發(fā)熱壓測分析。
- 推動并支持開發(fā)完成視頻內(nèi)容質(zhì)量、秒開、卡頓上的一系列技改需求。
- 優(yōu)化后完成性能分析并輸出報告,各場景指標(biāo)排名獲得一定的提升,iOS 卡頓率下降 25%、視頻失敗率:下降 66.6%、首幀加載時長:降低 47%;Android 視頻失敗率:降低 42.8%;Android 首幀加載時長:降低 46.6%。
六、未來展望
在如今這個體驗為王的時代,我們在視頻的體驗上還需投入更多精力,只有不斷探索新的技術(shù)方案,不斷探索新的測試手段,我們才能成為行業(yè)的 Top。這也是我們未來努力的方向,比如主客觀測評后臺、視頻轉(zhuǎn)碼技術(shù)優(yōu)化、更多的左移、更多的輔助開發(fā)做一些分析等等。這需要多方合作,實現(xiàn)共同雙贏。
本文題目:一文帶你走進(jìn)得物視頻
文章路徑:http://www.fisionsoft.com.cn/article/coiosdh.html


咨詢
建站咨詢
