38 视频源

下面是当前有效的视频源

buffer

缓冲视频帧,其可以作为滤镜链图的环节

它通常用于编程,特别是通过libavfilter/vsrc_buffer.h的接口。

接受如下参数:

  • video_size

    指定视频尺寸,(同时指定width 和 height)。语法同于ffmpeg-utils手册中的视频尺寸章节。

  • width

    输入视频宽

  • height

    输入视频高

  • pix_fmt

    像素格式描述,可以是一个表征像素格式的号码或者名称

  • time_base

    指定时间戳时基

  • frame_rate

    指定帧率 stream.

  • pixel_aspect, sar

    输入视频的像素长宽比。

  • sws_param

    指定一个可选参数用于在自动检测到输入视频大小或者格式变化时插入放缩滤镜。

例如:

  1. buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1

其指定源为320x240分辨率,采样yuv410p的像素格式,时基为1/24秒,采样1:1的像素比。因为yuv410p对应的像素格式序号为6libavutil/pixfmt.h中的AVPixelFormat枚举中定义),所以上面又等效于

  1. buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1

另外,选项可以字符串(以‘:’分隔)直接指定(没有选项名,按顺序给选项赋值(下面介绍选项的顺序)),但不建议使用这个语法:

  1. width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den[:sws_param]

cellauto

创建一个模式生成的细胞自动发生器(就是细胞变化样的图)

细胞自动发送器的初始状态可以通过filename选项和pattern选项的模式来定义,如果不知道则是随机初始状态。

每个新帧中的一个新行视频充满了下一代细胞自动发生器的结果。当scroll选项被指定时,整个帧会被滚动填充。

接受如下选项:

  • filename, f

    用于读取细胞自动发生器初始状态的文件。在文件中第一行从行首开始每个非空字符被认为是活的细胞直到换行,更多行则被忽略

  • pattern, p

    用于定义细胞自动发生器初始状态,从指定字符串开始作为起始行

    每个非空字符作为一个细胞直到换行(或者字符串结束),更多的行被忽略

  • rate, r

    设置视频帧率,默认25

  • random_fill_ratio, ratio

    设置初始随机填充率,是浮点数,范围0-1,默认1/PHI

    此选项在指定了初始文件或模式时被忽略

  • random_seed, seed

    设置随机填充初始种子,必须是整数,范围0-UINT32_MAX。不指定或显式指定为-1,将尝试使用一个更好的随机种子

  • rule

    设置细胞自动发生规则,是0-255间数,默认110

  • size, s

    设置输出视频尺寸,语法同于ffmpeg-utils手册中的视频尺寸章节。

    如果filename或者pattern指定了,则尺寸默认为初始化行的宽度width,高为width * PHI

    如果尺寸被设置,其宽必须匹配pattern字符串中最大行。

    如果filenamepattern都没有指定,则默认为320x518(用作随机生成初始化)

  • scroll

    如果为1,向上滚出已经填满的行。如果为0 ,到最后一行后,新行将覆盖第一行,默认为1

  • start_full, full

    如果设置为1,则需要完全填满后才输出第一帧,这时默认行为,设置为0则禁用

  • stitch

    如果设置为1,左和右连接在一起,这是默认行为,为0则禁用

cellauto例子

  • pattern读取初始化,输出为 200x400.

    cellauto=f=pattern:s=200x400

  • 随机化输出初始化,宽200个细胞,填充率为2/3:

    cellauto=ratio=2/3:s=200x200

  • 以规则18创建一个由单细胞开始,初始化宽度为100的源:

    cellauto=p=@:s=100x400:full=0:rule=18

  • 指定一个详细的初始模式:

    cellauto=p=’@@ @ @@’:s=100x400:full=0:rule=18

mandelbrot

生成一个曼德尔勃特(Mandelbrot)集合分形,它逐渐从点(start_x,start_y)放大

