下面来熟悉一下常用的对视频操作的几个命令。这次需要完成的命令也包括在其中。 视频的画面大小的剪切(crop filter) 将输入的视频的帧,以左上角为坐标的原点,剪切成x,y坐标开始的指定大小。 语法:

# []包裹的选项是可选的
crop= ow[:oh[:x[:y[:keep_aspect]]]]
#example
ffmpeg -i input -vf crop=iw/3:ih:0:0 outputffmpeg -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

更常用的是将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

锐化

滤镜的名称竟然是 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

有部分降噪的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

作者:deep_sadness

★文末名片可以免费领取音视频开发学习资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

FFmpeg- 常用的滤镜命令相关推荐

  1. ffmpeg常用编解码命令

    ffmpeg常用编解码命令 1 ffplay.exe (1) 播放MP4文件,指定标题以及播放分辨率 ffplay.exe -window_title "视频监控" -x 720 ...

  2. FFMPEG常用的一些命令介绍:音频录制、视频录制

    1.视频和音频单独抓取 如果指定输入格式和设备,则ffmpeg可以直接捕获视频和音频. Linux下捕获摄像头的数据保存成视频文件: # ffmpeg -f video4linux2 -s 1280x ...

  3. ffmpeg中的滤镜命令

    原文链接 http://www.imooc.com/article/254520 滤镜 在编码之前,ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧. 几个链式过滤器形成一个 ...

  4. FFmpeg常用命令总结

    ffmpeg命令分为8大类 查询命令 ffmpeg -devices 查看当前电脑的录制设备架构 ffmpeg -f avfoundation -list_devices true -i " ...

  5. ffmpeg常用命令(windows)

    FFMPEG,windows相关命令 一款强大的音视频处理开源库. 相关概念 音/视频流 在音视频领域,一路音/视频成为一路流. 容器 一般把mp4.flv.mov等文件格式称之为容器.在这些常用格式 ...

  6. FFmpeg常用命令参数

    FFmpeg常用命令参数 陈拓 2021/08/31-2020/09/01 1. 视频文件转gif图像 命令格式: ffmpeg -ss 5 -t 10 -i input.mp4 -y -s 640x ...

  7. 《Android 音视频开发》笔记 - FFmpeg常用命令

    文章目录 FFmpeg简介 命令行工具概述 FFmpeg 处理音视频流程 FFmpeg常用命令 FFmpeg 基本信息查询 FFmpeg 录制 1) Windows上录制音频: 2) Mac 上录制音 ...

  8. ffmpeg 常用命令大全

    FFMPEG是特别强大的专门用于处理音视频的开源库.你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件. 本文将简 ...

  9. ffmpeg 常用基本命令和ffmpeg处理RTMP流媒体的常用命令

    ffmpeg 常用基本命令 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i in ...

  10. FFmpeg 常用命令汇总

    https://www.yuv420.com/2019/12/23/ffmpeg-chang-yong-ming-ling-hui-zong/ 引言 开源音视频处理工具FFMPEG以其强大的功能而在音 ...

最新文章

  1. Android 自定义View之3D骰子旋转
  2. 使用Sublime Text 3作为Python编辑器有关中文问题
  3. python中文软件-Python编程软件下载
  4. Java编程思想 第十三章:字符串
  5. TensorFlow学习笔记(二十六)CNN的9大模型之LeNet5的原理讲解
  6. SAP Spartacus ConfigurationService
  7. redis 了 什么地方用到_细节拉满!美团首推“百万级”Redis进阶笔记究竟有什么魅力...
  8. js 父子标签同时设置onclick,字标签触发父标签onclick解决办法
  9. jquery的ajax查询数据库,jquery中使用ajax获取远程页面信息
  10. ie的window.open 未指明的错误_火灾无情预防先行 错误操作致火灾加重
  11. SQL语言入门(一)
  12. matlab 图例自定义,matlab中如何自定义图例_常见问题解析
  13. adb冲突 傲软_手机投屏到电脑软件
  14. 中国居民人均财富36.6万元,你达标了吗?
  15. 谈谈我们为什么要前后端分离
  16. 怎么一台手机多人签到_人脸识别来啦!志愿汇APP最新改版!支持一个手机多个账号同时签到签退!...
  17. mysql有订单表orders_mysql练习作业题
  18. Could not get a resource since the pool is exhausted
  19. 一个php+ajax的在线匿名聊天室,PHP任意环境都可用,无需复杂配置,移动端电脑端互通流畅,随时随地聊个痛快~
  20. POI事件模式读取Excel 2003文件

热门文章

  1. 巅峰极客pwn wp
  2. 微信小程序简单实现类似饿了么,美团文字公告告示垂直循环滚动效果
  3. 51、PIC、AVR、16、32-BIT系列单片机区别与特点
  4. Python:实现测试信用卡号码有效性credit card validator的算法(附完整源码)
  5. FPGA_demo2:按键测试
  6. c语言数组顺时针转90°
  7. 2017 7 12 测试
  8. 雷军:小米如何成功逆转
  9. AD域批量的导入账号
  10. 2018谷歌开发者节深圳站,Testin云测的AI应用案例获广泛关注