【问题标题】:how to add text to the video in android?如何在android中的视频中添加文字?
【发布时间】:2015-09-17 23:01:41
【问题描述】:

在我的应用程序中,我录制了一个视频,我想在该视频的右下方覆盖我公司的网址。我用 MediaRecorder 录制视频,录制没有问题,但是为视频添加文本我没有成功。我搜索并找到了一些库,如 FFmpeg 和 JavaCV,它们可以让用户在视频上叠加文本,但我不知道是否有任何方法可以在 Android 中使用它们。之后找到 OnPreviewFrame,它返回 camerapreivew 的每一帧。我想在用户触摸录制按钮后获取所有帧并使用画布将文本绘制到每个帧,然后将所有这些帧保存在一起,直到录制视频停止,并且视频持续时间固定为 15 秒。这是一个很好的解决方案吗?如果是,我应该如何实现 OnPreviewFrame 功能?我知道如何绘制画布,但我不知道如何将 data[] 转换为位图。

【问题讨论】:

    标签: android video canvas bitmap ffmpeg


    【解决方案1】:

    使用该方法在性能方面将是相当沉重的。 我绝对建议您更深入地研究 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。

    希望对你有帮助。

    【讨论】:

    • 嗨@NikolaMilutinovic,我也在尝试在视频上添加叠加层,但速度不太好。编码 10 秒的视频大约需要 20-25 秒。让我知道我是否可以提高它的性能?谢谢
    • 你在用什么? FFMPEG 还是位图的东西?
    • 我正在使用FFMPEG
    • 这取决于视频质量。如果您以高比特率压缩高清视频,则需要一些时间。您可以了解如何降低比特率并降低输出质量,以便更快地获得结果。 FFMPEG 有这样的选择
    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 2012-09-24
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多