ffmpeg命令2

2020-10-11  本文已影响0人  kansnow
视频裁剪
裁剪图(学习使用侵删)

描述:将输入视频帧的宽度和高度从 x 和 y 值表示的位置裁剪到指定的宽度和高度;x 和 y 是输出的左上角坐标,协调系统的中心是输入视频帧的左上角。如果使用了可选的 keep_aspect 参数,将会改变输出 SAR(样本宽比)以补偿新的DAR(显示长宽比)
语法:crop=ow[:oh[:x[:y[:keep_aspect]]]]

变量 用于 ow 和 oh 参数的表达式中的可用变量
x,y 对 x 的计算值(从左上角水平方向的像素个数)和 y(垂直像素的数量),对每个帧进行评估,x的默认值为(iw - ow)/2, y 的默认值为(ih - oh)/2
in_w,iw 输入的宽度
in_h,ih 输入的高度
out_w,ow 输出(裁剪)宽度,默认值= iw
out_h,oh 输出(裁剪)高度,默认值= ih
a 纵横比,与 iw/ih 相同
sar 输入样本比例
dar 输入显示宽比,等于表达式 a*sar
hsub,vsub 水平和垂直的色度子样本值,对于像素格式 yuv422p, hsub 的值为 2,vsub 为 1
n 输入帧的数目,从 0 开始
pos 位置在输入框的文件中,如果不知道则为NAN
t 时间戳以秒表示,如果输入时间戳未知

例如:ffplay -i input.jpg -vf crop=2/3in_w:2/3in_h

添加水印

文字水印

在视频中增加文字水印需要准备的条件比较多,需要有文字字库处理的相关文件,在编译 FFmpeg 时需要支持 FreeType、FontConfig、iconv,系统中需要有相关的字库,在 FFmpeg 中增加纯字母水印可以使用 drawtext滤镜进行支持

FFmpeg drawtext滤镜参数:

参数 类型 说明
text 字符串 文字
textfile 字符串 文字文件
box 布尔 文字区域背景框(缺省 false)
boxcolor 色彩 展示字体区域块的颜色
font 字符串 字体名称(默认为 Sans 字体)
fontsize 整数 显示字体的大小
x 字符串 调整水印从左往右的像素位置,缺省为 0
y 字符串 调整水印从上往下的像素位置,缺省为0
alpha 浮点数 透明度(默认为 1),值从 0~1

例1:ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green:x=400:y=200:alpha=0.5"
例2:ffplay -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='%{localtime:%Y-%m-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow"

图片水印

为视频添加图片水印可以使用 movie 滤镜
FFmpeg movie 滤镜的参数

参数 类型 说明
filename 字符串 输入的文件名,可以是文件,协议,设备
format_name, f 字符串 输入的封装格式
stream_index, si 整数 输入的流索引编号
seek_point, sp 浮点数 Seek 输入流的时间位置
streams, s 字符串 输入的多个流的流信息
loop 整数 循环次数
discontinuity 时间差值 支持跳动的时间戳差值

例1:ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=10:y=10[out]"

生成画中画

在 FFmpeg 中,可以通过 overlay 将多个视频流、多个多媒体采集设备、多个视频文件合并到一个界面中,生成画中画的效果

FFmpeg 滤镜 overlay 基本参数:

参数 类型 说明
x 字符串 X像素坐标
y 字符串 Y像素坐标
eof_action 整数 遇到 eof 表示时的处理方式,默认为重复,repeat(值为 0):重复前一帧,endcall(值为 1):停止所有的流,pass(值为 2):保留主图层
shortest 布尔 终止最短的视频时全部终止(默认 false)
format 整数 设置 output 的像素格式,默认为 yuv420,yuv420 (值为 0),yuv422 (值为 1),yuv444 (值为 2),rgb (值为 3)

例1:ffplay -i input.mp4 -vf "movie=sub_320x240.mp4[sub];[in][sub]overlay=x=20:y=20:eof_action=1[out]"

例2:生成4宫格视频:

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex "nullsrc=size=640x480[base];[0:v] setpts=PTS-STARTPTS,scale=320x240[upperleft];[1:v]setpts=PTS-STARTPTS,scale=320x240[upperright];[2:v]setpts=PTS-STARTPTS,scale=320x240[lowerleft];[3:v]setpts=PTS-STARTPTS,scale=320x240[lowerright];[base][upperleft]overlay=shortest=1[tmp1];[tmp1][upperright]overlay=shortest=1:x=320[tmp2];[tmp2][lowerleft]overlay=shortest=1:y=240[tmp3];[tmp3][lowerright]overlay=shortest=1:x=320:y=240" out.mp4
上一篇下一篇

猜你喜欢

热点阅读