ffmpeg简介
项目做重构,旧项目视频及图片资源要向新项目迁移,但旧项目到新项目项目名称有调整,因而资源的迁移也要去除对应的标记,背景是老项目做视频上传时,固定位置有水印,根据产品需求,需要将老的视频资源上的水印去除,于是考虑到使用视频工具ffmpeg。
ffmpeg是可以转换音视频流的工具,其包含丰富的音视频处理工具库,提供了录制、转换以及流化音视频的完整解决方案。也包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
ffmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac 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处理水印并将视频存储到本地。代码如下:
通过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还有包含更多实用性的功能,包括搭建音视频服务器,并且推流实现直播功能等。欢迎读者一起学习,并探讨!