Android - 实时修改视频文件的输出

时间:2014-03-19 15:25:55

标签: android opencv video-processing javacv frame-grab

我一直在讨论这个问题已经有一段时间了,发现了一些关于使用TextureSurface,FFmpegFrameGrabber等的话题,但仍然没有线索。 我想加载一个视频文件,而不是采取框架并进行一些修改(使用JavaCV或OpenCV4Android处理框架)并将其显示给用户。应该对视频文件中的每个帧重复此过程。 有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

之前我还没有使用过FFmpegFrameGrabber,但我使用的是ffmpeg JNI。 我的解决方案是:

  1. 通过ffmpeg获取帧数据(NV21或BGR24)。
  2. 通过我的图像/视频处理算法处理帧数据。
  3. 将帧数据作为OpenGL纹理上传到GPU。
  4. 通过全屏矩形中的OpenGL片段着色器显示数据。
  5. 如果可以用GPU着色器编写第2个操作,我还有另一个想法(移动设备中的许多实时相机效果都是通过这种方法完成的)。您可以使用MediaPlayer代替ffmpeg。并为SurfaceTexture编写GPU着色器。