ffmepg滤镜

视频按顺时针方向旋转90度

ffplay -vf transpose=1 -i juren-30s.mp4

ffplay -f lavfi -i testsrc -vf transpose=1

-f lavfi -i testsrc这个滤镜是ffmpeg给用户的一个测试使用的视频

视频水平翻转(左右翻转)

-vf hflip

实现慢速播放,声音速度是原始速度的50%

ffplay p629100.mp3 -af atempo=0.5

视频水印

1、右下角

ffmpeg -i in.mp4 -i logo.jpg -filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' out.mp4

1、 左下角

ffmpeg -i in.mp4 -i logo.jpg -filter_complex 'overlay=x=10:y=main_h-overlay_h-10' out.mp4

overlay=x=10:y=10 左上

overlay=x=main_w-overlay_w-10:y=10 右上

-filter_complex: 相比-vf, filter_complex适合开发复杂的滤镜功能,如同时对视频进行裁剪并旋转。参数之间使用逗号(,)隔开即可

main_w:视频宽度

overlay_w: 要添加的图片水印宽度

main_h : 视频高度

overlay_h:要添加的图片水印宽度

ffmpeg -i in.mp4 -vf "movie=logo.jpg[watermark];[in][watermark]

overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4

logo.jpg: 要添加的水印图片地址

overlay:水印参数

main_w-overlay_w-10 : 水印在x轴的位置,也可以写成x=main_w-overlay_w-10

main_h-overlay_h-10:水印在y轴的位置

滤镜的语法:

三个单元,滤镜filter,滤镜链filterchain,滤镜图;-vf -af后可以接滤镜图,-filter_complex后也可以

滤镜之间用","隔开,构成滤镜链,滤镜链条之间用";"隔开,如果有隔开符号则滤镜图应该用""引起来符合linux终端规范,构成路径图

一个滤镜如下:

input_link_lable1\]\[input_link_lable2\]... filter_name=parameters \[output_link_lable1\]\[output_link_lable12\]... 滤镜名前和参数后是链接标签列表,一个标签是一个输入或输出端口。标签是可选的,不填就是默认值。如果一个滤镜没有输出端,那么它默认连接到此滤镜链中,后面的第一个没有输入端的滤镜。 在一个滤镜中,":"用于分割key=vlue对,比如: :"分隔的key=value列表 ffplay -i good.mp4 -vf scale=iw/2:ih/2 在一个key=vlue对中,":"用于分割vule值,比如: ffplay -i good_scale.mp4 -vf fade=in:0:30 淡入视频的前30帧,这个滤镜有三个参数,他们之间用":"隔开 //默认log在视频的左上角,在(0,0)位置 ffmpeg -i good_scale.mp4 -i mark.png -filter_complex overlay good_mark.mp4 //在右下角,以右下角为(0,0),log在(-50,10)位置 ![在这里插入图片描述](https://file.jishuzhan.net/article/1690281043908628482/9ce5304dc7654edd98f6d65d1a5bd299.png) ffmpeg -i good_scale.mp4 -i mark.png -filter_complex overlay=main_w-overlay_w-50:main_h-overlay_h-10 good_mark.mp4 其中main_w为视频的宽,overlay_w为log的宽 ![在这里插入图片描述](https://file.jishuzhan.net/article/1690281043908628482/16c143cc094e4cc786f2051e59e7e375.png) 滤镜输入输出默认的方式:【[引用文章](https://www.cnblogs.com/leisure_chn/p/10297002.html)】 ```cpp ffmpeg -i A.avi -i C.mkv -i B.mp4 -filter_complex "overlay" out1.mp4 out2.srt ``` "-filter_complex" 选项指定了一个复杂 filtergraph,此 filtergraph 由单个视频滤镜 overlay 构成。overlay 滤镜需要两个视频输入,但此处并未为 overlay 滤镜指定输入,因此输入中的头两个有效视频流(A.avi 中的 stream 0 和 C.mkv 中的 stream0)会被作为 overlay 滤镜的输入。overlay 滤镜输出无标号,因此 overlay 滤镜的输出会被写入第一个输出文件 out1.mp4 中。输出时也可以用map指定,但注意一个流只能被指定到一个输出,不然出错,则命令不会输出任何文件。 如: ```cpp ffmpeg -i A.avi -i B.mp4 -i C.mkv -filter_complex "[1:v]hue=s=0,split=2[outv1][outv2];overlay;aresample" \ -map '[outv1]' -an out1.mp4 \ out2.mkv \ -map '[outv2]' -map 1:a:0 out3.mkv ``` hue滤镜用于调整视频的色调(hue) ffplay -i good.mp4 -vf scale=640:360 ffplay -i good.mp4 -vf scale=iw/2:ih/2 一个滤镜图也可以只有一个滤镜链,一个滤镜链可以只包含一个滤镜,这种特例情况下,一个滤镜图只包含一个滤镜。 因此ffmpeg命令对滤镜的讨论为了方便不区分滤镜,滤镜链,滤镜图,而是只针对滤镜图(filtergraph)进行讨论。 针对简单的,也就是只有一个输入和输出的滤镜图,用-vf -af,官网如图,它的处理过程是线性的,执行完一个滤镜,再执行下一个滤镜。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1690281043908628482/6040c10a26b441fd8ad5cbfc1c90941b.png)针对复杂的,多个输入和输出滤镜图,用-filter_complex等价于lavfi,不同的滤镜图之间是可以同时进行的。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1690281043908628482/dc3b681ea80b4d5281f1350fa91fcc8b.png)

相关推荐
luoqice1 天前
RTMP视频流的帧格式分析
网络·ffmpeg
老姚---老姚2 天前
编译支持HEVC/H.265 over RTMP / Enhanced RTMP 的 ffmpeg
ffmpeg·h.265·hevc·rtmp·enhanced
码流怪侠3 天前
FFmpeg 开发实战全解析:从入门到精通(附完整代码示例)
ffmpeg·音视频开发·视频编码
圆弧YH3 天前
FFmpeg
ffmpeg
luoqice3 天前
FLV文件格式详解
ffmpeg
happybasic4 天前
在CMD下使用FFmpeg将.wav文件转换成指定的格式~
ffmpeg
shao9185164 天前
第10章 Streaming(上):初级音频应用(1)——项目三:自建服务器的Mini-Omni实时语音聊天机器人
ffmpeg·whisper·asr·mini-omni·自建语音服务器
Leon_Chenl5 天前
【已开源】【嵌入式 Linux 音视频+ AI 实战项目】瑞芯微 Rockchip 系列 RK3588-基于深度学习的人脸门禁+ IPC 智能安防监控系统
深度学习·opencv·yolo·ffmpeg·音视频·边缘计算·人脸识别+检测
antzou5 天前
视频图片/文字水印
ffmpeg·视频水印·批量水印
AC赳赳老秦6 天前
DBA 专属方案:用 OpenClaw 实现 SQL 语句优化、慢查询分析、数据库备份巡检全自动化
服务器·前端·数据库·ffmpeg·自动化·deepseek·openclaw