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

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

视频的画面大小的剪切(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

混音

amerge

ffmpeg -y -i  video_bgm.mp4 -i  src2.aac -filter_complex [0:a][1:a]amerge=inputs=2[a] -map 0:v -map [a] -c:v copy -c:a aac -ac 2 -shortest after_compose3.mp4

amix

ffmpeg -i test.aac -i test.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2  mix.aac

参数

-shortest 取最短的时长
-shortest : duration = MIN(inputs)
  • 实例:
ffmpeg -i test.mp4 -i test.mp3 -vcodec copy -acodec aac -map 0:v:0 -map 1:a:0 -shortest mix_test.mp4
调节音量(整体调节)
ffmpeg -i test.mp4 -i test.mp3 -vcodec copy -acodec aac -map 0:v:0 -map 1:a:0 -vol 60 mix_test.mp4
设置时长(amix )

amix : setup duration

ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first[aout]" -map "[aout]" -c:v copy -map 0:v:0 mix_amerge.mp4
调节音量(amix)
ffmpeg -i test.mp4 -i test.mp3 -filter_complex "[0:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.9[a0]; [1:a]aformat=sample_fmts=fltp:sample_rates=44100:channel_layouts=stereo,volume=0.5[a1]; [a0][a1]amix=inputs=2:duration=first[aout]" -map "[aout]" -ac 2 -c:v copy -map 0:v:0 mix_amerge.mp4

未完待续....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 整体的目标 [ ] 完成将多张图片转换成视频。并添加背景音乐的任务。 [ ] 完成将音频混音到视频中的任务。 [ ...
    deep_sadness阅读 1,790评论 1 9
  • 躬身捧一掬清泉 映在水里浅笑的模样 半熟少女 素色的裙摆飘逸 闪亮 中考与高考依旧要开始了 倒计时吗 为了明天的微...
    夏虫的晚风疏阅读 273评论 13 19
  • 从去年开始我就注意到紫金港图书馆门前的柚子,大大的,那个时候就好想上去摘一个,不是为了吃而是为了一种乐趣。我斜着眼...
    天骄独霸阅读 429评论 12 9
  • 僕がずっと前から思ってる事を話そうか 友達に戻れたらこれ以上はもう望まないさ 君がそれでいいなら僕だってそれで構わ...
    泽木阅读 284评论 0 0
  • 第一部分—学习材料如何做资产配置 【学习目标】:学习材料,掌握资产配置的基础方法:50-50法,理解动态再平衡的概...
    朱进伟西农阅读 519评论 0 4