Android视频过滤器

cma*_*hat 12 video android opengl-es filter

我正在尝试创建一个应用程序,我可以在录制的视频中添加过滤器.基本上,我想复制Instagram视频或Viddy中存在的功能.

我做过研究,我不能把它拼凑起来.我已经研究过使用GLSurfaceView播放录制的视频,我知道我可以使用NDK进行像素处理并将其发送回SurfaceView或以某种方式保存.问题是,我不知道如何发送像素数据,因为似乎没有访问它的功能.这个想法来自Camera函数"onPreviewFrame".该函数返回一个字节数组,允许我操纵像素并显示它.

另一个想法是使用GLSurfaceView并使用OpenGL来渲染过滤器.GLSurfaceView有一个你可以设置的渲染器,但我对OpenGL不是很熟悉.但同样,这又回到了实际获取每个视频帧的像素.我还读到了将每个帧作为纹理进行翻录,然后在OpenGL中操作纹理,但我遇到的答案并不十分详细.

最后,我研究了JavaCV.试图使用FFmpegFrameGrabber,但我也没有多少.我想只抓一帧,但是当我尝试将帧的ByteBuffer写入ImageView时,我得到一个"不足以容纳像素的缓冲区"错误.

任何指导都会很棒.

Sha*_*ika 5

在Android 4.3中,您可以使用a Surface作为编码器的输入.http://developer.android.com/about/versions/android-4.3.html#Multimedia

因此,您可以使用GLSurfaceView并使用片段着色器应用过滤器.

你可以在这里找到一些很好的例子.http://bigflake.com/mediacodec/