我已经为此苦苦挣扎了一段时间,发现了一些关于使用 TextureSurface、FFmpegFrameGrabber 等的主题,但仍然没有任何线索。我想加载一个视频文件,而不是获取一个框架并进行一些修改(使用 JavaCV 或 OpenCV4Android 处理框架)并将其显示给用户。应针对视频文件中的每一帧重复此过程。有谁知道如何做到这一点?
问问题
973 次
1 回答
0
之前我还没有用过FFmpegFrameGrabber,但是我用的是自己写的ffmpeg JNI。我的解决方案是:
- 通过 ffmpeg 获取帧数据(NV21 或 BGR24)。
- 通过我的图像/视频处理算法处理帧数据。
- 将帧数据作为 OpenGL 纹理上传到 GPU。
- 通过 OpenGL 片段着色器在全屏矩形中显示数据。
我有另一个想法,如果第二个操作可以用 GPU 着色器编写(移动设备中的许多实时相机效果都是通过这种方法完成的)。您可以使用MediaPlayer代替 ffmpeg。并为SurfaceTexture编写 GPU 着色器。
于 2014-03-20T02:24:35.410 回答