【发布时间】:2013-07-17 19:03:36
【问题描述】:
我正在尝试创建一个可以为录制的视频添加过滤器的应用。基本上,我想复制 Instagram 视频或 Viddy 中存在的功能。
我已经完成了研究,但我无法将所有内容拼凑在一起。我已经研究过使用 GLSurfaceView 播放录制的视频,我知道我可以使用 NDK 进行像素操作并将其发送回 SurfaceView 或以某种方式保存。问题是,我不知道如何发送像素数据,因为似乎没有访问它的功能。这个想法来自相机功能“onPreviewFrame”。该函数返回一个字节数组,允许我操作像素并显示它。
另一个思路是使用GLSurfaceView,使用OpenGL来渲染滤镜。 GLSurfaceView 有一个可以设置的渲染器,但我对 OpenGL 不是很熟悉。但同样,这又回到了实际获取每个视频帧的像素。我还阅读了关于将每一帧作为纹理翻录,然后在 OpenGL 中操作纹理,但我遇到的答案不是很详细。
最后,我研究了 JavaCV。尝试使用 FFmpegFrameGrabber,但我也没有太多。我只想抓取一帧,但是当我尝试将帧的 ByteBuffer 写入 ImageView 时,出现“缓冲区不足以容纳像素”错误。
任何指导都会很棒。
【问题讨论】:
标签: android video opengl-es filter