在我的应用程序中,我录制了一段视频,并且我希望将该公司的网址覆盖在该视频的右下角。我使用MediaRecorder录制视频,录制没有问题,但是为了向视频添加文字,我还没有成功。我搜索并找到了像FFmpeg和JavaCV这样的库,让用户在视频上覆盖文本,但我不知道是否有任何方法可以在Android中使用它们。之后发现OnPreviewFrame返回camerapreivew的每一帧。我希望在用户触摸记录按钮后获取所有帧并使用画布将文本绘制到每个帧,然后将所有这些帧保存在一起,直到录制视频停止,并且视频持续时间被修复并且15秒。这是一个好的解决方案吗?如果是的话,我应该如何实现OnPreviewFrame函数?我知道如何绘制画布,但我不知道如何将data []转换为位图。
答案 0 :(得分:4)
使用该方法将非常重视性能。 我肯定建议你深入了解ffmeg。我相信它并不难以使用,并且有ffmeg的简单库,没有NDK的喧嚣。看看这个library并检查是否有你需要的功能。
ffmpeg -i movie.mp4 -i logo.png -filter_complex overlay output.mp4
此命令将是您正在寻找的东西。
如果您仍想使用除ffmeg以外的其他内容,我建议您查看MediaMetadataRetriever
public Bitmap getFrameAtTime (long timeUs)
这种方法可以使用。它为您提供了位图。但是它仍然会像地狱一样缓慢。我尝试使用这种方法创建GIF,并在一段时间后回到ffmeg。
希望它有所帮助。