30. 视频源

以下是当前可用视频源的说明。

30.1 buffer

缓冲视频帧,并使其可用于过滤器链。

该源主要用于编程用途,特别是通过'libavfilter/vsrc_buffer.h'中定义的接口。

它接受以下参数:

video_size

指定缓冲视频帧的大小(宽度和高度)。有关此选项的语法,请参考(ffmpeg-utils)视频大小语法

width

输入视频宽度。

height

输入视频高度。

pix_fmt

表示缓冲视频帧的像素格式的字符串。它可以是对应于像素格式的数字或像素格式名称。

time_base

指定缓冲帧的时间戳假定的时基。

frame_rate

指定视频流的预期帧速率。

pixel_aspect,sar

输入视频的样本(像素)宽高比。

sws_param

指定用于缩放过滤器的可选参数,当在输入大小或格式中检测到输入更改时,该过滤器将自动插入。

hw_frames_ctx

使用硬件像素格式时,这应该是对描述输入帧的AVHWFramesContext的引用。

例如:

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

将指示源接受大小为320x240且格式为yuv410p的视频帧,假设时间戳为时基和方形像素(1:1样本宽高比)的1/24。由于名称为yuv410p的像素格式对应于数字6(检查'libavutil / pixfmt.h'中的枚举AVPixelFormat定义),此示例对应于:

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

或者,可以将选项指定为扁平字符串,但不推荐使用此语法:

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

学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

30.2 cellauto

创建由基本元胞自动机生成的模式。

元胞自动机的初始状态可以通过‘filename’‘pattern’选项来定义。如果未指定此类选项,则会随机创建初始状态。

在每个新帧中,视频中的新行用下一代元胞自动机的结果填充。填充整个帧时的行为由scroll选项定义。

此来源接受以下选项:

filename,f

从指定文件中读取初始元胞自动机状态,即起始行。在该文件中,每个非空白字符被视为活动单元格,换行符将终止该行,并且将忽略该文件中的其他字符。

pattern,p

从指定的字符串中读取初始元胞自动机状态,即起始行。

字符串中的每个非空白字符都被视为活动单元格,换行符将终止该行,并且字符串中的其他字符将被忽略。

rate,r

设置视频速率,即每秒生成的帧数。默认值为25

random_fill_ratio,ratio

设置初始元胞自动机行的随机填充率。它是浮点数值,范围从01,默认为1/PHI

指定文件或模式时,将忽略此选项。

random_seed,seed

设置种子以随机填充初始行,必须是0UINT32_MAX之间的整数。如果未指定,或者显式设置为-1,则过滤器将尝试在尽力而为的基础上使用良好的随机种子。

rule

设置元胞自动机规则,它是一个介于0255之间的数字。默认值为110

size,s

设置输出视频的大小。有关此选项的语法,请参考(ffmpeg-utils)视频大小语法

如果指定了'filename''pattern',则默认情况下将大小设置为指定初始状态行的宽度,并将高度设置为width*PHI

如果设置了'size',则它必须包含指定模式字符串的宽度,并且指定的模式将在较大的行中居中。

如果未指定文件名或模式字符串,则大小值默认为“320x518”(用于随机生成的初始状态)。

scroll

如果设置为1,则在输出中的所有行都已填充时向上滚动输出。如果设置为0,则在填充底行之后,新生成的行将写在顶行。默认为1

start_full,full

如果设置为1,则在输出第一帧之前完全用生成的行填充输出。这是默认行为,禁用时将值设置为0

stitch

如果设置为1,则将左右行边缘缝合在一起。这是默认行为,禁用时将值设置为0

30.2.1 示例

  • '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
    

30.3 coreimagesrc

OSX上使用AppleCoreImage APIGPU上生成的视频源。

此视频源是coreimage视频滤镜的专用版本。 在应用的过滤链的开头使用核心图像生成器来生成内容。

coreimagesrc视频源接受以下选项:

list_generators

列出所有可用的发电机及其各自的选项,以及可能的最小值和最大值以及默认值。

  list_generators=true

size, s

指定源视频的大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法。 默认值为320x240

rate, r

