我正在编写一个视频播放器,在将每个解码帧显示在屏幕上之前,我尝试对其应用滤镜。
我使用
我已经使用了此页面上的ExtractMpegFramesTest作为示例:
完成后,我想在屏幕上呈现筛选后的帧。我可以再次使用MediaCodec进行编码,并使用VideoView进行渲染,但这样每帧都会被不必要地编码和解码。
有没有有效的方法来在屏幕上渲染这些帧?
我使用
MediaCodec
提取帧。这些帧被解码到从SurfaceTexture
创建的Surface中,渲染(离屏)到pbuffer中,然后使用glReadPixels()
提取。我已经使用了此页面上的ExtractMpegFramesTest作为示例:
http://bigflake.com/mediacodec/
此时,我使用ByteBuffer
提取像素,并在其上执行一些后处理(如转换为灰度或运行边缘检测等)。完成后,我想在屏幕上呈现筛选后的帧。我可以再次使用MediaCodec进行编码,并使用VideoView进行渲染,但这样每帧都会被不必要地编码和解码。
有没有有效的方法来在屏幕上渲染这些帧?