在Android设备上快速绿屏视频处理

时间:2015-03-17 12:49:26

标签: android opencv ffmpeg javacv gpuimage

我在iOS上编写了一个应用程序,它带有两个视频源,一个在绿色屏幕上移动角色,另一个视频。然后,程序使用GPUImage框架通过OpenGL ES 2添加色度键着色器,然后合并每个帧(因此底部帧现在显示绿色像素所在的位置)并输出到新的视频文件。这种情况发生得非常快,比实时更快。

我现在的任务是将应用程序移植到Android。我认为这将是相当简单的。做了一些研究之后我觉得我错了。有一个GPUImage的Android端口,但它目前不处理视频。我做了一些研究,提出了一个非常基本的想法。

我想知道你认为这种方法是否可行:

使用ffmpeg或JavaCV包装器转换一个视频文件以匹配其他视频的分辨率和类型。

使用ffmpeg逐帧读取每个视频因为MediaMetadataRetriever非常慢并转换为某种RGB格式。使用着色器应用色度键效果,以便合并两个帧。

使用ffmpeg将结果输出到新文件。

这听起来很慢,但如果听起来可行,我会尝试一下。我不确定确保2个视频分辨率/比特率等匹配。一个视频将固定为1280 * 720,另一个视频源将来自设备上的摄像头,因此将是可变的。另外我认为ffmpeg意味着使用NDK,这是一个我想避免的痛苦的整个世界。

我很头疼地想着它。任何建议都将不胜感激。

0 个答案:

没有答案