指定源视频的帧速率,作为每秒生成的帧数。 它必须是frame_rate_num/frame_rate_den格式的字符串,整数,浮点数或有效视频帧速率缩写。 默认值为25

sar

设置源视频的样本宽高比。

duration, d

设置源视频的持续时间。 请参阅(ffmpeg-utils)接受语法的持续时间语法

如果未指定,或者表达的持续时间为负,则视频应该永久生成。

此外,还接受coreimage视频过滤器的所有选项。 完整的过滤链可用于进一步处理生成的输入而无需CPU-HOST传输。 有关详细信息,请参阅coreimage文档和示例

30.3.1 示例

  • 使用CIQRCodeGeneratorFFmpeg主页创建QR代码,作为Apple标准bash shell的完整和转义命令行:

      ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.pn
    

此示例等同于coreimageQRCode示例,而不需要nullsrc视频源。

30.4 mandelbrot

生成Mandelbrot集分形,并逐渐缩放到start_xstart_y指定的点。

此来源接受以下选项:

end_pts

设置终端pts值。 默认值为400

end_scale

设置终端比例值。 必须是浮点值。 默认值为0.3

inner

设置内部着色模式,即用于绘制Mandelbrot分形内部区域的算法。

它应采用以下值之一:

解释
black 设置黑色模式
convergence 显示时间直到收敛
mincol 根据最接近迭代原点的点设置颜色
period 设置期间模式

默认值是:mincol

bailout

设置bailout价值。 默认值为10.0

maxiter

设置渲染算法执行的最大迭代次数。 默认值为7189

outer

设置外部着色模式。 它应采用以下值之一:

解释
iteration_count 设置迭代cound模式
normalized_iteration_count 设置规范化迭代计数模式

默认值是:normalized_iteration_count

rate,r

设置帧速率,表示为每秒帧数。 默认值为25

size,s

设置框架大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法。 默认值为640x480

start_scale

设置初始比例值。 默认值为3.0

start_x

设置初始x位置。 必须是介于-100100之间的浮点值。默认值为-0.743643887037158704752191506114774

start_y

设置初始y位置。 必须是介于-100100之间的浮点值。默认值为-0.131825904205311970493132056385139

30.5 mptestsrc

生成由MPlayer测试过滤器生成的各种测试模式。

生成的视频的大小是固定的,为256x256。 此源特别适用于测试编码功能。

此来源接受以下选项:

rate,r

指定源视频的帧速率,作为每秒生成的帧数。 它必须是frame_rate_num/frame_rate_den格式的字符串,整数,浮点数或有效视频帧速率缩写。 默认值为25

duration, d

设置源视频的持续时间。 请参阅(ffmpeg-utils)接受语法的持续时间语法

如果未指定,或者表达的持续时间为负,则视频应该永久生成。

test,t

设置要执行的测试的编号或名称。 支持的测试是:

dc_luma
dc_chroma
freq_luma
freq_chroma
amp_luma
amp_chroma
cbp
mv
ring1
ring2
all

默认值为all,它将循环显示所有测试的列表。

下面是一些例子:

mptestsrc=t=dc_luma

将生成dc_luma测试模式。

30.6 frei0r_src

提供frei0r源。

要启用此过滤器的编译,需要安装frei0r标头并使用--enable-frei0r配置FFmpeg

此源接受以下参数:

size

要生成的视频大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法

framerate

生成视频的帧率。 它可以是num/den形式的字符串或帧速率缩写。

filter_name

要加载的frei0r源的名称。 有关frei0r以及如何设置参数的更多信息,请阅读视频过滤器文档中的frei0r部分。

filter_params

传递给frei0r源的'|'分隔参数列表。

例如,要生成大小为200x200且帧速率为10frei0r partik0l源,它覆盖在覆盖滤波器主输入上:

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

30.7 life

生成life模式。

这个来源是基于John Conway生活游戏的概括。

源输入表示生命网格,每个像素表示可以处于两种可能状态之一(alivedead)的单元格。每个细胞与其八个邻居相互作用,这八个neighbours是水平,垂直或对角相邻的cells

在每次交互时,网格根据所采用的规则进化,该规则指定将使细胞保持活着或出生的相邻活细胞的数量。 'rule'选项允许指定要采用的规则。

