LibreStreaming - ​安卓实时滤镜RTMP推流库


LGPL
Android
Java

软件简介

Android real-time effect filter rtmp streaming library.using Mediacodec

HWencoding&librtmp stream.

安卓实时滤镜RTMP推流库

简介:

  • 支持cpu滤镜和gpu滤镜。

  • 硬编码基于Mediacodec。

  • 推流基于librtmp。

特性:

  • 支持cpu滤镜,并可以通过处理图像数组来自定义滤镜。

  • 支持gpu滤镜,并可以通过opengles绘制图像纹理来自定义滤镜。

  • gpu滤镜模式下兼容GPUImage,一行代码不用修改就可以直接使用GPUImage的滤镜。

  • 前后摄像头快速切换,不会打断推流。

  • 可以自定义帧率,最大不会超过设备支持帧率

  • 可以选择图像大小,码流比特率,具体取决于设备支持。

关于滤镜:

支持两种滤镜模式:使用cpu的软模式和使用gpu(opengles)的硬模式,硬模式效率通常高于软模式。

软模式下:

  • 你可以通过继承BaseSoftVideoFilter创建自定义滤镜。

  • sample.softfilter中有一些使用Java,NDK和RenderScript来处理图像的滤镜示例。

  • 在acquireSoftVideoFilter和releaseSoftVideoFilter之间可以安全的修改滤镜的属性,不要持有滤镜超过3毫秒。

  • 滤镜中的颜色格式为NV21。

硬模式下:

  • 你可以通过继承BaseHardVideoFilter或者OriginalHardVideoFilter来创建自定义滤镜。

  • sample.hardfilter中有一些示例。

  • 继承OriginalHardVideoFilter只需要通过提供Shader就可以容易的实现大部分效果。

  • 继承BaseHardVideoFilter需要自己处理opengl细节,但是可以实现任何效果。

  • 在acquireHardVideoFilter和releaseHardVideoFilter之间可以安全的修改滤镜的属性。不要持有滤镜超过3毫秒。

关于磨皮算法:

  • 使用优化过的带阈值的高斯模糊算法(Selective Gaussian Blur),sigma = 0.1,稀疏的取周围24个点,正态分布取权重计算均值。

关于兼容GPUImageFilter:

  • 使GPUImageCompatibleFilter来兼容GPUImage的滤镜,注意不能直接使用GPUImageGroupFilter,需要把单独的滤镜用GPUImageCompatibleFilter包裹,再用HardVideoGroupFilter组合起来,具体可以参考sample中的gpuimage:SketchGroup滤镜。