首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >偶遇FFmpeg(二)——常用命令

偶遇FFmpeg(二)——常用命令

作者头像
deep_sadness
发布2018-08-30 11:03:27
2.4K0
发布2018-08-30 11:03:27
举报
文章被收录于专栏:Flutter入门Flutter入门

下面来熟悉一下常用的对视频操作的几个命令。这次需要完成的命令也包括在其中。

视频的画面大小的剪切(crop filter)

将输入的视频的帧,以左上角为坐标的原点,剪切成x,y坐标开始的指定大小。 语法:

# []包裹的选项是可选的
crop= ow[:oh[:x[:y[:keep_aspect]]]]
​#example
​ffmpeg -i input -vf crop=iw/3:ih:0:0 output
 ffmpeg -i input -vf crop=iw/3:ih:iw/3:0 output
ffmpeg -i input -vf crop=iw/3:ih:iw/3*2:0 output

简单的解释:

  • x,y :是偏移量。
  • ow,oh :是输出的宽和高。
  • iw ih :还可以使用来表示输入的宽和高
  • a: 表示比例 ,和 iw/ih 一样

如果想从中间开始剪切,命令就编程了

ffmpeg -i input_file -vf crop=w:h output_file

视频的Padding(应该是增加内边距)(pad filter)

给视频添加一个内边距。通常是视频需要在不同显示比例的画面中显示时,需要的命令。 语法:

#[]中的同样是可选的#坐标系与之前相同pad=width[:height[:x[:y[:color]]]]​
#example
ffmpeg -i photo.jpg -vf pad=860:660:30:30:pink frame_photo.jpg

增加内边距.png

更常用的是将4:3的画面转换成16:9

# 如果不给color的话。默认将会是黑色的背景
# 将画面从4:3 切换成16:9
ffmpeg -i input -vf pad=ih*16/9:ih:(ow-iw)/2:0:color output
# 16:9 转换成 4:3
ffmpeg -i input -vf pad=iw:iw*3/4:0:(oh-ih)/2:color output

其实标准的公式如下

# ar是画面的比例。如果是增加画面的宽度,则是
ffmpeg -i input -vf pad=ih*ar:ih:(ow-iw)/2:0:color output
# 如果是增加画面的高度,则是
ffmpeg -i input -vf pad=iw:iw*ar:0:(oh-ih)/2:color output

翻转和旋转视频(flip filter)

对视频进行翻转和旋转 语法:

#水平翻转(Horizontal flip)
-vf hfilp
#竖直翻转(Vertical flip)
-vf vfilp
# 旋转 
#0 - 逆时针旋转+竖直翻转
#1- 顺时针旋转 90
#2- 逆时针旋转 90
#3- 顺时针旋转90 + 竖直的翻转
transpose={0,1,2,3}

模糊、锐化和其他添加噪点的滤镜

模糊滤镜
  • boxblur
语法:
# r=radius p=powerboxblur=luma_r:luma_p[:chroma_r:chroma_p[:alpha_r:alpha_p]]
#example
ffmpeg -i input.mpg -vf boxblur = 1.5:1 output.mp4
  • smartblur
#t = threashold
smartblur = luma_r:luma_s:luma_t[:chroma_r:chroma_s:chroma_t]
#example
ffmpeg -i halftone.jpg -vf smartblur= 5:0.8:0 blurred_halftone.png

模糊.png

锐化

滤镜的名称竟然是 unsharp

语法:

l_msize_x:l_msize_y:l_amount:c_msize_x:c_msize_y:c_amount
#all parameters are optional, if not set, the default is 5:5:1.0:5:5:0.0

默认的明亮度矩阵是5x5 而明亮度(luma)的效果强度是1.0.如果想创造高斯模糊的效果的话,可以使用一个负数的明亮度或者是浓度(chroma)

#高斯模糊的效果
ffmpeg -i input -vf unsharp= 6:6:-2 output.mp4

下面4张图是NASA的拍摄的图片。

  1. 是原图。
  2. -vf unsharp
  3. -vf unsharp=6:6:3
  4. -vf unsharp = 6:6:-2

锐化和高斯模糊对比.png

有部分降噪的fliter暂且略过

覆盖(Overlay)

可以实现画中画的功能。这里只是简单的覆盖的实例,更加复杂的例子需要在后面的进阶单元里看到。 语法:

overlay[=x:y[[:rgb={0,1}]]
# x,y是可选的。默认参数是0 # rgb 也是可选的。它的值是 0或者1
命令行的构成
ffmpeg -i input1 -i input2 -filter_complex overlay=x:y output

这里需要注意是的 filter_complex 来替代-vf,因为有两个输入源。但是如果使用flitergraph和 link labels.这样我们就可以使用 movie 视频源,囊括第二输入和使用-vf

# 使用 movie 和 -vf
ffmpeg -i input1 -vf movie=input2[logo];[in][logo] overlay=x:y output​#Logo in top-left corner
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay pair1.mp4

左上角

# Logo in top-right corner
#W 表示输入的视频的width w表示图片的宽度
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w pair2.mp4

右上角

#Logo in bottom-right corner
ffmpeg -i pair.mp4 -i logo.png -filter_complex overlay=W-w:H-h pair3.mp4

右下角

添加文字到视频上

video filter:drawtext 语法:

drawtext=fontfile = font_f:text=text1[:p3=v3[:p3=v4[...]]]​
#最简单的example就是。 此时需要注意的是,这个字体文件必须在当前目录下
ffmpeg -i input -vf drawtext=fontfile=arial.ttf:text=Welcome output

未完待续....

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.04.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 视频的画面大小的剪切(crop filter)
  • 视频的Padding(应该是增加内边距)(pad filter)
  • 翻转和旋转视频(flip filter)
  • 模糊、锐化和其他添加噪点的滤镜
    • 模糊滤镜
    • 锐化
    • 覆盖(Overlay)
      • 命令行的构成
      • 添加文字到视频上
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档