此来源接受以下选项:

filename,f

设置从中读取初始网格状态的文件。在文件中,每个非空白字符都被视为活动单元格,而换行符用于分隔每行的结尾。

如果未指定此选项,则会随机生成初始网格。

rate,r

设置视频速率,即每秒生成的帧数。默认值为25

random_fill_ratio,ratio

设置初始随机网格的随机填充率。它是浮点数值,范围从01,默认为1/PHI。指定文件时会被忽略。

random_seed,seed

设置填充初始随机网格的种子,必须是0UINT32_MAX之间的整数。如果未指定,或者显式设置为-1,则过滤器将尝试在尽力而为的基础上使用良好的随机种子。

rule

设定life规则。

可以使用SNS/BNB类型的代码指定规则,其中NSNB0-8范围内的数字序列,NS指定使活细胞保持活动的活动相邻小区的数量,以及NB使死细胞变为活着(即"born")的活着的邻居细胞的数量。 sb可分别代替SB

或者,规则可以由18位整数指定。如果9个高阶位对于每个相邻的活细胞数是活着的,则使用9个高阶位来编码下一个细胞状态,低阶位指定用于“生成”新细胞的规则。高阶比特编码更多数量的相邻小区。例如,数字6153 =(12 << 9)+9指定保持活动规则12和出生规则9,其对应于S23/B03

默认值是S23/B3,这是Conway最初的生命游戏规则,如果它有2个或3个相邻的活细胞,它将保持细胞存活,并且如果死者周围有三个活细胞,它将生成一个新细胞细胞。

size,s

设置输出视频的大小。有关此选项的语法,请检查(ffmpeg-utils)视频大小语法

如果指定了'filename',则默认情况下将大小设置为与输入文件相同的大小。如果设置了size,则它必须包含输入文件中指定的大小,并且该文件中定义的初始网格将在较大的结果区域中居中。

如果未指定文件名,则大小值默认为320x240(用于随机生成的初始网格)。

stitch

如果设置为1,则将左右网格边缘缝合在一起,顶部和底部边缘也缝合在一起。默认为1

mold

设定细胞模具速度。如果设置,死细胞将从'death_color'变为'mold_color',步骤为'mold''mold'的值可以是0255

life_color

设置生命(或新生)细胞的颜色。

death_color

设置死细胞的颜色。如果设置了mold,这是用于表示死细胞的第一种颜色。

mold_color

设定模具颜色,确定deadmoldycells

有关这3种颜色选项的语法,请查阅(ffmpeg-utils)颜色语法

30.7.1 Examples

  • 'pattern'读取网格,并将其居中放在尺寸为300x300像素的网格上:

      life=f=pattern:s=300x300
    
  • 生成大小为200x200的随机网格,填充率为2/3

      life=ratio=2/3:s=200x200
    
  • 指定用于演变随机生成的网格的自定义规则:

      life=rule=S14/B34
    
  • 使用ffplay进行slow death效果(mold)的完整示例:

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

30.8 allrgb, allyuv, color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc

allrgb源返回所有rgb颜色大小为4096x4096的帧。

allyuv源返回所有yuv颜色的大小为4096x4096的帧。

颜色源提供均匀彩色的输入。

haldclutsrc源提供Hald CLUT标识。另见haldclut过滤器

nullsrc源返回未处理的视频帧。它主要用于分析/调试工具,或作为忽略输入数据的过滤器的源。

rgbtestsrc源生成一个RGB测试模式,可用于检测RGBBGR问题。应该从上到下看到红色,绿色和蓝色条纹。

smptebars源根据SMPTE工程指南EG 1-1990生成彩条图案。

smptehdbars源根据SMPTE RP 219-2002生成彩条模式。

testsrc源生成测试视频模式,显示颜色模式,滚动渐变和时间戳。这主要用于测试目的。

testsrc2源类似于testsrc,但支持更多像素格式而不仅仅是rgb24。这允许将其用作其他测试的输入,而无需格式转换。

yuvtestsrc源生成YUV测试模式。你应该从上到下看到ycbcr条纹。

来源接受以下参数:

level

