Android视频添加时间水印

前言

根据添加水印的方式,可以将Android视频中的文本水印分为实时添加和后期添加两种方式。

  • 实时添加水印:使用MediaCodec进行视频解码和编码,在解码出视频帧后,使用Canvas绘制水印,然后将处理后的视频帧编码输出。

    • 优点:实时性高,处理过程中不会对原始视频文件进行修改。
    • 缺点:需要对视频编解码有一定了解,实现复杂,且可能会更耗性能。
  • 后期添加水印:使用ffmpeg库处理视频文件,在处理过程中添加水印。

    • 优点:实现简单,通过命令行工具即可完成。
    • 缺点:不是实时处理,会产生新的文件,且对性能要求相对较低。

本次需求添加的时间水印没有精确到秒,所以采用的是后期添加水印使用ffmpeg实现的方式

ffmpeg的GitHub地址:https://github.com/arthenica/ffmpeg-kit

实现过程中遇到的问题

1.添加水印之后的视频变得模糊

使用的命令:

val arrString = arrayListOf("drawtext=fontfile='MyFontName': text='${tvTime.text.toString().replace(":", "\\:")}': x=10: y=(h-th-80): fontcolor=white: fontsize=24")
if (tvLocation.text.length > 18) {
    arrString.add("drawtext=fontfile='MyFontName': text='${tvLocation.text.substring(0, 18)}': x=10: y=(h-th-50): fontcolor=white: fontsize=24")
    arrString.add("drawtext=fontfile='MyFontName': text='${tvLocation.text.substring(18, tvLocation.text.length)}': x=10: y=(h-th-30): fontcolor=white: fontsize=24")
} else {
    arrString.add("drawtext=fontfile='MyFontName': text='${tvLocation.text}': x=10: y=(h-th-50): fontcolor=white: fontsize=24")
}
// 构建FFmpeg命令
val command = "-y -i $path -vf \"${arrString.joinToString(", ")}\" -c:v mpeg4 -c:a copy $newPath"

在这个命令中:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值