最近在做Android rtmp带滤镜推流相关的东西,写个文章记录一下
https://github.com/lakeinchina/librestreaming
RESClient是总入口,持有RESVideoClient,RESAudioClient和RESRtmpSender。
RESVideoClient负责采集图像数据传给RESVideoCore。
RESVideoCore有两种:
RESSoftVideoCore是软滤镜模式,通过setPreviewCallbackWithBuffer获取图像数组,然后处理NV21图像数组来实现滤镜,并且以buffer2buffer的方式使用MediaCodec硬编码,编码数据通过Packager打包成rtmp格式,然后传给RESRtmpSender。
RESHardVideoCore是硬滤镜模式,通过setPreviewTexture获取图像纹理,然后使用opengles通过绘制camera texture到surface来实现滤镜。然后以surface2surface的方式使用MediaCodec硬编码