支持下列选项:

  • end_pts

    设置终端pts值,默认400.

  • end_scale

    设置终端缩放值,必须是浮点数,默认0.3.

  • inner

    设置内部着色模式,该算法用于绘制曼德布洛特分形内部区域.

    允许下面的值:

    black

    1. 设置black模式.

    convergence

    1. 设置时间收缩模式

    mincol

    1. 设置基于点的颜色最接近的起源迭代

    period

    1. 设置时间模式

    默认为mincol.

  • bailout

    设置bailout值,默认为10

  • maxiter

    设置最大迭代执行的渲染算法,默认7189.

  • outer

    设置外部着色模式,允许下面的值:

    iteration_count

    1. 设置为迭代计算模式

    normalized_iteration_count

    1. 设置为规范化的迭代计算模式

    默认为normalized_iteration_count.

  • rate, r

    设置帧率,可以是表达式和每秒帧数,默认为25

  • size, s

    设置帧尺寸,语法同于ffmpeg-utils手册中的视频尺寸章节. 默认”640x480”.

  • start_scale

    设置初始化放大值,默认为3.0.

  • start_x

    设置初始化点的x坐标,必须是-100 到100间的浮点数,默认为 -0.743643887037158704752191506114774.

  • start_y

    设置初始化点的y坐标,必须是-100 到100间的浮点数,默认为-0.131825904205311970493132056385139.

mptestsrc

生成各种测试模式,以作为MPlayer测试滤镜。

生成视频是固定的256x256分辨率。这个源用于在特定编码功能测试

支持下面选项:

  • rate, r

    指定帧率,是默认每秒帧数数字。也可以以frame_rate_num/frame_rate_den格式设定整数和浮点数以及帧频短语都是有效值,默认25

  • duration, d

    设置持续时间秒数,语法同于持续时间章节,

    如果不指定或者指定为负数,表示持续不断

  • test, t

    设置测试项的数字或者名称,允许下面的值:

    dc_luma
    dc_chroma
    freq_luma
    freq_chroma
    amp_luma
    amp_chroma
    cbp
    mv
    ring1
    ring2
    all

    默认为”all”,表示都要测试

例如:

  1. mptestsrc=t=dc_luma

将进行dc_luma测试

frei0r源

提供一个frei0r源

编译需要frei0r头以及配置项--enable-frei0r,接受如下参数:

  • size

    生成视频大小。语法同于ffmpeg-utils手册中的视频尺寸章节.

  • framerate

    设置帧率,值为数字字符串,或者num/den形式字符串或者帧率短语

  • filter_name

    这个名字frei0r源到负载。获得有关frei0r的更多信息以及如何设置参数,读取文档中的frei0r视频滤镜部分。

  • filter_params

    由’|’分隔的参数列表传递给frei0r

例如:要产生一个200x200分辨率,帧率为10,产生一个frei0r源用作partik0l

  1. frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay

life

产生life模式

这个源基于John Conway’s life游戏

源输入一个网格、每个像素(代表细胞)可以有2个状态,活或者死。每个细胞有8个邻国水平、垂直或对角相邻。

根据采用的规则发展网格,它指定邻居活细胞的数量会使细胞生存或出生,这里rule选项在下面介绍。

