如何在安卓设备上给视频添加文字?

4
在我的应用程序中,我录制了一个视频,并希望将我的公司的URL叠加在视频的右下角。我使用MediaRecorder录制视频,录制时没有问题,但是我还没有成功地为视频添加文本。我查找并发现了一些库,如FFmpeg和JavaCV,可以让用户在视频上叠加文本,但我不知道是否有任何方法在Android中使用它们。然后找到了OnPreviewFrame,它返回相机预览的每个帧。我想在用户触摸录制按钮后获取所有帧,并使用画布向每个帧绘制文本,然后将所有这些帧保存在一起,直到录制视频停止,视频持续时间固定为15秒。这是一个好的解决方案吗?如果是的话,我该如何实现OnPreviewFrame函数?我知道如何绘制画布,但我不知道如何将数据[]转换为位图。
1个回答

6

使用该方法在性能方面会非常沉重。我强烈建议您深入了解ffmeg。我相信它并不难使用,并且有简单的ffmeg库,无需使用NDK。查看此,检查您需要的功能是否可用。

ffmpeg -i movie.mp4 -i logo.png -filter_complex overlay output.mp4

这个命令可能是你正在寻找的。

如果你还想使用除ffmeg之外的其他东西,我建议你看一下MediaMetadataRetriever

public Bitmap getFrameAtTime (long timeUs)

这种方法是你可以使用的。它提供了位图来绘制。但仍然会非常慢。我尝试使用这种方法创建gif,但最终还是回到了ffmeg。

希望能对你有所帮助。


嗨@NikolaMilutinovic,我也在尝试在视频上添加叠加层,但速度不太好。它需要大约20-25秒来编码10秒的视频。如果我可以提高它的性能,请告诉我?谢谢。 - Developer
你在用什么?FFMPEG还是那个带位图的东西? - Nikola Milutinovic
我正在使用FFMPEG - Developer
这取决于视频质量。如果您正在压缩高比特率的高清视频,则需要一些时间。您可以了解如何降低比特率和输出质量以便更快地获得结果。FFMPEG具有此类选项。 - Nikola Milutinovic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接