大家好,我是蒼王,很久沒有在掘金發(fā)布文章,今年在公司內(nèi)開發(fā)了一個mp4的特效框架,用于支撐各種禮物特效的玩法,是繼SVGA特效框架的另外一個極致的特效框架。本人也是有幸參與Android端開發(fā)以及各種優(yōu)化。 可以看我們主推的文章 YYEVA-透明MP4播放器支持動態(tài)元素 這里介紹的是YYEVA框架生成原理
為何要選用MP4資源作為特效框架?
這里一張圖告訴你透明MP4特效的優(yōu)勢

可以看到透明mp4框架支持軟解硬解,H264/265壓縮,支持特效元素替換,支持透明通道。

為何稱為極致?
YYEVA-Android 穩(wěn)定版本是1.0.11版本,支持了業(yè)界中獨有功能,例如文字左右對齊,元素圖片縮放方式,支持嵌入背景圖片,循環(huán)播放。

YYEVA-Android 已經(jīng)出了2.0.0-beta版本,為大家?guī)順I(yè)界領(lǐng)先的功能。
1.這個版本支持了框架多進程,將解碼器放到子進程遠程。
支持多進程解碼,讓主進程內(nèi)存壓力減少,讓主進程更專注于渲染效果。 開發(fā)中主要遇到是,進程間的渲染的生命周期的回調(diào),主進程中如何剝離出獨立解碼器等問題。
這里有個小插曲,嘗試過是否能夠單獨使用子進程進行主進程傳遞的Surface渲染以及解碼,答案是無法做到的,因為主進程創(chuàng)建Surface的egl環(huán)境無法和子進程共通,所以只能獨立出解碼器?;蛘呤褂肧ervice創(chuàng)建Dialog依附新的windows來來創(chuàng)建egl環(huán)境和surface來做獨立渲染。

2.支持高清濾鏡,未來支持更多的高清濾鏡功能。
支持高清濾鏡,小尺寸資源,縮放效果不再純粹的線性縮放,可以帶有高清的濾鏡計算來優(yōu)化,各種屏幕上的表現(xiàn)。當(dāng)然高清濾鏡需要耗費一些性能,由開發(fā)接入sdk來自行判斷使用策略。
現(xiàn)在分別支持 lagrange和hermite兩種不同的濾鏡算法,這兩種算法已經(jīng)在手Y中得到很好的實踐,還有更加強大的高清濾鏡正在試驗中。
如果有更好的濾鏡算法,也可以提供我們嵌入優(yōu)化。
3.將opengles從2.0升級到3.1,并加入多種opengles的特性來優(yōu)化整個gpu的緩存讀取
使用了vbo,ebo,vao等opengles緩存技術(shù)來優(yōu)化整個gpu運行緩存。優(yōu)化特效渲染的壓力,讓特效渲染更好更快。 將原來Java層使用View中進行圖片變換效果,完全轉(zhuǎn)移到opengles來完成,進一步提高了整個繪制效率。還有將整個點擊觸摸系統(tǒng)反饋系統(tǒng)縮放計算置于Native中。
4.將硬解解碼器下放到native層,未來正式版將兼容ffmpeg軟解。
將原來1.0版本視頻解碼模塊,音頻解碼和音頻播放邏輯,轉(zhuǎn)移到Native層實現(xiàn),更好的功能代碼統(tǒng)一性。 未來我們將加入ffmpeg軟解/硬解,能夠更好支持解碼嵌入技術(shù)。
YYEVA未來將會提供更多業(yè)界領(lǐng)先的能力,發(fā)布更多重磅功能,歡迎大家點贊收藏一波 YYEVA
如果你想對使用到技術(shù)深入了解,可以訂閱我的小專欄 Android進程化&C++音視頻
想要進一步了解框架的實現(xiàn)可以看以下這篇文章 YYEVA支持動態(tài)元素的透明MP4動效播放器 - 客戶端渲染篇之Android (七)
作者:Cang_Wang
鏈接:https://juejin.cn/post/7166071141226774565