指定Hald CLUT的级别,仅在haldclutsrc源中可用。 N级生成N*N*NN*N*N个像素的图像,以用作3D查找表的单位矩阵。每个分量以1/(N*N)标度编码。

color, c

指定源的颜色,仅在颜色源中可用。有关此选项的语法,请查阅(ffmpeg-utils)颜色语法

size,s

指定源视频的大小。有关此选项的语法,请检查(ffmpeg-utils)视频大小语法。默认值为320x240

allrgballyuvhaldclutsrc过滤器不提供此选项。

rate,r

指定源视频的帧速率,作为每秒生成的帧数。它必须是frame_rate_num/frame_rate_den格式的字符串,整数,浮点数或有效视频帧速率缩写。默认值为25

duration, d

设置源视频的持续时间。请参阅(ffmpeg-utils)接受语法的持续时间语法

如果未指定,或者表达的持续时间为负,则视频应该永久生成。

sar

设置源视频的样本宽高比。

alpha

指定背景的alpha(不透明度),仅在testsrc2源中可用。该值必须介于0(完全透明)和255(完全不透明,默认值)之间。

decimals, n

设置要在时间戳中显示的小数位数,仅在testsrc源中可用。

显示的时间戳值将对应于原始时间戳值乘以指定值的10的幂。默认值为0

30.8.1 示例

  • 生成持续时间为5.3秒的视频,大小为176x144,帧速率为每秒10帧:

      testsrc=duration=5.3:size=qcif:rate=10
    
  • 下面的图形描述将生成一个不透明度为0.2的红色光源,其大小为qcif,帧速率为每秒10帧:

      color=c=red@0.2:s=qcif:r=10
    
  • 如果要忽略输入内容,则可以使用nullsrc。 以下命令使用geq过滤器在亮度平面中生成噪声:

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

30.8.2 命令行

颜色源支持以下命令:

c, color

设置创建图像的颜色。 接受相应‘color’选项的相同语法。

30.9 openclsrc

使用OpenCL程序生成视频。

source

OpenCL程序源文件。

kernel

程序中的内核名称。

size,s

要生成的帧大小。 必须设置此项。

format

用于生成帧的像素格式。 必须设置此项。

rate,r

每秒生成的帧数。 默认值为25

有关程序加载的工作方式的详细信息,请参阅program_opencl过滤器。

示例程序:

  • 通过设置输出图像中像素位置的像素值来生成颜色渐变。 (请注意,这适用于所有像素格式,但生成的输出将不相同。)

      __kernel void ramp(__write_only image2d_t dst,unsigned int index){int2 loc = (int2)(get_global_id(0), get_global_id(1));float4 val;val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));write_imagef(dst, loc, val);}
    
  • 生成Sierpinski地毯图案,每帧平移一个像素。

      __kernel void sierpinski_carpet(__write_only image2d_t dst,unsigned int index){int2 loc = (int2)(get_global_id(0), get_global_id(1));float4 value = 0.0f;int x = loc.x + index;int y = loc.y + index;while (x > 0 || y > 0) {if (x % 3 == 1 && y % 3 == 1) {value = 1.0f;break;}x /= 3;y /= 3;}write_imagef(dst, loc, value);}
    

31.视频接收器

以下是当前可用视频接收器的说明。

31.1 buffersink

缓冲视频帧,并使其可用于过滤器图形的末尾。

此接收器主要用于程序化使用,特别是通过libavfilter/buffersink.h或选项系统中定义的接口。

它接受一个指向AVBufferSinkContext结构的指针,该结构定义传入缓冲区的格式,作为opaque参数传递给avfilter_init_filter进行初始化。

31.2 nullsink

空视频接收器:输入视频绝对不做任何事情。 它主要用作模板和用于分析/调试工具。

