通过ffmpeg处理视频水印

ffmpeg简介

项目做重构,旧项目视频及图片资源要向新项目迁移,但旧项目到新项目项目名称有调整,因而资源的迁移也要去除对应的标记,背景是老项目做视频上传时,固定位置有水印,根据产品需求,需要将老的视频资源上的水印去除,于是考虑到使用视频工具ffmpeg。

ffmpeg是可以转换音视频流的工具,其包含丰富的音视频处理工具库,提供了录制、转换以及流化音视频的完整解决方案。也包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

ffmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括WindowsMac OS X等。很多常用的音视频处理工具底层都是使用FFmpeg。

基本安装及命令

window安装比较简单。直接下载解压即可

1)下载进入http://ffmpeg.org/download.html#build-windows选择点击打开链接Windows对应的版本下载

2)解压 ffmpeg-20170418-6108805-win64-static.zip 文件到指定目录;

3)将解压后的文件目录中 bin 目录(包含 ffmpeg.exe )添加进 path 环境变量中;

安装完成后执行 ffmpeg -version 看安装是否成功。

ffmpeg的命令都是ffmpeg开始,加执行参数而成,如下:

ffmpeg -i [source] cmd [source] cmd [param] ...... [output]

常用命令整理

1).视频中音频提取

ffmpeg -i apple.mp4 -f mp3 -vn apple.mp3

2).视频中加入mp3

ffmpeg -i out.mp3 -i kiss.mp4 -y new.mp4

3).音视频裁剪

ffmpeg -i out.mp3 -ss 00:00:00 -t 4 123.mp3

4).获取音视频信息

ffmpeg -i source.mp4

5).视频固定位置加马赛克 xy位置坐标 wh马赛克的大小

ffmpeg -i source.mp4 -filter_complex delogo=x=%s:y=%s:w=200:h=50:show=0,delogo=x=%s:y=%s:w=200:h=50:show=0 out.mp4

6).ffplay 开启摄像头

ffplay -f vfwcap -i 0

7).rtmp推流到服务器

ffmpeg -f dshow -i video="USB 视频设备" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/234

8).rtmp推视频流到服务器

ffmpeg.exe -re -i 100MB.mp4 -f flv rtmp://192.168.23.124:1935/live/123

Java集成ffmpeg处理水印工具

如上命令5,通过Java调用系统命令,调用ffmpeg处理水印并将视频存储到本地。代码如下:

Java code

通过Jvm调用系统命令执行ffmpeg命令。其中通过视频的大小(长和宽<也可以由ffmoeg获取>)计算水印的位置。

加水印的命令:"delogo=x=%s:y=%s:w=200:h=50:show=0,delogo=x=%s:y=%s:w=200:h=50:show=0",表示在视频的两个位置去除水印,水印大小为长200,宽50,两个坐标计算后,由String.format格式化加入。

处理前后效果

处理效果图

写在后面:

由于作者只是简单集成使用,暂未进行过多的深入学习,当然ffmpeg还有包含更多实用性的功能,包括搭建音视频服务器,并且推流实现直播功能等。欢迎读者一起学习,并探讨!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容