声画分离,这当然只是ffmpeg命令的一个应用场景。
那么,FFmpeg是什么呢?
来看看百度百科的解释:
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、MacOSX等。这个项目最早由FabriceBellard发起,2004年至2015年间由MichaelNiedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"FastForward"。
小程用自己的话,再来翻译一下:
小程:那FFmpeg的开源协议LGPL跟耻辱柱,你也不想听了?
小白:LGPL?老公漂亮?
开源项目都制定自己的开源协议,这里我不细说了,你觉得有必要的话可以去搜索了解。
本文的重点在于,介绍如何使用ffmpeg命令(FFmpeg程序),实现一些常用的音视频操作功能,比如在视频上添加文字或水印。
我的开发环境是mac,以下的介绍都默认在mac系统上操作,但FFmpeg命令基本是平台无差别的。
生成FFmpeg程序有两个办法,一个是使用源码编译生成,另一个是直接安装,我分别介绍这两种方法。
这个办法是下载FFmpeg源码下来,再编译生成FFmpeg程序。如果想使用FFmpeg来组装自己的程序,这个办法是必经之路。
我这里介绍怎么用ffmepg命令来给视频添加文字或水印,为了实现这个功能,在编译FFmpeg时需要增加特定的参数设置。由此可见,为了满足不同的需求,可以调整编译FFmpeg的编译选项。
小程:我是说,在视频帧上加入文字,不是让你在屏幕上画个大叉!
这时,需要使用FFmpeg的drawtext滤镜来实现添加字幕。
滤镜,可以理解为视频的编辑功能(视频效果处理),是FFmpeg强大的功能之一。
先下载FFmpeg的源码:
在FFmpeg目录下面,可以看到FFmpeg的编译配置程序configure。
这时,查看FFmpeg配置后(即执行./configure后)生成的头文件config.h(如果配置过就会有这个文件),可以看到:
这是还没有打开drawtext滤镜的表现。
那怎么样让ffmpeg程序支持filter呢?
首先,需要安装yasm,如果当前的macos没有这个执行程序的话(可以用wihchyasm来查看一下)。yasm是一个汇编编译器,我会在FFmpeg编译给移动平台使用时再介绍一下yasm,现在直接安装即可:
你如果不了解brew的话,可以搜索homebrew进行了解。
安装yasm后,就可以配置FFmpeg,让它支持filter(drawtext依赖于libfreetype):
而此时,config.h中是这样:
接着,编译出ffmpeg工具即可:
小程不建议执行makeinstall来安装到系统,因为在介绍第二种安装ffmpeg程序的办法时,会给系统安装一个ffmpeg。所以,只执行make在当前目录生成ffmpeg即可。
查一下ffmpeg程序,有没有支持到drawtext滤镜:
使用ffmpeg命令,这样加上字幕:
左右滚动的字幕:
固定位置的字幕(这里加了两行):
把上面加了字幕的mp4文件,转换成gif(因为很多网站支持gif上传而不支持视频),比如:
另外注意一下,x与y参数指定了位置,是可以变化的值;
如果需要输出多行文字,则可以使用多个drawtext字段;
如果觉得文字的颜色不好调整,那可以考虑给文字加上背景框,试一下这些参数:
box--是否使用背景框,默认为0boxcolor--背景框的颜色borderw--背景框的阴影,默认为0bordercolor--背景框阴影的颜色以上是在视频上绘制字幕,如果想在视频上绘制图片,包括动态的gif图,怎么处理呢?
视频添加图片:
其中:
movie--水印图片overlay--三个参数,[距视频原图左边的距离,距上边的距离,是否透明],对于视频,最后一个参数不能使用视频添加动态水印(gif):
由于无法上传视频,这里就不展示效果了。至此,小程介绍了如何在视频上添加文字、图片及gif动态水印。
接着介绍的是直接安装FFmpeg的办法。
直接安装FFmpeg库,比如在mac机上,直接用brew来安装。如果你的系统自带ffmpeg,那就不必了。
这样安装FFmpeg:
如果之前已经安装过FFmpeg,那要留意提示,是否新安装的FFmpeg有link成功。如果没有成功也是可以使用的,只是要找对文件来运行。如果不想干扰到原来安装的ffmpeg,也可以起个别名来使用,比如新安装目录是:/usr/local/Cellar/ffmpeg/2.6.2/bin,则在~/.bash_profile中增加一项:aliasf26='/usr/local/Cellar/ffmpeg/2.6.2/bin/ffmpeg',便可以使用f26来调动新安装的FFmpeg。
安装办法可能变化的,遇到问题不要慌,按错误提示,具体问题具体分析。
安装完成后,这样查看一下ffmpeg的信息:
可以看到,默认安装下,已经支持lamemp3、x264、librtmp第三方库等。
安装完ffmpeg,就可以做一些常规操作了。有什么常规操作呢,提取、合成、转码、录制,等等,这些操作都可以使用ffmpeg命令来完成。
小程在这里简单列举几个,你应该根据自己的需求来查看适当的命令。
提取视频流:
提取音频流:
提取音轨(音频流):
ffmpeg-i后来_MQ.m4a-map0:11.wav
提取声道:
合成音频与视频:
转码:
保存rtmp流在本地:
以上介绍了直接安装FFmpeg,并使用ffmpeg命令的内容。
好了,总结一下,本文介绍了如何生成ffmpeg命令程序的办法,包括通过源码编译与直接安装的办法。同时,也演示了使用ffmpeg命令来给视频添加字幕或图像(包括动态图像)的操作,以及列举了可能常用的ffmpeg命令。有缘再见,seeyou。