LibreStreaming?安卓實(shí)時(shí)濾鏡RTMP推流庫(kù)
Android real-time effect filter rtmp streaming library.using Mediacodec HWencoding&librtmp stream.
安卓實(shí)時(shí)濾鏡RTMP推流庫(kù)
簡(jiǎn)介:
-
支持cpu濾鏡和gpu濾鏡。
-
硬編碼基于Mediacodec。
-
推流基于librtmp。
特性:
-
支持cpu濾鏡,并可以通過(guò)處理圖像數(shù)組來(lái)自定義濾鏡。
-
支持gpu濾鏡,并可以通過(guò)opengles繪制圖像紋理來(lái)自定義濾鏡。
-
gpu濾鏡模式下兼容GPUImage,一行代碼不用修改就可以直接使用GPUImage的濾鏡。
-
前后攝像頭快速切換,不會(huì)打斷推流。
-
可以自定義幀率,最大不會(huì)超過(guò)設(shè)備支持幀率
-
可以選擇圖像大小,碼流比特率,具體取決于設(shè)備支持。
關(guān)于濾鏡:
支持兩種濾鏡模式:使用cpu的軟模式和使用gpu(opengles)的硬模式,硬模式效率通常高于軟模式。
軟模式下:
-
你可以通過(guò)繼承BaseSoftVideoFilter創(chuàng)建自定義濾鏡。
-
sample.softfilter中有一些使用Java,NDK和RenderScript來(lái)處理圖像的濾鏡示例。
-
在acquireSoftVideoFilter和releaseSoftVideoFilter之間可以安全的修改濾鏡的屬性,不要持有濾鏡超過(guò)3毫秒。
-
濾鏡中的顏色格式為NV21。
硬模式下:
-
你可以通過(guò)繼承BaseHardVideoFilter或者OriginalHardVideoFilter來(lái)創(chuàng)建自定義濾鏡。
-
sample.hardfilter中有一些示例。
-
繼承OriginalHardVideoFilter只需要通過(guò)提供Shader就可以容易的實(shí)現(xiàn)大部分效果。
-
繼承BaseHardVideoFilter需要自己處理opengl細(xì)節(jié),但是可以實(shí)現(xiàn)任何效果。
-
在acquireHardVideoFilter和releaseHardVideoFilter之間可以安全的修改濾鏡的屬性。不要持有濾鏡超過(guò)3毫秒。
關(guān)于磨皮算法:
-
使用優(yōu)化過(guò)的帶閾值的高斯模糊算法(Selective Gaussian Blur),sigma = 0.1,稀疏的取周?chē)?4個(gè)點(diǎn),正態(tài)分布取權(quán)重計(jì)算均值。
關(guān)于兼容GPUImageFilter:
-
使GPUImageCompatibleFilter來(lái)兼容GPUImage的濾鏡,注意不能直接使用GPUImageGroupFilter,需要把單獨(dú)的濾鏡用GPUImageCompatibleFilter包裹,再用HardVideoGroupFilter組合起來(lái),具體可以參考sample中的gpuimage:SketchGroup濾鏡。
