Results 4 comments of zonda

@begeekmyfriend 最近我尝试了在 onDrawFrame 里面使用 OpenGL ES 2.0 添加了一层图片的纹理确实可以加水印,但是这样仅仅只是在客户端的直播界面显示水印而不能在直播源加入; 后来看到直播源是在 GPUImageFilter 的 mGLFboBuffer 变量读取的 因此我尝试在 GPUImageFilter onDrawFrame 加入同样的渲染代码但是无法成功,请问这个思路有问题吗? GPUImageFilter 是否支持插入一个着色器绘制水印?

@begeekmyfriend 感谢大神回答~~~ 之前有看过你写的上传过程,是不是这样: 创建一个 ByteBuffer 对象用来承载 Rgba 格式的数据,然后在一个工作线程中,轮询 mGlIntBufferCache 将 IntBuffer 帧数据转化为 ByteBuffer 然后转化为 byte[] 类型的 RGBA 格式的帧数据,最后通过 SrsEncoder 把该数据转化成 FLV 格式的视频数据 基于以上理解,“你从FBO读取的RGBA数据,将水印图片混入” 的意思是为直播流加水印这一步放到 SrsCameraView 的 enableEncoding 方法 调用 PreviewCallback...

不过这个渲染应该要放到: GLES20.glReadPixels(0, 0, mInputWidth, mInputHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, mGLFboBuffer); 之前吧,所以应该是 GPUImageFilter onDrawFrame 里面加吧?

嗯,我现在的实现思路是参考[grafika](https://github.com/google/grafika/blob/master/src/com/android/grafika/ContinuousCaptureActivity.java),想和这个例子一样,直接离屏和屏幕渲染共用一套渲染逻辑,我先再研究下啊,后面有结果的话再贴代码。