安卓视频滤镜

13

我正在尝试创建一个应用程序,在录制的视频中添加滤镜。基本上,我想复制Instagram视频或Viddy现有的功能。

我已经进行了研究,但无法将所有内容拼凑在一起。我研究了使用GLSurfaceView播放录制视频的方法,并且知道可以使用NDK进行像素操作并将其发送回SurfaceView或以某种方式保存它。问题是,我不知道如何发送像素数据,因为似乎没有函数可以访问它。这个想法来自于Camera函数“onPreviewFrame”。该函数返回一个字节数组,允许我操纵像素并显示它。

另一个想法是使用GLSurfaceView并使用OpenGL渲染过滤器。GLSurfaceView具有您可以设置的渲染器,但我对OpenGL不是很熟悉。但是,这又回到实际获取每个视频帧的像素。我还阅读了关于将每个帧作为纹理撕裂然后在OpenGL中操作纹理的方法,但我遇到的答案并不是非常详细。

最后,我研究了JavaCV。我尝试使用FFmpegFrameGrabber,但也没有什么效果。我只想抓取一帧,但当我尝试将帧的ByteBuffer写入ImageView时,我会收到“像素不够大”的错误。

任何指导都将是极好的。

2个回答

7

特别是,DecodeEditEncodeTest是一个CTS测试,用于对视频进行解码,使用GLES着色器进行修改,并重新编码。 - fadden

0

使用Exoplayer过滤器库是很好的选择,这个库可以完成你的工作,但是为了将过滤后的图层与视频合并,你需要额外的工作。

这里有Exoplayer过滤器的链接:ExoplayerFilter

你需要使用Exoplayer来完成这个任务,但是按照他们的说明操作,你就能够完成任务。如果有什么问题,请联系我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接