这个源支持下面的选项:

  • filename, f

    设置读取初始化网格的文件。在文件中每个非空字符代表存活的细胞,换行结束一行。

    如果没有指定则随机生成

  • rate, r

    设置视频帧率,默认25.

  • random_fill_ratio, ratio

    设置随机初始化随机网格填充率,值为0-1的浮点数,默认为1/PHI,在设置了filename时忽略

  • random_seed, seed

    设置随机种子,值为0 - UINT32_MAX如果设置为-1或者不设置,表示尽量用优化的种子

  • rule

    设置规则

    规则可以是指定代码的形式”SNS/BNB”,这里NSNB是0-8的数字序数,NS在一个存活细胞周围还存活的细胞数,NB指定周围要新生的细胞数,sb分别是SB的替代

    另外一个规则可以被描述为18位的整数。其中高段9位表示存活细胞周围存活细胞状态数,低段9位则为要新生的细胞状态数。例如数字6153=(12<<9)+9,表示细胞周围有12个存活细胞,新生为9的规则,其等效于”S23/B03”.

    默认为”S23/B3”,它是原始的Conway’s 游戏规则。如果它周围有2或者3个细胞将新生细胞,否则将死亡细胞

  • size, s

    设置输出视频分辨率,语法同于ffmpeg-utils手册中的视频尺寸章节

    filename被设定,则默认会采用输入文件的最大行宽。如果设置了这个值则需与输入文件相匹配。

    如果没有设置filename则默认为 “320x240” (用于随机初始化模式).

  • stitch

    如果设置为1,则左右网格边和上下网格边缝合在一起(连续面),默认为1

  • mold

    设置细胞分解速度。如果设置,则为死细胞将从 death_colormold步骤内转变为 mold_color 的速度。范围0-255。

  • life_color

    设置存活的细胞颜色 (或新生)

  • death_color

    设置死亡细胞颜色。如果mold被设置,则为死亡后第一个颜色

  • mold_color

    设置分解后颜色,作为绝对死亡或已被分解的细胞颜色

    前面3个颜色选项其语法可同于ffmpeg-utils手册中的视频尺寸章节

life源例子

  • 从模板读取一个网格,分辨率为300x300:

    life=f=pattern:s=300x300

  • 填充率2/3的随机初始化,尺寸200x200, :

    life=ratio=2/3:s=200x200

  • 指定一个规则的随机初始化和生成:

    life=rule=S14/B34

  • 前面所有例子,且还伴有mold(分解)效果,在ffplay中播放:

    ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16

color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc

  • color源提供一致的颜色输入
  • haldclutsrc源提供 哈尔德(Hald)CLUT输入,参考haldclut滤镜
  • nullsrc源返回未处理的视频帧,它主要用于分析/调试调试,或者作为滤镜中可以忽略的输入数据
  • rgbtestsrc源产生RGB测试模板,用于检测对比RGBBGR问题,应该可以看到一个红色、绿色和蓝色的从上到下条纹。
  • smptebars源产生颜色条模板,基于SMPTE Engineering Guideline EG 1-1990标准
  • smptehdbars源产生颜色条模板,基于SMPTE RP 219-2002标准
  • testsrc源产生测试视频模板,显示颜色模板和滚动的梯形以及时间戳。主要用于测试目的。

这些源支持下面一些参数:

  • color, c

    指定源颜色,仅作color源中有效,语法同于颜色

  • level

    指定Hald CLUT的层次。仅在haldclutsrc有效S。level中的N用于生成一个N*N*N像素为单位矩阵用于三维查找表。每个组件都是编码在1 /(N * N)范围内。

  • size, s

    指定源视频尺寸。语法同于ffmpeg-utils手册中的视频尺寸章节,默认值为320x240.

    这个选项在haldclutsrc中无效

  • rate, r

    设置帧率,语法同于ffmpeg-utils手册中的视频帧率章节,默认为25

  • sar

    设置样品长宽比(像素点长宽比)

  • duration, d

    设置源视频持续时间,语法同于持续时间章节.

    如果不设置或者设置为负数,表示持续存在。

  • decimals, n

    设置屏幕时间戳的小数数字显示,仅在testsrc源有效

    显示的时间戳值将对应于原来的时间戳值乘以10的X次方数的指定值。默认为0

例如:

  1. testsrc=duration=5.3:size=qcif:rate=10

产生5.3秒的视频,视频尺寸是176x144,帧率为10

下面则产生红色源,有0.2透明度,尺寸为qcif(176x144),帧率为10

  1. color=c=red@0.2:s=qcif:r=10

如果输入内容会被忽略,nullsrc可以被使用,下面的命令通过geq滤镜产生飞机飞过水稻的噪音

  1. nullsrc=s=256x256, geq=random(1)*255:128:128

额外命令

color源还支持下面的命令:

  • c, color

    设置颜色来创建一个图像。其支持的语法同于颜色中的介绍。