本文主要是介绍如何使用ffmpeg命令行工具进行各式各样的音视频处理操做——缩放、裁剪、剪辑、旋转、格式转换,etc。。。学了本文,基本能够把格式工厂之类的音视频处理软件删了。。html
本文只介绍mac系统下的安装方法,Linux的用户安装也很简单,Win的用户也能够上网找找教程。。。bash
Homebrew号称是“OS X 不可或缺的包管理器”,经过homebrew,能够很方便地在mac上安装经常使用的命令行工具。给出官网:http://brew.sh/markdown
安装和使用方法官网说得很详细,恩。。ide
上面咱们已经安装了Homebrew,接下来咱们很方便地就能够安装ffmpeg,只须要一行命令:工具
$ brew install ffmpeg //使用brew安装ffmpeg
复制代码
执行了上面的命令后,brew会开启疯狂下载模式。。若是网速快的话,一下子就能够下载完毕。而后brew还会自动把ffmpeg的启动路径加到path环境变量中,这样你就能够在任何地方使用ffmpeg了,不须要先cd到ffmpeg安装目录再执行命令了。spa
brew自动把ffmpeg的启动路径加到path环境变量时,可能会提示“permission denied”,这是由于brew没有更改相关文件的权限,手动加上就行了,举个例子:命令行
$ sudo chmod 777 /usr/share/ // 这个命令是给全部程序添加/usr/share/的读、写、执行权限,执行成功以后就brew就能够更改/usr/share/下的内容了
复制代码
上面的命令会让你输入当前登陆用户的密码,输入你电脑的密码就好啦。code
有时候咱们须要截取一个长视频的其中某一段内容,好比从一个视频的第10秒开始,截取6秒的内容,也就是10~16秒的内容,输入一个out.mp4文件orm
$ ffmpeg -i in.mp4 -ss 00:00:10 -t 00:00:06 -acodec aac -vcodec h264 -strict -2 out.mp4 //从00:00:10开始,截取的长度为00:00:06
复制代码
参数解释:视频
-i 表明输入待处理的文件
-ss 表明开始的时间
-t 表明截取的长度。
-acodec 音频编解码器,这个不懂的话也不要紧,直接照抄就行。。
-vcodec 音频编解码器,这个不懂的话也不要紧,直接照抄就行。。
不少时候咱们须要把一个高分辨率的视频处理成一个低分辨率的视频,以达到减少视频体积的目的。举个例子:把一个10801920的视频缩小到360640
$ ffmpeg -i in.mp4 -vf scale=360:640 -acodec aac -vcodec h264 out.mp4 // 1080*1920-->360*640
复制代码
参数解释:
-i 表明输入,
-vf 的全称是video filter,即:视频滤镜,缩放其实就是给视频添加一个滤镜。
scale=360:640 scale是一种滤镜,缩放滤镜,格式是:scale=width:height,其中,width和height分别是处理后的宽和高
有时候咱们想截取一个大视频的中间一部分画面,好比一个10801920的视频,咱们想截取中间的10801080的部分,这个也能够实现的:
$ ffmpeg -i in.mp4 -strict -2 -vf crop=1080:1080:0:420 out.mp4
复制代码
参数解释:
crop 和上面的scale同样,也是视频滤镜的一种,crop是裁剪滤镜。四个参数分别是 width:height:x:y,其中width和height指的是裁剪的宽和高,x和y表明裁剪的区域的左上角的坐标,坐标系原点为原视频的左上角。好比 0:0就表明原视频的左上角,50:50就表明以原视频的左上角为原点的坐标系的50:50位置
使用ffmpeg能够轻松地旋转视频。举个例子:将一个视频顺时针旋转90度
$ ffmpeg -i in.mp4 -vf rotate=PI/2:ow=1080:oh=1920 out.mp4
复制代码
参数解释:
视频旋转其实也是一直滤镜。
rotate=PI/2 rotate是旋转滤镜,后面的“PI/2”旋转角度(正数表明顺时针),这里是90度
rotate除了指定旋转角度的参数外,还有其余一些参数:
ow 全称是out width,输出视频的宽度,若是不指定,默认是输入视频的宽度
oh 全称是out height,输出视频的高度,若是不指定,默认是输入视频的高度
帧率会很大程度上影响画面的流畅度和视频的体积,帧率越大,画面越流畅,同时视频体积越大。
咱们有时候须要经过下降帧率来减少视频的体积。
举个例子:将一个视频的帧率降到15
$ ffmpeg -i in.mp4 -r 15 out.mp4
复制代码
参数解释:
-r 帧率
ffmpeg具有强大的格式转换功能,这里举几个经常使用的例子。
$ ffmpeg -i in.mov -vcodec copy -acodec copy out.mp4 // mov --> mp4
$ ffmpeg -i in.flv -vcodec copy -acodec copy out.mp4 // flv --> mp4
$ ffmpeg -i in.gif -vf scale=420:-2,format=yuv420p out.mp4 // gif --> mp4
复制代码
有的时候咱们须要在处理以前先了解一下视频的参数信息,好比分辨率、比特率等等。能够使用下面的命令:
$ ffmpeg -i in.mp4 // 不加任何参数,只指定输入的视频
复制代码
来个截图:
稍后继续。。。
FFmpeg有着强大的音视频处理能力,其官网给出了众多音视频处理滤镜的使用介绍,文中只提到了一些经常使用的操做,若是没有你想要的,能够直接去看下官网的滤镜介绍。
音视频滤镜介绍:http://ffmpeg.org/ffmpeg-filters.html