可以使用 ffmpeg 方便的进行视频截取、视频格式转换、视频转gif动画等操作。

HUGOMORE42

基本格式

基本格式:

1
ffmpeg -i input.mp4 output.avi

常用参数

  • -i 指定输入文件

  • -f 指定输出格式

  • -ss 指定开始时间,从这个时间开始进行处理。 -ss 00:10:30

  • -t 持续时间 -t 5, -t 00:00:05

  • -r 设定输出帧率,默认为 25。 -r 15

  • -b 设定输出码率,黑夜为 200Kbit/s

  • -s 设定输出尺寸,缺省则保持原大小。 -s 640x360

  • -vn 不处理视频

  • -an 不处理音频

  • -vcodec 设定视频编解码格式 -vcodec h264

  • -acodec 设定音频编解码格式 -acodec acc

  • -vf Video Filter, 视频过滤器

  • -title 设置标题

  • -author 设置作者

  • -copyright 设置版权

常用过滤器

  • 输出大小
1
2
3
4
5
6
7
8
9
#通过 -vf scale 过滤器指定输出宽高, iw=输入流的宽度, ih=输入流的高度, -1=等比缩放
ffmpeg -ss 00:13:00 -t 00:02:00 -i S1E01.rmvb -s 640x360  -vf scale=iw/2:-1  s1e01.mp4

# 通过 -s 参数指定输出大小. 
# 等效于: 0vf scale=640:360 ?
ffmpeg =i S1E01.rmvb -s 640x360 s1e01.mp4

# crop=w:h:x:y  裁切画面,从(x, y)的位置开始取 w×h 大小的画面
ffmpeg -i S1E01.rmvb -vf crop=995:1080:540:0 -acodec copy -vcodec libx264 -f mp4 s1e01.mp4
  • 在视频上打水印
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 水印位置左上角
ffmpeg -ss 00:13:00 -t 00:00:10 -i S1E01.rmvb -i ~/Downloads/logo.png -filter_complex overlay  -s 640x300 s1e01-2.mp4

##水印位置右上角
ffmpeg -ss 00:13:00 -t 00:00:10 -i S1E01.rmvb -i ~/Downloads/logo.png -filter_complex overlay=W-w   -s 640x300 s1e01-2.mp4


左下角: 
-filter_complex overlay=0:H-h
右下角: 
-filter_complex overlay=W-w:H-h
  • 去掉视频上的水印

语法: -vf delogo=x:y:w:h[:t[:show]]
参数说明:

1
2
3
4
x:y 离左上角的坐标 
w:h logo的宽和高 
t: 矩形边缘的厚度默认值4 
show:若设置为1有一个绿色的矩形,默认值0。

示例:

1
ffmpeg -i s1e01-2.mp4 -vf delogo=0:0:600:216:100:1 output.mp4

其它

  • 从视频中指定时间抽取图像为 jpeg 图片
1
ffmpeg -ss 00:13:00 -i S1E01.rmvb -s 320x240 -vframes 1 -f image2 output.jpeg
  • 从视频中每秒抽取N帧组成gif动画
1
2
3
4
5
# 每秒抽5帧 保存为一系列JPEG文件
ffmpeg -ss 25 -t 10 -i S1E01.rmvb -r 5 -s 320x240 -f image2 ~/temp/photo-%03d.jpeg

# 将JPEG合成帧率为 5fpms 的gif动画
ffmpeg -f image2 -framerate 5 -i ~/temp/photo-%03d.jpeg output.gif

ffmpeg视频转gif示例