FFplay文档解读-46-视频源,视频接收器相关推荐

  1. FFplay文档解读-25-音频源,音频接收器

    27. 音频源 以下是当前可用音频源的说明. 27.1 abuffer 缓冲音频帧,并使其可用于过滤器链. 该源主要用于编程用途,特别是通过'libavfilter / asrc_abuffer.h' ...

  2. FFplay文档解读-13-设备选项,输入设备一

    17.设备选项 libavdevice库提供与libavformat相同的接口. 即,输入设备被视为分路器,输出设备如复用器,接口和通用设备选项与libavformat相同(参见ffmpeg-form ...

  3. FFplay文档解读-22-音频过滤器七

    26.60 loudnorm EBU R128响度归一化.包括动态和线性归一化模式.支持单通道(直播,文件)和双通(文件)模式.该算法可以针对IL,LRA和最大真实峰值.为了准确地检测真实峰值,音频流 ...

  4. FFplay文档解读-41-视频过滤器十六

    29.150 selectivecolor 将青色,品红色,黄色和黑色(CMYK)调整为特定颜色范围(例如"reds","yellows","gree ...

  5. FFplay文档解读-45-视频过滤器二十

    29.190 w3fdif 对输入视频进行去交错(w3fdif代表Weston 3 Field Deinterlacing Filter). 基于Martin Weston为BBC R&D描述 ...

  6. FFplay文档解读-2-语法详解

    1.语法 本节介绍FFmpeg库和工具使用的语法和格式. 1.1引用和转义 FFmpeg采用以下引用和转义机制,除非明确指定. 适用以下规则: '和\是特殊字符(分别用于引用和转义). 除了它们之外, ...

  7. FFplay文档解读-33-视频过滤器八

    29.70 gblur 应用高斯模糊滤镜. 过滤器接受以下选项: sigma 设置水平西格玛,高斯模糊的标准偏差. 默认值为0.5. steps 设置高斯近似的步数. 默认值是1. planes 设置 ...

  8. FFplay文档解读-28-视频过滤器三

    29.20 colormatrix 转换颜色矩阵 过滤器接受以下选项: src dst 指定源和目标颜色矩阵. 必须指定这两个值. 接受的值是: 值 解释 bt709 BT.709 fcc FCC b ...

  9. FFplay文档解读-6-解码器,视频解码器,音频解码器,字幕解码器

    7. 解码器 解码器是FFmpeg中配置的元素,允许解码多媒体流. 配置FFmpeg构建时,默认情况下会启用所有受支持的本机解码器. 必须通过相应的--enable-lib选项手动启用需要外部库的解码 ...

最新文章

  1. 埃森哲是如何系统化做好数据分析?
  2. Linux下无法进入windows的NTFS分区并挂载错误的问题的解决方法
  3. WinCE开发初探——开发环境
  4. 资源打包后项目中的文件
  5. mysql 不显示消息错误_如何编写不吸的错误消息
  6. build tut framework on ubuntu
  7. Pareto Optimality 帕累托最优 是什么
  8. Quartus II 13.1 安装步骤详解
  9. PCB绘图的基本要求和布线原则
  10. 在三角形中rt是什么意思_【rt三角形什么意思】作文写作问答 - 归教作文网
  11. 使用CSDN-markdown编辑器入门
  12. g++的英文版使用说明和选项
  13. Excel2016 自动换行
  14. 量化交易入门阶段——欧奈尔的CANSLIM模型(A 年度净利润同比增长率)
  15. OpenStack ironic裸金属部署(裸金属作为独立服务)
  16. Linux下的常用的打包和解压缩命令
  17. netsh interface portproxy本地ip与端口映射及本地虚拟ip(windows)
  18. python安装anacondapanda_关于pandas:Pyarrow不安装python 3.7(anaconda 5.3.0,windows x64版本)...
  19. MaterialSkin与系统Panel容器结合使用,实现自适应舒适布局
  20. 「Premiere教程」为视频添加文字字幕

热门文章

  1. 欧盟三大机构办公地点_欧盟增值税“供应地点”变更的可怕含义
  2. append追加标签方法
  3. refresh rates - 刷新率
  4. 关于dot1q封装的终结子接口不能ping通vlan内设备的问题
  5. 基于Python设计10以内乘法出题器
  6. 记录总结并分享下自己找工作的经历
  7. ADRV9009 与 zcu102搭建ADI的no os项目
  8. PTA 关于个人所得税(关于If else的运用)
  9. 使用cubemx快速建立一个串口通信程序
  10. 【转】华为任正非2010年新年致辞:没什么能阻挡前进