針對(duì)這些挑戰(zhàn),火山引擎采取了一系列手段對(duì)視頻編輯進(jìn)行質(zhì)量?jī)?yōu)化。
火山引擎發(fā)現(xiàn),在視頻編輯場(chǎng)景中,80%的崩潰都發(fā)生在內(nèi)存上,表現(xiàn)為內(nèi)存顯存占用過大、內(nèi)存泄漏、內(nèi)存越界、野指針訪問等。
在過去,針對(duì)內(nèi)存崩潰通常采用的是“頭疼醫(yī)頭,腳痛醫(yī)腳”的方法。也就是根據(jù)系統(tǒng)崩潰報(bào)過來的信息對(duì)它進(jìn)行針對(duì)性的修復(fù),但是火山引擎的技術(shù)人員在實(shí)踐過程中發(fā)現(xiàn),這種方式只能解決小部分的崩潰,所以為了更好的解決內(nèi)存崩潰的問題,火山引擎自研了一系列工具。
火山引擎首先明確了這樣一款內(nèi)存工具需要滿足什么樣的目標(biāo)。簡(jiǎn)單來說主要有四點(diǎn)。一是權(quán)限要求低,二是需要精準(zhǔn)定位,三是能實(shí)現(xiàn)自動(dòng)化,四是性能影響低。
基于這樣的目標(biāo),火山引擎研發(fā)推出了一款名為VEHook的視頻編輯質(zhì)量工具。
這一工具具備四項(xiàng)優(yōu)勢(shì)。一是可以精準(zhǔn)的跟蹤內(nèi)存和顯存的申請(qǐng),跟蹤系統(tǒng)里每一MB的內(nèi)容由哪個(gè)代碼申請(qǐng);二是基于申請(qǐng)的跟蹤可以精準(zhǔn)定位是哪一塊代碼發(fā)生了內(nèi)存泄漏;三是內(nèi)存的越界能夠精準(zhǔn)的定位,到底是哪一塊發(fā)生問題;四是工具無需root或者越獄。
除了內(nèi)存崩潰之外,火山引擎還針對(duì)廠商驅(qū)動(dòng)的bug、文件存儲(chǔ)導(dǎo)致的文件損害等崩潰問題提供了相應(yīng)的解決方案。
比如針對(duì)前者,火山引擎可以基于Hook技術(shù),注入保護(hù)性代碼,避免應(yīng)用崩潰,同時(shí)和廠商展開合作,一起分析排查,在調(diào)用層面避免崩潰;針對(duì)后者,火山引擎給文件存儲(chǔ)做了多重備份,如安卓動(dòng)態(tài)庫的損害,就有多種lod機(jī)制,通過云端實(shí)現(xiàn)線上下發(fā)。
此外,針對(duì)應(yīng)用無響應(yīng)、死鎖問題,以及低端機(jī)上經(jīng)常出現(xiàn)的編輯交互卡頓等,火山引擎也都運(yùn)用技術(shù)手段分別進(jìn)行處理?;鹕揭孢€會(huì)分析用戶的機(jī)器性能程度,并根據(jù)benchmark的檢測(cè),自動(dòng)降低創(chuàng)作分辨率,減輕CPU的負(fù)擔(dān)。如果是低端老舊機(jī)型,火山引擎則會(huì)提供基本的視頻編輯功能,并直接去除高端功能,最大化提升用戶體驗(yàn)。
在本次活動(dòng)之后,火山引擎增長(zhǎng)沙龍的其他主題活動(dòng)也在深圳、北京等地陸續(xù)展開。