Android使用FFmpeg给图片视频添加水印

来源:互联网 发布:软件开发的几个阶段 编辑:程序博客网 时间:2024/05/17 18:29

确定目标

最近项目新需求,需要给视频和图片后向添加水印,而前向的添加直接在surfaceview中添加水印相关的bitmap,让每一帧都有水印,然而后向添加一时不知如何处理,所以开始寻找后向添加水印的方式.

了解分析

通过google百度,了解到ffmpeg开源框架有处理图像音频视频的能力,当然项目时间紧,只能先过一遍拿来就用,所以开始深入查询相关库,开始是ffmpeg-Android,封装到位,通过demo试错,无奈视频加水印时间太长,2s视频需要10分钟,完全不能忍.几经周折,后面发现了下面博客
,通过博客给的demo,速度可以接受,只需要修改封装成相关库即可

Android多媒体之二:jni调用ffmpeg命令

实践

有了上面那位的详细介绍,并且还提供了github上的地址,所以也就直接使用.但是提供的仅仅只是一个demo,还是需要修改一下的.
封装过并针对水印功能做了so size裁剪,可以在项目中直接使用.

https://github.com/callmeli/ffmpeg-jni

坑点

  • 视频的尺寸和图片水印的大小位置不符
水印通过尺寸比列重建bitmap,位置通过视频的宽高比例重新计算
  • ffmpeg相关包太大
    ijkplayer github地址
ijkplayer 相关关于ffmpeg裁剪的教程
  • ffmpeg支持的android版本
目前发现的支持android 4.2以上
  • 找不到相关so
    查询到的博客
项目中有些库使用了arm架构,而ffmpeg的so只保留了v7a的,所以删除了其他项目arm文件夹
  • 添加水印时间过程非常长
    ffmpeg常用命令
1 添加 -acodec copy 保证只处理视频,音频直接拷贝.2 子线程加载so,运行命令.主线程传递命令和相关回调
原创粉丝点击