实时修改视频文件的输出



我已经为此挣扎了一段时间了,发现了一些关于使用TextureSurface, FFmpegFrameGrabber等的主题,但仍然没有线索。我想加载一个视频文件,而不是采取帧并进行一些修改(使用JavaCV或OpenCV4Android处理帧),并显示它回到用户。视频文件中的每一帧都要重复这个过程。有人知道怎么做吗?

我以前还没有使用过FFmpegFrameGrabber,但我使用自己编写的ffmpeg JNI。我的解决方案是:

  1. 通过ffmpeg获取帧数据(NV21或BGR24)
  2. 使用我的图像/视频处理算法处理帧数据。
  3. 上传帧数据到GPU作为OpenGL纹理。
  4. 在全屏矩形中显示OpenGL片段着色器的数据。

我有另一个想法,如果第2个操作可以在GPU着色器中编写(许多移动设备的实时相机效果是通过这种方法完成的)。您可以使用MediaPlayer而不是ffmpeg。为SurfaceTexture编写GPU着色器

最新更新