本文介绍ffmpeg命令行的一些使用方法;

参数

主要参数

  • -i——设置输入档名。
  • -f——设置输出格式。
  • -y——若输出文件已存在时则覆盖文件。
  • -fs——超过指定的文件大小时则结束转换。
  • -ss——从指定时间开始转换。
  • -t从-ss时间开始转换(如-ss 00:00:01.00 -t 00:00:10.00即从00:00:01.00开始到00:00:11.00)。
  • -title——设置标题。
  • -timestamp——设置时间戳。
  • -vsync——增减Frame使影音同步。

视频参数

  • -b:v——设置视频流量,默认为200Kbit/秒。(单位请引用下方注意事项)
  • -r——设置帧率值,默认为25。
  • -s——设置画面的宽与高。
  • -aspect——设置画面的比例。
  • -vn——不处理视频,于仅针对声音做处理时使用。
  • -vcodec( -c:v )——设置视频视频编解码器,未设置时则使用与输入文件相同之编解码器。

声音参数

  • -b:a——设置每Channel(最近的SVN版为所有Channel的总合)的流量。(单位请引用下方注意事项)
  • -ar——设置采样率。
  • -ac——设置声音的Channel数。
  • -acodec ( -c:a ) ——设置声音编解码器,未设置时与视频相同,使用与输入文件相同之编解码器。
  • -an——不处理声音,于仅针对视频做处理时使用。
  • -vol——设置音量大小,256为标准音量。(要设置成两倍音量时则输入512,依此类推。)

##例子

不过在使用中可能需要用一些不常用的命令行去做一些视频编辑的功能,如下几个例子:

裁剪视频

比如有一个横向视频,分辨率是1280X720,如果指向保留中间的405*720部分,可以使用下面的命令:

ffmpeg -i input.mp4  -strict -2 -vf crop=405:720:420:0  video_out.mp4

其中的crop=405:720:420:0 裁剪参数,具体含义是:crop=width:height:x:y.其中 width和height便是裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。

视频转换成图片

 ffmpeg -i input.mp4 image%3d.png

也可以指定视频导出的图片的帧率,(1s的视频生成的图片的个数)

 ffmpeg -i input.mp4 -r 30  $filename%3d.png  

其中 -r 30 是视频帧率,如何获取当前视频的帧率,请看如下命令:

ffprobe "input.mp4" -v 0 -select_streams v  -print_format flat -show_entries stream=r_frame_rate 

剪辑视频

一段长视频只需要保留其中一段,可用如下命令:

ffmpeg -i input.mp4 -ss 00:00:21 -t 00:00:10 -acodec aac -vcodec h264 -strict -2 out.mp4

其中 -ss 00:00:21 表示开始剪辑的位置(时间点), -t 00:00:10 表示剪辑的长度,即10秒钟。

调整视频分辨率大小

一段视频尺寸是1080p(即1920*1080px, 16:9),使用下面命令转换成 480p:

ffmpeg -i input.mp4 -vf scale=853:480 -acodec aac -vcodec h264 out.mp4
  • -vf scale=853:480 vf 参数用于指定视频滤镜,其中scale表示缩放,863*480是480p视频的在保持16:9宽高比下的分辨率
  • -vcodec h264 指定视频使用 h264 编码。

    目前收集一般拍摄视频的格式为 mov 或 mp4,两者的音频编码都是 aac, 视频编码是 h264.