美文网首页
ffmpeg命令2

ffmpeg命令2

作者: kansnow | 来源:发表于2020-10-11 16:45 被阅读0次
    视频裁剪
    裁剪图(学习使用侵删)

    描述:将输入视频帧的宽度和高度从 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
    

    相关文章

      网友评论

          本文标题:ffmpeg命令2

          本文链接:https://www.haomeiwen.com/subject/namrpktx.html