字節(jié)跳動(dòng)開(kāi)源又一力作
【公眾號(hào)回復(fù) “1024”,免費(fèi)領(lǐng)取程序員賺錢實(shí)操經(jīng)驗(yàn)】

大家好,我是章魚貓。
今天給大家推薦的這個(gè)項(xiàng)目是「AlphaPlayer」,是直播中臺(tái)使用的一個(gè)視頻動(dòng)畫特效 SDK,可以通過(guò)制作 Alpha 通道分離的視頻素材,再在客戶端上通過(guò) OpenGL ES 重新實(shí)現(xiàn) Alpha 通道和 RGB 通道的混合,從而實(shí)現(xiàn)在端上播放帶透明通道的視頻。
這套方案對(duì)設(shè)計(jì)師而言明顯降低了特效的制作成本,對(duì)于客戶端而言有著更可靠的性能和穩(wěn)定性,且相比 cocos2d 引擎有著更低的入門門檻和維護(hù)成本,為復(fù)雜動(dòng)畫的實(shí)現(xiàn)提供了一種全新的方式,新的復(fù)雜動(dòng)畫開(kāi)發(fā)將會(huì)變得更加簡(jiǎn)單高效。
背景
在直播項(xiàng)目的原有禮物動(dòng)畫實(shí)現(xiàn)效果是通過(guò) cocos 引擎實(shí)現(xiàn)的,大部分動(dòng)畫都是通過(guò)一系列的旋轉(zhuǎn)平移縮放組合而成,能實(shí)現(xiàn)的動(dòng)畫效果較簡(jiǎn)單且開(kāi)發(fā)成本較高。為了豐富動(dòng)畫的表現(xiàn)形式,降低開(kāi)發(fā)成本,引入了 AlphaPlayer 的動(dòng)畫實(shí)現(xiàn)方案。
方案對(duì)比
目前較常見(jiàn)的動(dòng)畫實(shí)現(xiàn)方案有原生動(dòng)畫、幀動(dòng)畫、gif/webp、lottie/SVGA、cocos 引擎,對(duì)于復(fù)雜動(dòng)畫特效的實(shí)現(xiàn)做個(gè)簡(jiǎn)單對(duì)比。

運(yùn)行效果

項(xiàng)目結(jié)構(gòu) & 基本原理
主要有兩個(gè)核心部分,一個(gè)是 MediaPlayer,負(fù)責(zé)視頻每一幀的解碼,支持接入方自行實(shí)現(xiàn);另一個(gè)是 VideoRenderer,負(fù)責(zé)將解析出來(lái)的每一幀畫面進(jìn)行 alpha 通道混合,再輸出到 Surface 上。View 使用的是 GLSurfaceView,性能相對(duì) TextureView 更優(yōu),但層級(jí)限制在最頂層。
AlphaPlayer 內(nèi)部是通過(guò) Render 渲染紋理畫面的,設(shè)計(jì)師導(dǎo)出的視頻資源會(huì)包含兩部分內(nèi)容——透明遮罩畫面和原視頻畫面兩部分,然后通過(guò) shader 進(jìn)行 alpha 值的混合,詳細(xì)可以看 frag.sh 和 vertex.sh。
已知接入方

點(diǎn)擊閱讀原文查看更多。
開(kāi)源項(xiàng)目地址:https://github.com/bytedance/AlphaPlayer
開(kāi)源項(xiàng)目組織:ByteDance Live Android team
推薦閱讀:
推薦幾個(gè)開(kāi)源的個(gè)人獨(dú)立博客系統(tǒng)
Google 出品網(wǎng)站性能質(zhì)量及錯(cuò)誤分析工具
---特別推薦---
特別推薦:一個(gè)新的優(yōu)質(zhì)的推薦高效工具,軟件,插件的公眾號(hào),每天給大家分享優(yōu)秀的效率工具,「程序員掘金」,專門為程序員挖掘好東西的一個(gè)公眾號(hào),非常值得大家關(guān)注。
